newLeader.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName()); newLeader.setSessionId(manager.getSessionId()); newLeader.setHelixVersion(manager.getVersion());
private boolean tryUpdateController(HelixManager manager) { HelixDataAccessor accessor = manager.getHelixDataAccessor(); Builder keyBuilder = accessor.keyBuilder(); LiveInstance leader = new LiveInstance(manager.getInstanceName()); try { leader.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName()); leader.setSessionId(manager.getSessionId()); leader.setHelixVersion(manager.getVersion()); boolean success = accessor.createControllerLeader(leader); if (success) { return true; } else { LOG.info("Unable to become leader probably because some other controller becames the leader"); } } catch (Exception e) { LOG.error( "Exception when trying to updating leader record in cluster:" + manager.getClusterName() + ". Need to check again whether leader node has been created or not", e); } leader = accessor.getProperty(keyBuilder.controllerLeader()); if (leader != null) { String leaderSessionId = leader.getSessionId(); LOG.info("Leader exists for cluster: " + manager.getClusterName() + ", currentLeader: " + leader.getInstanceName() + ", leaderSessionId: " + leaderSessionId); if (leaderSessionId != null && leaderSessionId.equals(manager.getSessionId())) { return true; } } return false; }
liveInstance.setSessionId(_sessionId); liveInstance.setHelixVersion(_manager.getVersion()); liveInstance.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName());
liveInstance.setSessionId(_sessionId); liveInstance.setHelixVersion(_manager.getVersion()); liveInstance.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName());
private void setLeader(HelixManager manager) throws Exception { System.out.println("Setting controller " + manager.getInstanceName() + " as leader"); HelixDataAccessor accessor = manager.getHelixDataAccessor(); final LiveInstance leader = new LiveInstance(manager.getInstanceName()); leader.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName()); leader.setSessionId(manager.getSessionId()); leader.setHelixVersion(manager.getVersion()); // Delete the current controller leader node so it will trigger leader election while (!manager.isLeader()) { accessor.getBaseDataAccessor() .remove(PropertyPathBuilder.controllerLeader(manager.getClusterName()), AccessOption.EPHEMERAL); Thread.sleep(50); } }