@Override public boolean isFailoverOnServerShutdown() { checkStarted(); clearIO(); try { HAPolicy haPolicy = server.getHAPolicy(); if (haPolicy instanceof SharedStoreSlavePolicy) { return ((SharedStoreSlavePolicy) haPolicy).isFailoverOnServerShutdown(); } else { return false; } } finally { blockOnIO(); } }
@Override public void close(boolean permanently, boolean restarting) throws Exception { if (!restarting) { synchronized (failbackCheckerGuard) { cancelFailBackChecker = true; } } // To avoid a NPE cause by the stop NodeManager nodeManagerInUse = activeMQServer.getNodeManager(); //we need to check as the servers policy may have changed if (activeMQServer.getHAPolicy().isBackup()) { activeMQServer.interruptActivationThread(nodeManagerInUse); if (nodeManagerInUse != null) { nodeManagerInUse.stopBackup(); } } else { if (nodeManagerInUse != null) { // if we are now live, behave as live // We need to delete the file too, otherwise the backup will failover when we shutdown or if the backup is // started before the live if (sharedStoreSlavePolicy.isFailoverOnServerShutdown() || permanently) { nodeManagerInUse.crashLiveServer(); } else { nodeManagerInUse.pauseLiveServer(); } } } }
@Test public void SharedStoreSlaveTest2() throws Exception { Configuration configuration = createConfiguration("shared-store-slave-hapolicy-config2.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedStoreBackupActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof SharedStoreSlavePolicy); SharedStoreSlavePolicy sharedStoreSlavePolicy = (SharedStoreSlavePolicy) haPolicy; assertTrue(sharedStoreSlavePolicy.isFailoverOnServerShutdown()); assertTrue(sharedStoreSlavePolicy.isRestartBackup()); ScaleDownPolicy scaleDownPolicy = sharedStoreSlavePolicy.getScaleDownPolicy(); assertNotNull(scaleDownPolicy); assertEquals(scaleDownPolicy.getGroupName(), "boo!"); assertEquals(scaleDownPolicy.getDiscoveryGroup(), null); List<String> connectors = scaleDownPolicy.getConnectors(); assertNotNull(connectors); assertEquals(connectors.size(), 2); assertTrue(connectors.contains("sd-connector1")); assertTrue(connectors.contains("sd-connector2")); } finally { server.stop(); } }
@Test public void SharedStoreSlaveTest3() throws Exception { Configuration configuration = createConfiguration("shared-store-slave-hapolicy-config3.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedStoreBackupActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof SharedStoreSlavePolicy); SharedStoreSlavePolicy sharedStoreSlavePolicy = (SharedStoreSlavePolicy) haPolicy; assertTrue(sharedStoreSlavePolicy.isFailoverOnServerShutdown()); assertTrue(sharedStoreSlavePolicy.isRestartBackup()); ScaleDownPolicy scaleDownPolicy = sharedStoreSlavePolicy.getScaleDownPolicy(); assertNull(scaleDownPolicy); } finally { server.stop(); } }
@Test public void SharedStoreSlaveTest() throws Exception { Configuration configuration = createConfiguration("shared-store-slave-hapolicy-config.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedStoreBackupActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof SharedStoreSlavePolicy); SharedStoreSlavePolicy sharedStoreSlavePolicy = (SharedStoreSlavePolicy) haPolicy; assertFalse(sharedStoreSlavePolicy.isFailoverOnServerShutdown()); assertFalse(sharedStoreSlavePolicy.isRestartBackup()); ScaleDownPolicy scaleDownPolicy = sharedStoreSlavePolicy.getScaleDownPolicy(); assertNotNull(scaleDownPolicy); assertEquals(scaleDownPolicy.getGroupName(), "boo!"); assertEquals(scaleDownPolicy.getDiscoveryGroup(), "wahey"); List<String> connectors = scaleDownPolicy.getConnectors(); assertNotNull(connectors); assertEquals(connectors.size(), 0); } finally { server.stop(); } }
@Test public void colocatedTest2() throws Exception { Configuration configuration = createConfiguration("colocated-hapolicy-config2.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof ColocatedActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof ColocatedPolicy); ColocatedPolicy colocatedPolicy = (ColocatedPolicy) haPolicy; SharedStoreMasterPolicy livePolicy = (SharedStoreMasterPolicy) colocatedPolicy.getLivePolicy(); assertNotNull(livePolicy); assertFalse(livePolicy.isFailoverOnServerShutdown()); SharedStoreSlavePolicy backupPolicy = (SharedStoreSlavePolicy) colocatedPolicy.getBackupPolicy(); assertNotNull(backupPolicy); assertFalse(backupPolicy.isFailoverOnServerShutdown()); assertFalse(backupPolicy.isRestartBackup()); } finally { server.stop(); } }