@Override public void postConnectionFreeze() { if (liveOnlyPolicy.getScaleDownPolicy() != null && liveOnlyPolicy.getScaleDownPolicy().isEnabled() && scaleDownClientSessionFactory != null) { try { scaleDown(); } catch (Exception e) { ActiveMQServerLogger.LOGGER.failedToScaleDown(e); } finally { scaleDownClientSessionFactory.close(); scaleDownServerLocator.close(); } } }
@Override public JournalLoader createJournalLoader(PostOffice postOffice, PagingManager pagingManager, StorageManager storageManager, QueueFactory queueFactory, NodeManager nodeManager, ManagementService managementService, GroupingHandler groupingHandler, Configuration configuration, ActiveMQServer parentServer) throws ActiveMQException { if (replicaPolicy.getScaleDownPolicy() != null && replicaPolicy.getScaleDownPolicy().isEnabled()) { return new BackupRecoveryJournalLoader(postOffice, pagingManager, storageManager, queueFactory, nodeManager, managementService, groupingHandler, configuration, parentServer, ScaleDownPolicy.getScaleDownConnector(replicaPolicy.getScaleDownPolicy(), activeMQServer), activeMQServer.getClusterManager().getClusterController()); } else { return super.createJournalLoader(postOffice, pagingManager, storageManager, queueFactory, nodeManager, managementService, groupingHandler, configuration, parentServer); } }
@Override public JournalLoader createJournalLoader(PostOffice postOffice, PagingManager pagingManager, StorageManager storageManager, QueueFactory queueFactory, NodeManager nodeManager, ManagementService managementService, GroupingHandler groupingHandler, Configuration configuration, ActiveMQServer parentServer) throws ActiveMQException { if (sharedStoreSlavePolicy.getScaleDownPolicy() != null && sharedStoreSlavePolicy.getScaleDownPolicy().isEnabled()) { return new BackupRecoveryJournalLoader(postOffice, pagingManager, storageManager, queueFactory, nodeManager, managementService, groupingHandler, configuration, parentServer, ScaleDownPolicy.getScaleDownConnector(sharedStoreSlavePolicy.getScaleDownPolicy(), activeMQServer), activeMQServer.getClusterManager().getClusterController()); } else { return super.createJournalLoader(postOffice, pagingManager, storageManager, queueFactory, nodeManager, managementService, groupingHandler, configuration, parentServer); } }
@Override public void freezeConnections(RemotingService remotingService) { // connect to the scale-down target first so that when we freeze/disconnect the clients we can tell them where // we're sending the messages if (liveOnlyPolicy.getScaleDownPolicy() != null && liveOnlyPolicy.getScaleDownPolicy().isEnabled()) { connectToScaleDownTarget(liveOnlyPolicy.getScaleDownPolicy()); } RemotingConnection rc = scaleDownClientSessionFactory == null ? null : scaleDownClientSessionFactory.getConnection(); String nodeID = rc == null ? null : scaleDownClientSessionFactory.getServerLocator().getTopology().getMember(rc).getNodeId(); if (remotingService != null) { remotingService.freeze(nodeID, null); } }
boolean scalingDown = replicaPolicy.getScaleDownPolicy() != null && replicaPolicy.getScaleDownPolicy().isEnabled();
boolean scalingDown = scaleDownPolicy != null && scaleDownPolicy.isEnabled();
@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(); } }