You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "Christopher L. Shannon (JIRA)" <ji...@apache.org> on 2019/02/25 11:47:00 UTC

[jira] [Commented] (AMQ-7154) Broker Deadlock while processing expired DLQ messages

    [ https://issues.apache.org/jira/browse/AMQ-7154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16776784#comment-16776784 ] 

Christopher L. Shannon commented on AMQ-7154:
---------------------------------------------

[~gtully] - what do you think about this? I looked at this a bit and the simplest thing is to acquire the sendLock before the messagesLock in doPageInForDispatch but I am not sure what that will do for performance plus that seems like overkill because the lock is only needed if a message is expired and if the DLQ is even active.  This is the line I am talking about: [https://github.com/apache/activemq/blob/bcad7e1f6a6dd078d87787a03b56560e995ef773/activemq-broker/src/main/java/org/apache/activemq/broker/region/Queue.java#L1996]

Another option could be to queue up the messages to be expired to a list (up to some max of course) and then expire them after the page in is finished and the lock is released but this could get more tricky.

> Broker Deadlock while processing expired DLQ messages
> -----------------------------------------------------
>
>                 Key: AMQ-7154
>                 URL: https://issues.apache.org/jira/browse/AMQ-7154
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.12.0
>            Reporter: Kestutis Gedminas
>            Priority: Major
>         Attachments: amq.svg, threaddump.zip
>
>
> We get a deadlock on AMQ. After analysis, it looks like in case if expired messages thread is processing DLQ queue at the same moment when poisonAck is received we run into preexisting racing condition in code due to inconsistent lock acquiring order.
> [ !amq.svg|width=1000!|^amq.svg]
>  
> [^threaddump.zip]
> [^amq.svg]
>  



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