Uploaded image for project: 'JBoss Enterprise Application Platform 4 and 5'
  1. JBoss Enterprise Application Platform 4 and 5
  2. JBPAPP-7682

The core bridge stops working after slow or missed PACKETS_CONFIRMED

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • EAP_EWP 5.1.2 CR2
    • EAP_EWP 5.1.1
    • HornetQ
    • None
    • JBoss-EAP-5.1.1, HornetQ-2.2.5-GA

    • Hide
      • Start 2 servers in a cluster containing a clustered queue myqueue
      • Send 10 messages: because of server side load messaging, 5 messages end up in server 1 and 5 messages in server 2
      • Connect to server 1 in remote debug
      • Put an active breakpoint into BridgeImpl.handle
      • Put an inactive breakpoint into PacketDecoder.decode with condition packetType == 22
      • Send 10 messages
      • Once you hit the BridgeImpl breakpoint, activate the conditional breakpoint in PacketDecoder and let the thread continue => a few seconds later you should hit the 2nd breakpoint
      • Wait until you see the following exception:

      Unable to send message, will try again once bridge reconnects
      HornetQException[errorCode=3 message=Timed out waiting for response when sending packet 71]
      at org.hornetq.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:276)
      at org.hornetq.core.client.impl.ClientProducerImpl.doSend(ClientProducerImpl.java:287)
      at org.hornetq.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:142)
      at org.hornetq.core.server.cluster.impl.BridgeImpl.handle(BridgeImpl.java:407)
      at org.hornetq.core.server.impl.QueueImpl.handle(QueueImpl.java:2017)
      at org.hornetq.core.server.impl.QueueImpl.deliver(QueueImpl.java:1587)
      at org.hornetq.core.server.impl.QueueImpl.doPoll(QueueImpl.java:1472)
      at org.hornetq.core.server.impl.QueueImpl.access$1100(QueueImpl.java:72)
      at org.hornetq.core.server.impl.QueueImpl$ConcurrentPoller.run(QueueImpl.java:2299)
      at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:662)

      • Deactivate all breakpoints and free the PacketDecoder thread
      • Observe that the cluster queue contains messages, has 1 consumer connected but messages are not consumed anymore
      • Try sending more messages: if you client connects to the server 1, this will increase the number of messages into the cluster queue and in the queue myqueue. if you client connects to server 2, then the behavior will be appropriate.
      Show
      Start 2 servers in a cluster containing a clustered queue myqueue Send 10 messages: because of server side load messaging, 5 messages end up in server 1 and 5 messages in server 2 Connect to server 1 in remote debug Put an active breakpoint into BridgeImpl.handle Put an inactive breakpoint into PacketDecoder.decode with condition packetType == 22 Send 10 messages Once you hit the BridgeImpl breakpoint, activate the conditional breakpoint in PacketDecoder and let the thread continue => a few seconds later you should hit the 2nd breakpoint Wait until you see the following exception: Unable to send message, will try again once bridge reconnects HornetQException [errorCode=3 message=Timed out waiting for response when sending packet 71] at org.hornetq.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:276) at org.hornetq.core.client.impl.ClientProducerImpl.doSend(ClientProducerImpl.java:287) at org.hornetq.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:142) at org.hornetq.core.server.cluster.impl.BridgeImpl.handle(BridgeImpl.java:407) at org.hornetq.core.server.impl.QueueImpl.handle(QueueImpl.java:2017) at org.hornetq.core.server.impl.QueueImpl.deliver(QueueImpl.java:1587) at org.hornetq.core.server.impl.QueueImpl.doPoll(QueueImpl.java:1472) at org.hornetq.core.server.impl.QueueImpl.access$1100(QueueImpl.java:72) at org.hornetq.core.server.impl.QueueImpl$ConcurrentPoller.run(QueueImpl.java:2299) at org.hornetq.utils.OrderedExecutorFactory$OrderedExecutor$1.run(OrderedExecutorFactory.java:100) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662) Deactivate all breakpoints and free the PacketDecoder thread Observe that the cluster queue contains messages, has 1 consumer connected but messages are not consumed anymore Try sending more messages: if you client connects to the server 1, this will increase the number of messages into the cluster queue and in the queue myqueue. if you client connects to server 2, then the behavior will be appropriate.
    • The sf-mycluster queue stops delivering messages after a slow or missed PACKETS_CONFIRMED
    • NEW

      The sf-mycluster queue stops delivering messages after a slow or missed PACKETS_CONFIRMED

            csuconic@redhat.com Clebert Suconic
            rhn-support-tywickra Tyronne Wickramarathne
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: