3 Replies Latest reply on Jul 29, 2014 5:43 PM by jbertram

    MDB's are not getting connected to backup HornetQ server after failover

    ajinkya.bambal

      I have ,

      • Standalone live 2.3.0.Final HQ server
      • Standalone backup 2.3.0.Final HQ servers .
      • JMS client (MDB) deployed on jboss-as-7.1.1.Final

       

      1) Whenever failover happens , ideally MDB connections should seamlessly migrate from live server to backup server . But it is not happening every time . Sometimes it is getting failed to migrate connections . And also if migration of MDB connections  is successful then it is taking too much time (around 1-2 mins) .

      2) I am constantly  getting below warning message in my jboss log ,

       

      WARN  [com.arjuna.ats.jta] (Periodic Recovery) () ARJUNA016027: Local XARecoveryModule.xaRecovery got XA exception XAException.XAER_RMERR: javax.transaction.xa.XAException: Error trying to connect to any providers for xa recovery

              at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.getDelegate(HornetQXAResourceWrapper.java:275) [hornetq-jms-2.2.13.Final.jar:]

              at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.recover(HornetQXAResourceWrapper.java:77) [hornetq-jms-2.2.13.Final.jar:]

              at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.xaRecovery(XARecoveryModule.java:503) [jbossjts-4.16.2.Final.jar:]

              at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.resourceInitiatedRecoveryForRecoveryHelpers(XARecoveryModule.java:471) [jbossjts-4.16.2.Final.jar:]

              at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.bottomUpRecovery(XARecoveryModule.java:385) [jbossjts-4.16.2.Final.jar:]

              at com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule.periodicWorkSecondPass(XARecoveryModule.java:166) [jbossjts-4.16.2.Final.jar:]

              at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.doWorkInternal(PeriodicRecovery.java:789) [jbossjts-4.16.2.Final.jar:]

              at com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery.run(PeriodicRecovery.java:371) [jbossjts-4.16.2.Final.jar:]

      Caused by: java.lang.IllegalStateException: Cannot create session factory, server locator is closed (maybe it has been garbage collected)

              at org.hornetq.core.client.impl.ServerLocatorImpl.assertOpen(ServerLocatorImpl.java:1823) [hornetq-core-2.2.13.Final.jar:]

              at org.hornetq.core.client.impl.ServerLocatorImpl.createSessionFactory(ServerLocatorImpl.java:699) [hornetq-core-2.2.13.Final.jar:]

              at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.connect(HornetQXAResourceWrapper.java:321) [hornetq-jms-2.2.13.Final.jar:]

              at org.hornetq.jms.server.recovery.HornetQXAResourceWrapper.getDelegate(HornetQXAResourceWrapper.java:251) [hornetq-jms-2.2.13.Final.jar:]

              ... 7 more

       

       

      Also please find attachment of my configuration files.

       

      Please help me out , it is a blocker for me.

        • 1. Re: MDB's are not getting connected to backup HornetQ server after failover
          mnovak

          Can you share your standalone-full...xml? I guess your MDB is just receiving messages, right?

           

          Looking at the log from server it appears that Transaction Manager (TM) is doing  periodic recovery and tries to get info unfinished transaction. It asks HornetQ resource adapter (HQ RA) to check whether it has some transaction for recovery and HQ RA tries to connect to HornetQ live server which is dead.

          • 2. Re: MDB's are not getting connected to backup HornetQ server after failover
            ajinkya.bambal

            Thanks Miroslav for the quick response .

            Can you share your standalone-full...xml? I guess your MDB is just receiving messages, right?

             

            I think I have already shared hornetq-server messaging subsystem in the attachment, apart from that I have added following configuration for mdb under    <subsystem xmlns="urn:jboss:domain:ejb3:1.2">.

            <mdb>

                            <resource-adapter-ref resource-adapter-name="hornetq-ra"/>

                            <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>

            </mdb>

             

            My major concern is ,after failover mdb's connections are getting closed instead of migrating from live to back HornetQ server.

            • 3. Re: MDB's are not getting connected to backup HornetQ server after failover
              jbertram

              You should upgrade both HornetQ and JBoss AS (preferably to WildFly).  You should also configure the <pooled-connection-factory> which your MDB is using for HA.  The connection will never fail-over if HA isn't enabled.