[
https://issues.apache.org/jira/browse/ARTEMIS-538?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15300047#comment-15300047
]
ASF subversion and git services commented on ARTEMIS-538:
---------------------------------------------------------
Commit fb9d09744df07a4b7a7681e6cabe38af1f675190 in activemq-artemis's branch
refs/heads/master from [~eduda]
[ https://git-wip-us.apache.org/repos/asf?p=activemq-artemis.git;h=fb9d097 ]
ARTEMIS-538 - [Artemis Testsuite] JMSFailoverListenerTest#testManualFailover
fails
ActiveMQConnection implements FailoverEventListener which executes client's
FailoverEventListeners in separated threads in background. The old
implementation
does not guarantee ordering of their executions. The commit improves the
implementation to guarantee it.
> [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
>
> {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)