/** * It will iterate the cluster connections until you have at least the number of expected servers * * @param timeWait Time to wait on each iteration * @param unit unit of time to wait * @param iterations number of iterations * @param servers number of minimal servers * @return */ public boolean waitClusterForming(long timeWait, TimeUnit unit, int iterations, int servers) throws Exception { if (activeMQServer.getClusterManager().getClusterConnections() == null || activeMQServer.getClusterManager().getClusterConnections().size() == 0) { return servers == 0; } for (int i = 0; i < iterations; i++) { for (ClusterConnection connection : activeMQServer.getClusterManager().getClusterConnections()) { if (connection.getTopology().getMembers().size() == servers) { return true; } Thread.sleep(unit.toMillis(timeWait)); } } return false; }
@Override public String[] getClusterConnectionNames() { checkStarted(); clearIO(); try { List<String> names = new ArrayList<>(); for (ClusterConnection clusterConnection : server.getClusterManager().getClusterConnections()) { names.add(clusterConnection.getName().toString()); } String[] result = new String[names.size()]; return names.toArray(result); } finally { blockOnIO(); } }
ClusterManager clusterManager = server.getClusterManager(); if (clusterManager != null) { Set<ClusterConnection> clusterConnections = clusterManager.getClusterConnections(); for (ClusterConnection clusterConnection : clusterConnections) { Topology topology = clusterConnection.getTopology();
private void pauseClusteringBridges(ActiveMQServer server) throws Exception { for (ClusterConnection clusterConnection : server.getClusterManager().getClusterConnections()) { for (MessageFlowRecord record : ((ClusterConnectionImpl) clusterConnection).getRecords().values()) { record.getBridge().pause(); } } }
protected void waitForClusterConnections(final int node, final int expected) throws Exception { ActiveMQServer server = servers[node]; if (server == null) { throw new IllegalArgumentException("No server at " + node); } ClusterManager clusterManager = server.getClusterManager(); long start = System.currentTimeMillis(); int nodesCount; do { nodesCount = 0; for (ClusterConnection clusterConn : clusterManager.getClusterConnections()) { Map<String, String> nodes = clusterConn.getNodes(); for (String id : nodes.keySet()) { if (clusterConn.isNodeActive(id)) { nodesCount++; } } } if (nodesCount == expected) { return; } Thread.sleep(10); } while (System.currentTimeMillis() - start < ActiveMQTestBase.WAIT_TIMEOUT); log.error(clusterDescription(servers[node])); Assert.assertEquals("Timed out waiting for cluster connections for server " + node, expected, nodesCount); }
private void crash() throws Exception { /* * Rather than just calling stop() on the server here we want to simulate an actual node crash or bridge failure * so the bridge's failure listener needs to get something other than a DISCONNECTED message. In this case we * simulate a NOT_CONNECTED exception. */ final CountDownLatch latch = new CountDownLatch(1); ClusterConnectionImpl next = (ClusterConnectionImpl) server1.getClusterManager().getClusterConnections().iterator().next(); BridgeImpl bridge = (BridgeImpl) next.getRecords().values().iterator().next().getBridge(); RemotingConnection forwardingConnection = getForwardingConnection(bridge); forwardingConnection.addFailureListener(new FailureListener() { @Override public void connectionFailed(ActiveMQException exception, boolean failedOver) { latch.countDown(); } @Override public void connectionFailed(final ActiveMQException me, boolean failedOver, String scaleDownTargetNodeID) { connectionFailed(me, failedOver); } }); forwardingConnection.fail(new ActiveMQNotConnectedException()); assertTrue(latch.await(5000, TimeUnit.MILLISECONDS)); if (crash) { jmsServer2.stop(); } }
final int sleepTime = 50; int nWaits = 0; while ((backupServer.getClusterManager() == null || backupServer.getClusterManager().getClusterConnections().size() != 1) && nWaits++ < waitMillis / sleepTime) { Thread.sleep(sleepTime); Set<ClusterConnection> ccs = backupServer.getClusterManager().getClusterConnections(); ClusterConnectionImpl clusterConnection = (ClusterConnectionImpl) ccs.iterator().next(); Topology topology = clusterConnection.getTopology(); TransportConfiguration nodeConnector = liveServer.getClusterManager().getClusterConnections().iterator().next().getConnector(); do { Collection<TopologyMemberImpl> members = topology.getMembers();
protected void stopClusterConnections(final int... nodes) throws Exception { for (int node : nodes) { if (servers[node].isStarted()) { for (ClusterConnection cc : servers[node].getClusterManager().getClusterConnections()) { cc.stop(); cc.flushExecutor(); } } } }
topologyDiagram.append("\n").append(activeMQServer.getIdentity()).append("\n"); if (activeMQServer.isStarted()) { Set<ClusterConnection> ccs = activeMQServer.getClusterManager().getClusterConnections();
Thread.sleep(sleepTime); Set<ClusterConnection> ccs = server.getClusterManager().getClusterConnections(); ClusterConnectionImpl clusterConnection = (ClusterConnectionImpl) ccs.iterator().next(); Topology topology = clusterConnection.getTopology(); TransportConfiguration nodeConnector = servers[node].getClusterManager().getClusterConnections().iterator().next().getConnector(); do { Collection<TopologyMemberImpl> members = topology.getMembers();
protected String clusterDescription(ActiveMQServer server) { String br = "-------------------------\n"; String out = br; out += "ActiveMQ Artemis server " + server + "\n"; ClusterManager clusterManager = server.getClusterManager(); if (clusterManager == null) { out += "N/A"; } else { for (ClusterConnection cc : clusterManager.getClusterConnections()) { out += cc.describe() + "\n"; out += cc.getTopology().describe(); } } out += "\n\nfull topology:"; return out + br; }
Set<ClusterConnection> ccs = server.getClusterManager().getClusterConnections();
final ClusterManager clusterManager = server.getClusterManager(); if (clusterManager != null) { for (ClusterConnection cc : clusterManager.getClusterConnections()) { stopComponent(cc);
Set<ClusterConnection> connectionSet = getServer(0).getClusterManager().getClusterConnections(); assertNotNull(connectionSet); assertEquals(1, connectionSet.size()); getServer(1).getClusterManager().getClusterConnections(); assertNotNull(connectionSet); assertEquals(1, connectionSet.size()); assertNotNull(records); assertEquals(records.size(), 1); getServer(2).getClusterManager().getClusterConnections(); assertNotNull(connectionSet); assertEquals(1, connectionSet.size()); assertNotNull(records); assertEquals(records.size(), 1); getServer(3).getClusterManager().getClusterConnections(); assertNotNull(connectionSet); assertEquals(1, connectionSet.size()); assertEquals(records.size(), 1); getServer(4).getClusterManager().getClusterConnections(); assertNotNull(connectionSet); assertEquals(1, connectionSet.size());
Assert.assertEquals(1, servers[0].getClusterManager().getClusterConnections().size()); ClusterConnectionImpl connection = servers[0].getClusterManager().getClusterConnections().toArray(new ClusterConnectionImpl[0])[0]; Assert.assertEquals(1, connection.getRecords().size()); session1.commit(); connection = servers[0].getClusterManager().getClusterConnections().toArray(new ClusterConnectionImpl[0])[0]; Assert.assertEquals(1, connection.getRecords().size()); Assert.assertNotNull(bridge.getSessionFactory());
for (ClusterConnection clusterConnection : getServer(0).getClusterManager().getClusterConnections()) { for (MessageFlowRecord record : ((ClusterConnectionImpl) clusterConnection).getRecords().values()) { record.getBridge().pause();