[
https://issues.apache.org/jira/browse/AMQ-7154?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16776909#comment-16776909
]
Christopher L. Shannon commented on AMQ-7154:
---------------------------------------------
[~gtully] - hmmm good point...looking at this more I think you are right that
this is an issue with the DLQ expiry looping back to the DLQ (itself). For a
normal queue the DLQ processing would obviously be acquiring the send lock and
messages lock on the DLQ which would be different locks than the expiration
task on that current queue so no issue.
So maybe the answer is to simply disable expiration on the DLQ. I don't think
there's really any point of trying to expire the message if it's already on the
DLQ.
> 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)