public void authorize(boolean validateClientId) throws JMSException { try { initialSession = sessionFactory.createSession(username, password, false, false, false, false, 0); if (clientID != null) { if (validateClientId) { validateClientID(initialSession, clientID); } else { initialSession.addMetaData(ClientSession.JMS_SESSION_CLIENT_ID_PROPERTY, clientID); } } addSessionMetaData(initialSession); initialSession.addFailureListener(listener); initialSession.addFailoverListener(failoverListener); } catch (ActiveMQException me) { throw JMSExceptionHelper.convertFromActiveMQException(me); } }
session.addFailureListener(listener); session.addFailoverListener(failoverListener);
public void authorize(boolean validateClientId) throws JMSException { try { initialSession = sessionFactory.createSession(username, password, false, false, false, false, 0); if (clientID != null) { if (validateClientId) { validateClientID(initialSession, clientID); } else { initialSession.addMetaData(JMS_SESSION_CLIENT_ID_PROPERTY, clientID); } } addSessionMetaData(initialSession); initialSession.addFailureListener(listener); initialSession.addFailoverListener(failoverListener); } catch (ActiveMQException me) { throw JMSExceptionHelper.convertFromActiveMQException(me); } }
public void authorize(boolean validateClientId) throws JMSException { try { initialSession = sessionFactory.createSession(username, password, false, false, false, false, 0); if (clientID != null) { if (validateClientId) { validateClientID(initialSession, clientID); } else { initialSession.addMetaData(ClientSession.JMS_SESSION_CLIENT_ID_PROPERTY, clientID); } } addSessionMetaData(initialSession); initialSession.addFailureListener(listener); initialSession.addFailoverListener(failoverListener); } catch (ActiveMQException me) { throw JMSExceptionHelper.convertFromActiveMQException(me); } }
public void authorize(boolean validateClientId) throws JMSException { try { initialSession = sessionFactory.createSession(username, password, false, false, false, false, 0); if (clientID != null) { if (validateClientId) { validateClientID(initialSession, clientID); } else { initialSession.addMetaData(ClientSession.JMS_SESSION_CLIENT_ID_PROPERTY, clientID); } } addSessionMetaData(initialSession); initialSession.addFailureListener(listener); initialSession.addFailoverListener(failoverListener); } catch (ActiveMQException me) { throw JMSExceptionHelper.convertFromActiveMQException(me); } }
public void authorize(boolean validateClientId) throws JMSException { try { initialSession = sessionFactory.createSession(username, password, false, false, false, false, 0); if (clientID != null) { if (validateClientId) { validateClientID(initialSession, clientID); } else { initialSession.addMetaData(JMS_SESSION_CLIENT_ID_PROPERTY, clientID); } } addSessionMetaData(initialSession); initialSession.addFailureListener(listener); initialSession.addFailoverListener(failoverListener); } catch (ActiveMQException me) { throw JMSExceptionHelper.convertFromActiveMQException(me); } }
/** * @param session * @throws InterruptedException */ private void fail(final ClientSession session) throws InterruptedException { final CountDownLatch latch = new CountDownLatch(1); session.addFailureListener(new CountDownSessionFailureListener(latch, session)); RemotingConnection conn = ((ClientSessionInternal) session).getConnection(); // Simulate failure on connection conn.fail(new ActiveMQNotConnectedException()); // Wait to be informed of failure boolean ok = latch.await(1000, TimeUnit.MILLISECONDS); Assert.assertTrue(ok); }
public static void crash(ActiveMQServer server, ClientSession... sessions) throws Exception { final CountDownLatch latch = new CountDownLatch(sessions.length); class MyListener implements SessionFailureListener { @Override public void connectionFailed(final ActiveMQException me, boolean failedOver) { latch.countDown(); } @Override public void connectionFailed(final ActiveMQException me, boolean failedOver, String scaleDownTargetNodeID) { connectionFailed(me, failedOver); } @Override public void beforeReconnect(ActiveMQException exception) { System.out.println("MyListener.beforeReconnect"); } } for (ClientSession session : sessions) { session.addFailureListener(new MyListener()); } ClusterManager clusterManager = server.getClusterManager(); clusterManager.clear(); server.fail(true); // Wait to be informed of failure boolean ok = latch.await(10000, TimeUnit.MILLISECONDS); Assert.assertTrue(ok); }
public static void crashAndWaitForFailure(ActiveMQServer server, ClientSession... sessions) throws Exception { CountDownLatch latch = new CountDownLatch(sessions.length); for (ClientSession session : sessions) { CountDownSessionFailureListener listener = new CountDownSessionFailureListener(latch, session); session.addFailureListener(listener); } ClusterManager clusterManager = server.getClusterManager(); clusterManager.flushExecutor(); clusterManager.clear(); Assert.assertTrue("server should be running!", server.isStarted()); server.fail(true); if (sessions.length > 0) { // Wait to be informed of failure boolean ok = latch.await(10000, TimeUnit.MILLISECONDS); Assert.assertTrue("Failed to stop the server! Latch count is " + latch.getCount() + " out of " + sessions.length, ok); } }
@Override public CountDownLatch crash(boolean failover, boolean waitFailure, ClientSession... sessions) throws Exception { CountDownLatch latch = new CountDownLatch(sessions.length); CountDownSessionFailureListener[] listeners = new CountDownSessionFailureListener[sessions.length]; for (int i = 0; i < sessions.length; i++) { listeners[i] = new CountDownSessionFailureListener(latch, sessions[i]); sessions[i].addFailureListener(listeners[i]); } ClusterManager clusterManager = server.getClusterManager(); clusterManager.flushExecutor(); clusterManager.clear(); Assert.assertTrue("server should be running!", server.isStarted()); server.fail(failover); if (waitFailure) { // Wait to be informed of failure boolean ok = latch.await(10000, TimeUnit.MILLISECONDS); Assert.assertTrue("Failed to stop the server! Latch count is " + latch.getCount() + " out of " + sessions.length, ok); } return latch; }
@Test public void testFailureListener() throws Exception { cf = createSessionFactory(locator); ClientSession clientSession = addClientSession(cf.createSession(false, true, true)); CountDownSessionFailureListener listener = new CountDownSessionFailureListener(clientSession); clientSession.addFailureListener(listener); // Make sure failure listener is called if server is stopped without session being closed first server.stop(); Assert.assertTrue(listener.getLatch().await(5, TimeUnit.SECONDS)); }
@Test(timeout = 120000) public void testLiveAndBackupLiveComesBack() throws Exception { locator.setFailoverOnInitialConnection(true); createSessionFactory(); final CountDownLatch latch = new CountDownLatch(1); ClientSession session = sendAndConsume(sf, true); session.addFailureListener(new CountDownSessionFailureListener(latch, session)); backupServer.stop(); liveServer.crash(); beforeRestart(liveServer); // To reload security or other settings that are read during startup beforeRestart(liveServer); liveServer.start(); Assert.assertTrue(latch.await(5, TimeUnit.SECONDS)); ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS); ClientMessage message = session.createMessage(true); setBody(0, message); producer.send(message); }
session.addFailureListener(listener); session.addFailureListener(listener); log.info("restarting live node now"); liveServer.start(); session.addFailureListener(listener);
session.addFailureListener(listener); session.addFailureListener(listener);
@Test public void testFailureListenerRemoved() throws Exception { cf = createSessionFactory(locator); try { ClientSession clientSession = cf.createSession(false, true, true); class MyFailureListener implements SessionFailureListener { boolean called = false; @Override public void connectionFailed(final ActiveMQException me, boolean failedOver) { called = true; } @Override public void connectionFailed(final ActiveMQException me, boolean failedOver, String scaleDownTargetNodeID) { connectionFailed(me, failedOver); } @Override public void beforeReconnect(final ActiveMQException me) { } } MyFailureListener listener = new MyFailureListener(); clientSession.addFailureListener(listener); Assert.assertTrue(clientSession.removeFailureListener(listener)); clientSession.close(); server.stop(); Assert.assertFalse(listener.called); } finally { ((ClientSessionFactoryInternal) cf).causeExit(); cf.close(); } }
@Test(timeout = 120000) public void testBackupServerNotRemoved() throws Exception { // HORNETQ-720 Disabling test for replicating backups. if (!(backupServer.getServer().getHAPolicy() instanceof SharedStoreSlavePolicy)) { return; } locator.setFailoverOnInitialConnection(true); createSessionFactory(); ClientSession session = sendAndConsume(sf, true); CountDownSessionFailureListener listener = new CountDownSessionFailureListener(session); session.addFailureListener(listener); backupServer.stop(); liveServer.crash(); // To reload security or other settings that are read during startup beforeRestart(backupServer); backupServer.start(); Assert.assertTrue("session failure listener", listener.getLatch().await(5, TimeUnit.SECONDS)); ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS); ClientMessage message = session.createMessage(true); setBody(0, message); producer.send(message); }
@Test(timeout = 120000) public void testLiveAndBackupLiveComesBackNewFactory() throws Exception { locator.setFailoverOnInitialConnection(true); createSessionFactory(); final CountDownLatch latch = new CountDownLatch(1); ClientSession session = sendAndConsume(sf, true); session.addFailureListener(new CountDownSessionFailureListener(latch, session)); backupServer.stop(); liveServer.crash(); // To reload security or other settings that are read during startup beforeRestart(liveServer); liveServer.start(); Assert.assertTrue(latch.await(5, TimeUnit.SECONDS)); ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS); ClientMessage message = session.createMessage(true); setBody(0, message); producer.send(message); session.close(); sf.close(); createClientSessionFactory(); session = createSession(sf); ClientConsumer cc = session.createConsumer(FailoverTestBase.ADDRESS); session.start(); ClientMessage cm = cc.receive(5000); Assert.assertNotNull(cm); Assert.assertEquals("message0", cm.getBodyBuffer().readString()); }
@Test public void testNoAutoFailback() throws Exception { locator.setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setFailoverOnInitialConnection(true).setReconnectAttempts(15); ClientSessionFactoryInternal sf = createSessionFactoryAndWaitForTopology(locator, 2); ClientSession session = sendAndConsume(sf, true); CountDownSessionFailureListener listener = new CountDownSessionFailureListener(1, session); session.addFailureListener(listener); backupServer.stop(); liveServer.crash(); backupServer.start(); assertTrue(listener.getLatch().await(5, TimeUnit.SECONDS)); ClientProducer producer = session.createProducer(ADDRESS); ClientMessage message = session.createMessage(true); setBody(0, message); producer.send(message); session.removeFailureListener(listener); Thread t = new Thread(new ServerStarter(liveServer)); t.start(); waitForRemoteBackup(sf, 10, false, backupServer.getServer()); assertTrue(backupServer.isStarted()); backupServer.crash(); waitForServerToStart(liveServer.getServer()); assertTrue(liveServer.isStarted()); sf.close(); assertEquals(0, sf.numSessions()); assertEquals(0, sf.numConnections()); }
/** * Basic fail-back test. * * @throws Exception */ @Test public void testFailBack() throws Exception { ((SharedStoreSlavePolicy) backupServer.getServer().getHAPolicy()).setRestartBackup(false); createSessionFactory(); ClientSession session = sendAndConsume(sf, true); ClientProducer producer = session.createProducer(ADDRESS); sendMessages(session, producer, NUM_MESSAGES); session.commit(); crash(session); session.start(); ClientConsumer consumer = session.createConsumer(ADDRESS); receiveMessages(consumer, 0, NUM_MESSAGES, true); producer = session.createProducer(ADDRESS); sendMessages(session, producer, 2 * NUM_MESSAGES); session.commit(); assertFalse("must NOT be a backup", liveServer.getServer().getHAPolicy().isBackup()); adaptLiveConfigForReplicatedFailBack(liveServer); CountDownSessionFailureListener listener = new CountDownSessionFailureListener(session); session.addFailureListener(listener); liveServer.start(); assertTrue(listener.getLatch().await(5, TimeUnit.SECONDS)); assertTrue("live initialized after restart", liveServer.getServer().waitForActivation(15, TimeUnit.SECONDS)); session.start(); receiveMessages(consumer, 0, NUM_MESSAGES, true); }
session.addFailureListener(listener);