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/27 13:50:00 UTC

[jira] [Commented] (AMQ-7156) Consumers sharing the same queue with different selectors can deadlock when one is killed

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

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

Do you have a threaddump of an actual Java deadlock that you can share? Also you should test with the latest version 5.15.8 as there have been a lot of fixes since 5.13.x

> Consumers sharing the same queue with different selectors can deadlock when one is killed
> -----------------------------------------------------------------------------------------
>
>                 Key: AMQ-7156
>                 URL: https://issues.apache.org/jira/browse/AMQ-7156
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.13.3
>            Reporter: activemquser
>            Priority: Critical
>
> Setup used for testing (tested mainly with N=2 and 15, consumer prefetch=1 10 and 1000 with CLIENT_ACKNOWLEDGE) : 
> 1 - Start N producers and N consumers on the same queue using different selectors, 1 producer is matched with 1 consumer
> 2 - The producing and consuming go well
> 3 - Kill one consumer 
> 4 - The other N-1 consumers are either blocked or greatly slowed (seems to be random)
> 5 - Restart the killed consumer
> 6 - The non ackowledged messages (generally the number of non acknowledged messages is equal to prefetch value) get redelivered to the restarted consumer (only he can consume them since only he has the right selector)
> 7 - The consuming resumes at usual rate.
> In our usecase, we have up to 40 consumers/producers sharing the same queue with different selectors, and this behavior makes the system extremely fragile since the death of one consumer can paralyze the entire system. Is the advised pattern to use different queues, potentially using virtual queues to share resources ?
>  



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