You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Erich Duda (JIRA)" <ji...@apache.org> on 2016/05/25 13:57:12 UTC

[jira] [Resolved] (ARTEMIS-538) [Artemis Testsuite] JMSFailoverListenerTest#testManualFailover fails

     [ https://issues.apache.org/jira/browse/ARTEMIS-538?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Erich Duda resolved ARTEMIS-538.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 1.3.0

> [Artemis Testsuite] JMSFailoverListenerTest#testManualFailover fails
> --------------------------------------------------------------------
>
>                 Key: ARTEMIS-538
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-538
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>    Affects Versions: 1.2.0
>            Reporter: Erich Duda
>             Fix For: 1.3.0
>
>
> {code}
> java.lang.AssertionError: expected:<FAILURE_DETECTED> but was:<FAILOVER_FAILED>
> 	at org.junit.Assert.fail(Assert.java:88)
> 	at org.junit.Assert.failNotEquals(Assert.java:743)
> 	at org.junit.Assert.assertEquals(Assert.java:118)
> 	at org.junit.Assert.assertEquals(Assert.java:144)
> 	at org.apache.activemq.artemis.tests.integration.jms.cluster.JMSFailoverListenerTest.testManualFailover(JMSFailoverListenerTest.java:228)
> {code}
> I found out that problem is in \[1\]. When events occur consecutive, ordering of their executions is not guaranteed.
> \[1\]
> {code:title=ActiveMQConnection.java}
> private static class FailoverEventListenerImpl implements FailoverEventListener {
>       private final WeakReference<ActiveMQConnection> connectionRef;
>       FailoverEventListenerImpl(final ActiveMQConnection connection) {
>          connectionRef = new WeakReference<ActiveMQConnection>(connection);
>       }
>       @Override
>       public void failoverEvent(final FailoverEventType eventType) {
>          ActiveMQConnection conn = connectionRef.get();
>          if (conn != null) {
>             try {
>                final FailoverEventListener failoverListener = conn.getFailoverListener();
>                if (failoverListener != null) {
>                   new Thread(new Runnable() {
>                      public void run() {
>                         failoverListener.failoverEvent(eventType);
>                      }
>                   }).start();
>                }
>             }
>             catch (JMSException e) {
>                if (!conn.closed) {
>                   ActiveMQJMSClientLogger.LOGGER.errorCallingFailoverListener(e);
>                }
>             }
>          }
>       }
>    }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)