You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Martin Ritchie (JIRA)" <qp...@incubator.apache.org> on 2007/04/24 18:06:15 UTC

[jira] Commented: (QPID-350) Broker infinite loop on restart with immediate messages

    [ https://issues.apache.org/jira/browse/QPID-350?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12491348 ] 

Martin Ritchie commented on QPID-350:
-------------------------------------

Problem looks to be that the message is missing from the given MessageStore as a result the FailedDequeueException occurs. But as the message is not removed from the Queue the DeliveryManger continues to try and deliver it as it is next in the list. 

In this case the message should be moved to an DeadLetterQueue.. which we don't have yet.

Wrapping the                     sub.send(message, _queue);

line in the ConcurrentSelectorDeliveryManager should prevent this recursive restart problem .. but only currently at the expense of throwing the message away. The reason behind why message (7 in this case) cannot be found is perhaps more important.


                try
                {
                    sub.send(message, _queue);
                    //remove sent message from our queue.
                    removed = messageQueue.poll();
                    //If we don't remove the message from _messages
                    // Otherwise the Async send will never end
                }
                catch (FailedDequeueException fde)
                {
                    // Message should be moved to dead letter queue
                    _log.error("MESSAGE LOSS: unable to Dequeue Message so removing from queue:" + fde);
                    removed = messageQueue.poll();
                    // sendToDeadletter(removed);
                }

> Broker infinite loop on restart with immediate messages
> -------------------------------------------------------
>
>                 Key: QPID-350
>                 URL: https://issues.apache.org/jira/browse/QPID-350
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M1
>            Reporter: Marnie McCormack
>
> Messages being sent as immediate from .NET client to Java client, across Java broker.
> Saw this problem on broker restart (with persistent messages):
> 2007-02-07 16:03:08,058 ERROR [pool-1-thread-3] queue.ConcurrentSelectorDeliveryManager (ConcurrentSelectorDeliveryManager.java:317) - Unable to deliver message as dequeue failed: org.apache.qpid.server.queue.FailedDequeueException: Failed to dequeue message from rad_u286664_fid-mngodev4
> org.apache.qpid.server.queue.FailedDequeueException: Failed to dequeue message from rad_u286664_fid-mngodev4
>         at org.apache.qpid.server.queue.AMQQueue.dequeue(AMQQueue.java:548)
>         at org.apache.qpid.server.queue.SubscriptionImpl.sendToConsumer(SubscriptionImpl.java:260)
>         at org.apache.qpid.server.queue.SubscriptionImpl.send(SubscriptionImpl.java:212)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.sendNextMessage(ConcurrentSelectorDeliveryManager.java:308)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.sendNextMessage(ConcurrentSelectorDeliveryManager.java:361)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.processQueue(ConcurrentSelectorDeliveryManager.java:338)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager.access$100(ConcurrentSelectorDeliveryManager.java:47)
>         at org.apache.qpid.server.queue.ConcurrentSelectorDeliveryManager$Runner.run(ConcurrentSelectorDeliveryManager.java:471)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>         at java.lang.Thread.run(Thread.java:595)
> Caused by: org.apache.qpid.AMQException: Unable to find message with id 7 on queue rad_u286664_fid-mngodev4
>         at org.apache.qpid.server.store.berkeleydb.BDBMessageStore.dequeueMessage(BDBMessageStore.java:370)
>         at org.apache.qpid.server.queue.WeakReferenceMessageHandle.dequeue(WeakReferenceMessageHandle.java:201)
>         at org.apache.qpid.server.queue.AMQMessage.dequeue(AMQMessage.java:457)
>         at org.apache.qpid.server.queue.AMQQueue.dequeue(AMQQueue.java:535)
>         ... 10 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.