private HS2ActivePassiveHARegistry(final String instanceName, final String zkNamespacePrefix, final String leaderLatchPath, final String krbPrincipal, final String krbKeytab, final String saslContextName, final Configuration conf, final boolean isClient) { super(instanceName, conf, null, zkNamespacePrefix, null, INSTANCE_PREFIX, INSTANCE_GROUP, saslContextName, krbPrincipal, krbKeytab, null); this.isClient = isClient; if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_IN_TEST) && conf.get(ZkRegistryBase.UNIQUE_IDENTIFIER) != null) { this.uniqueId = conf.get(ZkRegistryBase.UNIQUE_IDENTIFIER); } else { this.uniqueId = UNIQUE_ID.toString(); } this.latchPath = leaderLatchPath; this.leaderLatch = getNewLeaderLatchPath(); }
@Override public void failover() throws Exception { if (hasLeadership()) { LOG.info("Failover request received for HS2 instance: {}. Restarting leader latch..", uniqueId); leaderLatch.close(LeaderLatch.CloseMode.NOTIFY_LEADER); leaderLatch = getNewLeaderLatchPath(); // re-attach all registered listeners for (Map.Entry<LeaderLatchListener, ExecutorService> registeredListener : registeredListeners.entrySet()) { if (registeredListener.getValue() == null) { leaderLatch.addListener(registeredListener.getKey()); } else { leaderLatch.addListener(registeredListener.getKey(), registeredListener.getValue()); } } leaderLatch.start(); LOG.info("Failover complete. Leader latch restarted successfully. New leader: {}", leaderLatch.getLeader().getId()); } else { LOG.warn("Failover request received for HS2 instance: {} that is not leader. Skipping..", uniqueId); } }
private HS2ActivePassiveHARegistry(final String instanceName, final String zkNamespacePrefix, final String leaderLatchPath, final String krbPrincipal, final String krbKeytab, final String saslContextName, final Configuration conf, final boolean isClient) { super(instanceName, conf, null, zkNamespacePrefix, null, INSTANCE_PREFIX, INSTANCE_GROUP, saslContextName, krbPrincipal, krbKeytab, null); this.isClient = isClient; if (HiveConf.getBoolVar(conf, HiveConf.ConfVars.HIVE_IN_TEST) && conf.get(ZkRegistryBase.UNIQUE_IDENTIFIER) != null) { this.uniqueId = conf.get(ZkRegistryBase.UNIQUE_IDENTIFIER); } else { this.uniqueId = UNIQUE_ID.toString(); } this.latchPath = leaderLatchPath; this.leaderLatch = getNewLeaderLatchPath(); }
@Override public void failover() throws Exception { if (hasLeadership()) { LOG.info("Failover request received for HS2 instance: {}. Restarting leader latch..", uniqueId); leaderLatch.close(LeaderLatch.CloseMode.NOTIFY_LEADER); leaderLatch = getNewLeaderLatchPath(); // re-attach all registered listeners for (Map.Entry<LeaderLatchListener, ExecutorService> registeredListener : registeredListeners.entrySet()) { if (registeredListener.getValue() == null) { leaderLatch.addListener(registeredListener.getKey()); } else { leaderLatch.addListener(registeredListener.getKey(), registeredListener.getValue()); } } leaderLatch.start(); LOG.info("Failover complete. Leader latch restarted successfully. New leader: {}", leaderLatch.getLeader().getId()); } else { LOG.warn("Failover request received for HS2 instance: {} that is not leader. Skipping..", uniqueId); } }