You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Jigar Parekh (JIRA)" <ji...@apache.org> on 2019/03/04 07:14:00 UTC

[jira] [Created] (ARTEMIS-2266) large message lost with divert

Jigar Parekh created ARTEMIS-2266:
-------------------------------------

             Summary: large message lost with divert
                 Key: ARTEMIS-2266
                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2266
             Project: ActiveMQ Artemis
          Issue Type: Bug
    Affects Versions: 2.6.3
            Reporter: Jigar Parekh


I have following queue setup in cluster 


{code:java}
<diverts> 
   <divert name="RF-IT"> 
      <routing-name>RF-IT</routing-name> 
      <address>RFTopic</address> 
      <forwarding-address>IT-InputQueue</forwarding-address> 
      <exclusive>false</exclusive> 
   </divert> 
   <divert name="RF-MO"> 
      <routing-name>RF-MO</routing-name> 
      <address>RFTopic</address> 
      <forwarding-address>RFInputQueue</forwarding-address> 
      <exclusive>false</exclusive> 
   </divert> 
</diverts> 


<address name="IT-InputQueue"> 
   <anycast> 
      <queue name="IT-InputQueue" /> 
   </anycast> 
</address> 
<address name="RFInputQueue"> 
   <anycast> 
       <queue name="RFInputQueue" /> 
   </anycast> 
</address> 
<address name="RFTopic"> 
   <multicast /> 
</address> {code}

server1 running on 61616 and server2 running of 61626 

I start two consumer with two different available master server 


{code:java}
java -jar AmqJmsConsumejar -duration 5 -queue IT-InputQueue -stats -log 
/tmp/artemis/4 -verify -commitdelay 300 -url 'tcp://localhost:61626' 
java -jar AmqJmsConsumejar -duration 5 -queue IT-InputQueue -stats -log 
/tmp/artemis/4 -verify -commitdelay 300 -url 'tcp://localhost:61616' {code}


and run producer to server1 as below 


{code:java}
java -jar AmqJmsProducer.jar -topic RFTopic -stats -log /tmp/artemis/4 -id 
-count 500 -n 500 -ttl 3600000 -url 'tcp://localhost:61616' -outliers 100 
-outliersize 500k {code}

both consumer gets few message but after below exception server1 clears 
queue with almost 50% of messages but rest of messages are stuck with 
internal.sf.cluster queue and not received by any consumer. 


{noformat}
java.lang.IllegalStateException: no queueIDs defined 
        at 
org.apache.activemq.artemis.core.server.cluster.impl.ClusterConnectionBridge.beforeForward(ClusterConnectionBridge.java:180) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.cluster.impl.BridgeImpl.handle(BridgeImpl.java:609) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl.handle(QueueImpl.java:2983) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2334) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(QueueImpl.java:107) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:3209) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[rt.jar:1.8.0_191] 
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[rt.jar:1.8.0_191] 
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) 
[artemis-commons-2.6.3.jar:2.6.3] 


2019-01-08 15:15:33,668 WARN 
[org.apache.activemq.artemis.core.server.impl.QueueImpl] null: 
java.util.NoSuchElementException 
        at 
org.apache.activemq.artemis.utils.collections.PriorityLinkedListImpl$PriorityLinkedListIterator.repeat(PriorityLinkedListImpl.java:172) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl.deliver(QueueImpl.java:2353) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl.access$2000(QueueImpl.java:107) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.core.server.impl.QueueImpl$DeliverRunner.run(QueueImpl.java:3209) 
[artemis-server-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:42) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.utils.actors.OrderedExecutor.doTask(OrderedExecutor.java:31) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
org.apache.activemq.artemis.utils.actors.ProcessorBase.executePendingTasks(ProcessorBase.java:66) 
[artemis-commons-2.6.3.jar:2.6.3] 
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
[rt.jar:1.8.0_191] 
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
[rt.jar:1.8.0_191] 
        at 
org.apache.activemq.artemis.utils.ActiveMQThreadFactory$1.run(ActiveMQThreadFactory.java:118) 
[artemis-commons-2.6.3.jar:2.6.3] {noformat}


seems some bug with divert and large message forwarding to another node. 
If remove one divert or change configuration like below then everything 
works fine without any message lost. 


{code:java}
<address name="RFTopic"> 
   <multicast> 
     <queue name="IT-InputQueue"> 
     </queue> 
     <queue name="RFInputQueue" /> 
   </multicast> 
</address> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)