Uploaded image for project: 'AMQ Interconnect'
  1. AMQ Interconnect
  2. ENTMQIC-2004

Transactional behaviour different in client router broker scenario versus client broker

    Details

    • Type: Bug
    • Status: Done
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: 1.1.0.GA
    • Fix Version/s: 1.2.0.CR3
    • Component/s: Qpid Dispatch Router
    • Labels:
      None
    • Environment:

      client qpid jms 0.32
      1.1.0.GA interconnect on rhel 7.2
      artemis broker 2.7.0-SNAPSHOT from master on f27

    • Target Release:
    • Sprint:
      Interconnect - June Sprint
    • Steps to Reproduce:
      Hide

      Replace the TransactionalExample with the to be attached amqp version. Use the given router and broker config, update for local network environment and run mvn -PnoServer verify from the TransactionExample directory in the Artemis source tree.

      Show
      Replace the TransactionalExample with the to be attached amqp version. Use the given router and broker config, update for local network environment and run mvn -PnoServer verify from the TransactionExample directory in the Artemis source tree.
    • Affects:
      Release Notes
    • Release Notes Text:
      Hide
      Previously, if a link was repeatedly drained and then restarted, flow-control credit would not always be accounted correctly (particularly when using the AMQ JMS client). This issue has been corrected, and credit is now correctly tracked over multiple drain-restart cycles.
      Show
      Previously, if a link was repeatedly drained and then restarted, flow-control credit would not always be accounted correctly (particularly when using the AMQ JMS client). This issue has been corrected, and credit is now correctly tracked over multiple drain-restart cycles.
    • Release Notes Docs Status:
      Documented as Resolved Issue

      Description

      Using the TransactionalExample from AMQ Broker 7 located in
      ./examples/features/standard/transactional
      but modified to utilize Qpid JMS to work over AMQP through the router when going
      client <> router <> broker we see that upon the first execution:

      [INFO] --- artemis-maven-plugin:2.7.0-SNAPSHOT:runClient (runClient) @ transactional ---
      [INFO] Best match for SASL auth was: SASL-ANONYMOUS
      [INFO] Connection ID:627a4d36-ea7c-4967-bec1-ea5dc7a20f02:1 connected to remote Broker: amqp://ic1rh:5672
      Sent message1: This is a text message1
      Sent message2: This is a text message2
      Message received before send commit: null
      [INFO] A JMS MessageConsumer has been closed: JmsConsumerInfo: { ID:627a4d36-ea7c-4967-bec1-ea5dc7a20f02:1:1:1, destination = abc.LB.1.testQueue }
      [ERROR] 
      java.lang.reflect.InvocationTargetException
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at org.apache.activemq.artemis.maven.ArtemisClientPlugin.doExecute(ArtemisClientPlugin.java:61)
              at org.apache.activemq.artemis.maven.ArtemisAbstractPlugin.execute(ArtemisAbstractPlugin.java:74)
              at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
              at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
              at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
              at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
              at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
              at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
              at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
              at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
              at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
              at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
              at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
              at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
              at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
              at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
              at java.lang.reflect.Method.invoke(Method.java:498)
              at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
              at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
              at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
              at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
      Caused by: org.apache.qpid.jms.JmsOperationTimedOutException: Remote did not respond to a drain request in time
              at org.apache.qpid.jms.provider.amqp.AmqpConsumer$1.run(AmqpConsumer.java:138)
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266)
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
              at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
              at java.lang.Thread.run(Thread.java:748)
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD FAILURE
      [INFO] ------------------------------------------------------------------------
      

      However a second immediate execution shows:

      [INFO] --- artemis-maven-plugin:2.7.0-SNAPSHOT:runClient (runClient) @ transactional ---
      [INFO] Best match for SASL auth was: SASL-ANONYMOUS
      [INFO] Connection ID:ab16c6e7-0ed0-442c-944c-29ed00c86e87:1 connected to remote Broker: amqp://ic1rh:5672
      Sent message1: This is a text message1
      Sent message2: This is a text message2
      Message received before send commit: JmsTextMessage { org.apache.qpid.jms.provider.amqp.message.AmqpJmsTextMessageFacade@51b51641 }
      Message received after send commit: This is a text message2
      Message1 received after receive rollback: This is a text message2
      Message2 received after receive rollback: This is a text message1
      Message3 received after receive rollback: JmsTextMessage { org.apache.qpid.jms.provider.amqp.message.AmqpJmsTextMessageFacade@f9a5e3f }
      Message received after receive commit: null
      [INFO] 
      [INFO] --- artemis-maven-plugin:2.7.0-SNAPSHOT:cli (stop) @ transactional ---
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      

      While a slight update to connect directly to the broker shows:

      [INFO] --- artemis-maven-plugin:2.7.0-SNAPSHOT:runClient (runClient) @ transactional ---
      [INFO] Best match for SASL auth was: SASL-ANONYMOUS
      [INFO] Connection ID:62a1bf91-a5b8-4843-b163-995ed426b352:1 connected to remote Broker: amqp://ic1rh:10010
      Sent message1: This is a text message1
      Sent message2: This is a text message2
      Message received before send commit: null
      Message received after send commit: This is a text message1
      Message1 received after receive rollback: This is a text message2
      Message2 received after receive rollback: This is a text message1
      Message3 received after receive rollback: null
      Message received after receive commit: null
      [INFO] 
      [INFO] --- artemis-maven-plugin:2.7.0-SNAPSHOT:cli (stop) @ transactional ---
      [INFO] ------------------------------------------------------------------------
      [INFO] BUILD SUCCESS
      [INFO] ------------------------------------------------------------------------
      

        Gliffy Diagrams

          Attachments

          1. broker-ENTMQIC-2004.xml
            9 kB
          2. D-2004-direct.html
            433 kB
          3. D-2004-routed.html
            592 kB
          4. pom.xml
            5 kB
          5. pom.xml
            5 kB
          6. qdrouterd-ENTMQIC-2004.conf
            0.9 kB
          7. TransactionalExample.java
            5 kB

            Issue Links

              Activity

                People

                • Assignee:
                  crolke Chuck Rolke
                  Reporter:
                  roddiekieley Roderick Kieley
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  5 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: