[
https://issues.apache.org/jira/browse/ARTEMIS-2244?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16761206#comment-16761206
]
ASF subversion and git services commented on ARTEMIS-2244:
----------------------------------------------------------
Commit 2a8b29995ff5a54d1caa54cc2e82239d21aecbd3 in activemq-artemis's branch
refs/heads/2.6.x from Clebert Suconic
[ https://gitbox.apache.org/repos/asf?p=activemq-artemis.git;h=2a8b299 ]
ARTEMIS-2244 Adding critical check around checkDepage
(cherry picked from commit e09ffe14f488efd1013005da9ecc588466dc2905)
> checkDepage method placed outside CRITICAL_DELIVER avoid critical analyzer
> timeout
> ----------------------------------------------------------------------------------
>
> Key: ARTEMIS-2244
> URL: https://issues.apache.org/jira/browse/ARTEMIS-2244
> Project: ActiveMQ Artemis
> Issue Type: Bug
> Reporter: yuebao
> Priority: Major
> Attachments: threaddump.txt
>
> Time Spent: 2h 10m
> Remaining Estimate: 0h
>
> We found server crash becauseof critical analyzer timeout, thread dump can be
> seen in attachment.
> Suppose that there is a topic t with two subscriber ta and tb. Some messages
> were routed to subscriber ta, not to tb. When a consumer that subscribe tb is
> created and send ConsumerCredits to server, ServerConsumerImpl will call
> promptDelivery method, then forceDelivery() -> messageQueue.deliverAsync() ->
> deliverRunner will executed in the pageSubscription's executor(step1), then
> checkDepage(step2) -> pageIterator.hasNext(synchronized method) -> next ->
> moveNext, moveNext method will iterate through queue until find a matching
> message. At this time(step1), DeliverRunner call deliver method ->
> checkDepage -> pageIterator.hasNext, this step blocked on CursorIterator
> which was locked by step2, then critical analyzer timeout.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)