/** * @throws ActiveMQException */ public void remoteFailOver(ReplicationLiveIsStoppingMessage.LiveStopping finalMessage) throws ActiveMQException { if (logger.isTraceEnabled()) { logger.trace("Remote fail-over, got message=" + finalMessage + ", backupUpToDate=" + backupUpToDate); } if (!activeMQServer.getHAPolicy().isBackup() || activeMQServer.getHAPolicy().isSharedStore()) { throw new ActiveMQInternalErrorException(); } if (!backupUpToDate) { failOver(null); } else { failOver(finalMessage); } }
@Override public void close(final boolean permanently, boolean restarting) throws Exception { synchronized (this) { if (backupQuorum != null) backupQuorum.causeExit(STOP); replicationEndpoint = null; closed = true; } //we have to check as the server policy may have changed if (activeMQServer.getHAPolicy().isBackup()) { // To avoid a NPE cause by the stop NodeManager nodeManagerInUse = activeMQServer.getNodeManager(); activeMQServer.interruptActivationThread(nodeManagerInUse); if (nodeManagerInUse != null) { nodeManagerInUse.stopBackup(); } } }
private synchronized ReplicationEndpoint connectToReplicationEndpoint(final ClusterControl control) throws Exception { if (!activeMQServer.isStarted()) return null; if (!activeMQServer.getHAPolicy().isBackup()) { throw ActiveMQMessageBundle.BUNDLE.serverNotBackupServer(); } Channel replicationChannel = control.createReplicationChannel(); replicationChannel.setHandler(replicationEndpoint); if (replicationEndpoint.getChannel() != null) { throw ActiveMQMessageBundle.BUNDLE.alreadyHaveReplicationServer(); } replicationEndpoint.setChannel(replicationChannel); return replicationEndpoint; } }
/** * Waits for backup to be in the "started" state and to finish synchronization with its live. * * @param sessionFactory * @param seconds * @throws Exception */ protected void waitForBackup(ClientSessionFactoryInternal sessionFactory, int seconds) throws Exception { final ActiveMQServerImpl actualServer = (ActiveMQServerImpl) backupServer.getServer(); if (actualServer.getHAPolicy().isSharedStore()) { waitForServerToStart(actualServer); } else { waitForRemoteBackup(sessionFactory, seconds, true, actualServer); } }
@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(); } } } }
private void liveOnlyTest(String file) throws Exception { Configuration configuration = createConfiguration(file); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof LiveOnlyActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof LiveOnlyPolicy); LiveOnlyPolicy liveOnlyPolicy = (LiveOnlyPolicy) haPolicy; ScaleDownPolicy scaleDownPolicy = liveOnlyPolicy.getScaleDownPolicy(); assertNull(scaleDownPolicy); } finally { server.stop(); } }
@Test public void SharedStoreMasterTest() throws Exception { Configuration configuration = createConfiguration("shared-store-master-hapolicy-config.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedStoreLiveActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof SharedStoreMasterPolicy); SharedStoreMasterPolicy masterPolicy = (SharedStoreMasterPolicy) haPolicy; assertFalse(masterPolicy.isFailoverOnServerShutdown()); } finally { server.stop(); } }
@Test public void liveOnlyTest2() throws Exception { Configuration configuration = createConfiguration("live-only-hapolicy-config2.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof LiveOnlyActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof LiveOnlyPolicy); LiveOnlyPolicy liveOnlyPolicy = (LiveOnlyPolicy) haPolicy; ScaleDownPolicy scaleDownPolicy = liveOnlyPolicy.getScaleDownPolicy(); assertNotNull(scaleDownPolicy); assertFalse(scaleDownPolicy.isEnabled()); 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 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 liveOnlyTest() throws Exception { Configuration configuration = createConfiguration("live-only-hapolicy-config.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof LiveOnlyActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof LiveOnlyPolicy); LiveOnlyPolicy liveOnlyPolicy = (LiveOnlyPolicy) haPolicy; ScaleDownPolicy scaleDownPolicy = liveOnlyPolicy.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 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 ReplicaTest2() throws Exception { Configuration configuration = createConfiguration("replica-hapolicy-config2.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedNothingBackupActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof ReplicaPolicy); ReplicaPolicy replicaPolicy = (ReplicaPolicy) haPolicy; assertEquals(replicaPolicy.getGroupName(), "tiddles"); assertEquals(replicaPolicy.getMaxSavedReplicatedJournalsSize(), 22); assertEquals(replicaPolicy.getClusterName(), "33rrrrr"); assertFalse(replicaPolicy.isRestartBackup()); ScaleDownPolicy scaleDownPolicy = replicaPolicy.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 colocatedTest2nullbackup() throws Exception { Configuration configuration = createConfiguration("colocated-hapolicy-config2-null-backup.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); } 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 ReplicatedTest() throws Exception { Configuration configuration = createConfiguration("replicated-hapolicy-config.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedNothingLiveActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof ReplicatedPolicy); ReplicatedPolicy replicatedPolicy = (ReplicatedPolicy) haPolicy; assertEquals(replicatedPolicy.getGroupName(), "purple"); assertTrue(replicatedPolicy.isCheckForLiveServer()); assertEquals(replicatedPolicy.getClusterName(), "abcdefg"); assertEquals(replicatedPolicy.getInitialReplicationSyncTimeout(), 9876); assertEquals(replicatedPolicy.getRetryReplicationWait(), 12345); } finally { server.stop(); } }
@Test public void ReplicaTest3() throws Exception { Configuration configuration = createConfiguration("replica-hapolicy-config3.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedNothingBackupActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof ReplicaPolicy); ReplicaPolicy replicaPolicy = (ReplicaPolicy) haPolicy; assertEquals(replicaPolicy.getGroupName(), "tiddles"); assertEquals(replicaPolicy.getMaxSavedReplicatedJournalsSize(), 22); assertEquals(replicaPolicy.getClusterName(), "33rrrrr"); assertFalse(replicaPolicy.isRestartBackup()); ScaleDownPolicy scaleDownPolicy = replicaPolicy.getScaleDownPolicy(); assertNull(scaleDownPolicy); } 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(); } }
@Test public void colocatedTestNullBackup() throws Exception { Configuration configuration = createConfiguration("colocated-hapolicy-config-null-backup.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; ReplicatedPolicy livePolicy = (ReplicatedPolicy) colocatedPolicy.getLivePolicy(); assertNotNull(livePolicy); assertEquals(livePolicy.getGroupName(), "purple"); assertTrue(livePolicy.isCheckForLiveServer()); assertEquals(livePolicy.getClusterName(), "abcdefg"); ReplicaPolicy backupPolicy = (ReplicaPolicy) colocatedPolicy.getBackupPolicy(); assertNotNull(backupPolicy); } finally { server.stop(); } }
@Test public void ReplicaTest() throws Exception { Configuration configuration = createConfiguration("replica-hapolicy-config.xml"); ActiveMQServerImpl server = new ActiveMQServerImpl(configuration); try { server.start(); Activation activation = server.getActivation(); assertTrue(activation instanceof SharedNothingBackupActivation); HAPolicy haPolicy = server.getHAPolicy(); assertTrue(haPolicy instanceof ReplicaPolicy); ReplicaPolicy replicaPolicy = (ReplicaPolicy) haPolicy; assertEquals(replicaPolicy.getGroupName(), "tiddles"); assertEquals(replicaPolicy.getMaxSavedReplicatedJournalsSize(), 22); assertEquals(replicaPolicy.getClusterName(), "33rrrrr"); assertFalse(replicaPolicy.isRestartBackup()); assertTrue(replicaPolicy.isAllowFailback()); assertEquals(replicaPolicy.getInitialReplicationSyncTimeout(), 9876); assertEquals(replicaPolicy.getRetryReplicationWait(), 12345); ScaleDownPolicy scaleDownPolicy = replicaPolicy.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 colocatedTest() throws Exception { Configuration configuration = createConfiguration("colocated-hapolicy-config.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; ReplicatedPolicy livePolicy = (ReplicatedPolicy) colocatedPolicy.getLivePolicy(); assertNotNull(livePolicy); assertEquals(livePolicy.getGroupName(), "purple"); assertTrue(livePolicy.isCheckForLiveServer()); assertEquals(livePolicy.getClusterName(), "abcdefg"); ReplicaPolicy backupPolicy = (ReplicaPolicy) colocatedPolicy.getBackupPolicy(); assertNotNull(backupPolicy); assertEquals(backupPolicy.getGroupName(), "tiddles"); assertEquals(backupPolicy.getMaxSavedReplicatedJournalsSize(), 22); assertEquals(backupPolicy.getClusterName(), "33rrrrr"); assertFalse(backupPolicy.isRestartBackup()); } finally { server.stop(); } }