public String proc(HBResult result, boolean putOpinion) throws NodeExistsException, MgmtZooKeeperException { HeartbeatTarget target = result.getTarget(); HBRefData data = target.getRefData(); if (target.getHB().equals(Constant.HB_MONITOR_NO)) { Logger.debug( "{} is not a target of heartbeat. {}", target.getNodeType().toString() + target.getName(), result); return null; } switch (target.getNodeType()) { case PGS: pgs(data, result, putOpinion); break; case RS: case GW: common(data, result, putOpinion); break; default: Logger.warn("An unkown type of a heartbeat target. type: {}", target.getNodeType()); break; } return null; }
private void putMyOpinion( long stateTimestamp, HBRefData refData, HBResult result, String newState) throws MgmtZooKeeperException, NodeExistsException { String path = makePathOfMyOpinion(result.getTarget().getTargetOfHeartbeatPath()); byte[] data; data = makeDataOfMyOpinion(refData, stateTimestamp, result, newState); try { zookeeper.createEphemeralZNode(path, data); } catch (NodeExistsException e) { Logger.error( "Put my opinion fail. path: {}, opinion: {}", path, makeStringOfMyOpinion(refData, stateTimestamp, newState), e); throw e; } catch (MgmtZooKeeperException e) { Logger.error( "Put my opinion fail. path: {}, opinion: {}", path, makeStringOfMyOpinion(refData, stateTimestamp, newState), e); throw e; } Logger.info(result.toString()); refData.setLastState(newState); refData.setLastStateTimestamp(stateTimestamp); refData.setSubmitMyOpinion(true); }
private void removeMyOpinion(HBRefData refData, HBResult result, String newState) throws MgmtZooKeeperException { String path = makePathOfMyOpinion(result.getTarget().getTargetOfHeartbeatPath()); zookeeper.deleteZNode(path, -1); Logger.info(result.toString()); refData.setLastState(Constant.SERVER_STATE_UNKNOWN); refData.setLastStateTimestamp(0L); refData.setSubmitMyOpinion(false); }