Kabir Khan created WFLY-9690:
--------------------------------
Summary: Inbound connection rebalancing does not allow failover to backup
Key: WFLY-9690
URL:
https://issues.jboss.org/browse/WFLY-9690
Project: WildFly
Issue Type: Enhancement
Components: JMS
Affects Versions: 10.1.0.Final
Reporter: Miroslav Novak
Assignee: Justin Bertram
Priority: Critical
If MDB contains activation config property:
@ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue =
"true")
so rebalancing of inbound connections is enabled then MDB is not able to failover from
live to backup if backup is cleanly shutdowned (ctrl-c).
Test scenario:
- There are 3 EAP 7 servers. 1st has Artemis configured as live and 2nd has Artemis
configured as backup server. So servers are in dedicated HA topology with replicated
journal. Then there are queues InQueue and OutQueue deployed to live and backup.
- Start live and backup and then send 2000 messages to InQueue to live server.
- Start 3rd server which has configured Artemis RA to connect to live server. HA is
enabled.
- Deploy MDB on 3rd server. MDB consumes messages from InQueue and sends to OutQueue in
XA transaction.
- When MDB is processing messages cleanly shutdown live server.
- MDB should failover to backup and process all the messages
- Receive messages from OutQueue from backup server and check that all messages were
received.
Test fails bacause MDB is not able to failover to backup.
Server 3 with MDB is logging:
{code}
15:16:02,975 ERROR [org.apache.activemq.artemis.ra] (NodeDOWN Connection Rebalancer)
AMQ154003: Unable to reconnect
org.apache.activemq.artemis.ra.inflow.ActiveMQActivationSpec(ra=org.apache.activemq.artemis.ra.ActiveMQResourceAdapter@51f82f98
destination=jms/queue/InQueue destinationType=javax.jms.Queue ack=Auto-acknowledge
durable=false clientID=null user=null maxSession=15):
ActiveMQNotConnectedException[errorType=NOT_CONNECTED message=AMQ119007: Cannot connect to
server(s). Tried with all available servers.]
at
org.apache.activemq.artemis.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:777)
[artemis-core-client-1.1.0.redhat-5.jar:1.1.0.redhat-5]
at
org.apache.activemq.artemis.ra.inflow.ActiveMQActivation.setup(ActiveMQActivation.java:315)
at
org.apache.activemq.artemis.ra.inflow.ActiveMQActivation.reconnect(ActiveMQActivation.java:678)
at
org.apache.activemq.artemis.ra.inflow.ActiveMQActivation$2.run(ActiveMQActivation.java:627)
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.8.0_51]
{code}
If rebalanceConnections=false then test passes.
How to run the test locally:
{code}
git clone
git://git.app.eng.bos.redhat.com/jbossqe/eap-tests-hornetq.git
cd eap-tests-hornetq/scripts/
git checkout refactoring_modules
groovy -DEAP_VERSION=7.0.0.ER4 PrepareServers7.groovy
export WORKSPACE=$PWD
export JBOSS_HOME_1=$WORKSPACE/server1/jboss-eap
export JBOSS_HOME_2=$WORKSPACE/server2/jboss-eap
export JBOSS_HOME_3=$WORKSPACE/server3/jboss-eap
export JBOSS_HOME_4=$WORKSPACE/server4/jboss-eap
cd ../jboss-hornetq-testsuite/
mvn clean test -Dtest=ReplicatedDedicatedFailoverTestWithMdb#testShutdown
-DfailIfNoTests=false -Deap=7x | tee log
{code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)