newLeader.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName()); newLeader.setSessionId(manager.getSessionId()); newLeader.setHelixVersion(manager.getVersion()); try { boolean success = accessor.createControllerLeader(newLeader);
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 liveInstance = new LiveInstance(_instanceName); liveInstance.setSessionId(_sessionId); liveInstance.setHelixVersion(_manager.getVersion()); liveInstance.setLiveInstance(ManagementFactory.getRuntimeMXBean().getName());
LiveInstance liveInstance = new LiveInstance(_instanceName); 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); } }
newLiveIns.setHelixVersion("0.6.0"); newLiveIns.setSessionId("randomSessionId"); accessor.setProperty(keyBuilder.liveInstance("newLiveInstance"), newLiveIns);
fakeInstance.setHelixVersion("0.6"); accessor.setProperty(keyBuilder.liveInstance("fakeInstance"), fakeInstance); Thread.sleep(1000);
protected void setupLiveInstances(String clusterName, int[] liveInstances) { ZKHelixDataAccessor accessor = new ZKHelixDataAccessor(clusterName, new ZkBaseDataAccessor<ZNRecord>(_gZkClient)); Builder keyBuilder = accessor.keyBuilder(); for (int i = 0; i < liveInstances.length; i++) { String instance = "localhost_" + liveInstances[i]; LiveInstance liveInstance = new LiveInstance(instance); liveInstance.setSessionId("session_" + liveInstances[i]); liveInstance.setHelixVersion("0.0.0"); accessor.setProperty(keyBuilder.liveInstance(instance), liveInstance); } }
LiveInstance liveInstance = new LiveInstance("localhost_12918"); liveInstance.setSessionId("session_0"); liveInstance.setHelixVersion("version_0"); accessor.setProperty(keyBuilder.liveInstance("localhost_12918"), liveInstance);
liveInstance.setHelixVersion("0.5"); accessor.setProperty(keyBuilder.liveInstance("localhost_12918"), liveInstance);
liveInstance.setHelixVersion(UUID.randomUUID().toString()); accessor.setProperty(keyBuilder.liveInstance("localhost_9801"), liveInstance); Thread.sleep(500);