use of org.apache.atlas.listener.ActiveStateChangeHandler in project incubator-atlas by apache.
the class ActiveInstanceElectorServiceTest method testLeaderElectionIsJoinedOnStart.
@Test
public void testLeaderElectionIsJoinedOnStart() throws Exception {
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
when(configuration.getStringArray(HAConfiguration.ATLAS_SERVER_IDS)).thenReturn(new String[] { "id1" });
when(configuration.getString(HAConfiguration.ATLAS_SERVER_ADDRESS_PREFIX + "id1")).thenReturn("127.0.0.1:21000");
when(configuration.getString(HAConfiguration.ATLAS_SERVER_HA_ZK_ROOT_KEY, HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT)).thenReturn(HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT);
LeaderLatch leaderLatch = mock(LeaderLatch.class);
when(curatorFactory.leaderLatchInstance("id1", HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT)).thenReturn(leaderLatch);
ActiveInstanceElectorService activeInstanceElectorService = new ActiveInstanceElectorService(configuration, new HashSet<ActiveStateChangeHandler>(), curatorFactory, activeInstanceState, serviceState);
activeInstanceElectorService.start();
verify(leaderLatch).start();
}
use of org.apache.atlas.listener.ActiveStateChangeHandler in project incubator-atlas by apache.
the class ActiveInstanceElectorServiceTest method testElectionIsRejoinedWhenStateUpdateFails.
@Test
public void testElectionIsRejoinedWhenStateUpdateFails() throws Exception {
when(configuration.containsKey(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
when(configuration.getBoolean(HAConfiguration.ATLAS_SERVER_HA_ENABLED_KEY)).thenReturn(true);
when(configuration.getStringArray(HAConfiguration.ATLAS_SERVER_IDS)).thenReturn(new String[] { "id1" });
when(configuration.getString(HAConfiguration.ATLAS_SERVER_ADDRESS_PREFIX + "id1")).thenReturn("127.0.0.1:21000");
when(configuration.getString(HAConfiguration.ATLAS_SERVER_HA_ZK_ROOT_KEY, HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT)).thenReturn(HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT);
LeaderLatch leaderLatch = mock(LeaderLatch.class);
when(curatorFactory.leaderLatchInstance("id1", HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT)).thenReturn(leaderLatch);
doThrow(new AtlasBaseException()).when(activeInstanceState).update("id1");
ActiveInstanceElectorService activeInstanceElectorService = new ActiveInstanceElectorService(configuration, new HashSet<ActiveStateChangeHandler>(), curatorFactory, activeInstanceState, serviceState);
activeInstanceElectorService.start();
activeInstanceElectorService.isLeader();
InOrder inOrder = inOrder(leaderLatch, curatorFactory);
inOrder.verify(leaderLatch).close();
inOrder.verify(curatorFactory).leaderLatchInstance("id1", HAConfiguration.ATLAS_SERVER_ZK_ROOT_DEFAULT);
inOrder.verify(leaderLatch).addListener(activeInstanceElectorService);
inOrder.verify(leaderLatch).start();
}
use of org.apache.atlas.listener.ActiveStateChangeHandler in project incubator-atlas by apache.
the class ActiveInstanceElectorService method isLeader.
/**
* Call all registered {@link ActiveStateChangeHandler}s on being elected active.
*
* In addition, shared state information about this instance becoming active is updated
* using {@link ActiveInstanceState}.
*/
@Override
public void isLeader() {
LOG.warn("Server instance with server id {} is elected as leader", serverId);
serviceState.becomingActive();
try {
for (ActiveStateChangeHandler handler : activeStateChangeHandlers) {
handler.instanceIsActive();
}
activeInstanceState.update(serverId);
serviceState.setActive();
} catch (Exception e) {
LOG.error("Got exception while activating", e);
notLeader();
rejoinElection();
}
}
use of org.apache.atlas.listener.ActiveStateChangeHandler in project incubator-atlas by apache.
the class ActiveInstanceElectorService method notLeader.
/**
* Call all registered {@link ActiveStateChangeHandler}s on becoming passive instance.
*/
@Override
public void notLeader() {
LOG.warn("Server instance with server id {} is removed as leader", serverId);
serviceState.becomingPassive();
for (ActiveStateChangeHandler handler : activeStateChangeHandlers) {
try {
handler.instanceIsPassive();
} catch (AtlasException e) {
LOG.error("Error while reacting to passive state.", e);
}
}
serviceState.setPassive();
}
Aggregations