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

Timothy A. Bish commented on ARTEMIS-2757:
------------------------------------------

I removed the blocker status after a bunch of testing.  While I could peg the 
broker CPU usage for rather long periods of time I wasn't able to actually take 
it done as the client generally tends to slow due to the high memory 
utilization this causes that the broker can seemingly dig itself out of the 
whole it gets into.  It's hard to say without more hardware if multiple senders 
could get into this situation and eventually overwhelm things to the point of 
failure. 

> AMQP: Broker grants credit before accepting the inbound messages that caused 
> it to grant credit
> -----------------------------------------------------------------------------------------------
>
>                 Key: ARTEMIS-2757
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-2757
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: AMQP
>    Affects Versions: 2.12.0
>         Environment: AMQP Client sending unsettled messages asynchronously
>            Reporter: Timothy A. Bish
>            Priority: Critical
>             Fix For: 2.13.0
>
>         Attachments: async-sender-output.txt.tar.bz2
>
>
> The broker is granting credit to AMQP senders before it has processed and 
> settled (accepted) incoming messages.  When the client sends enough messages 
> to the broker to have crossed the 70% mark that it uses as a replenishment 
> threshold the broker is immediately granting more credit regardless of having 
> actually enqueued and sent the settlement disposition to the sending client 
> thereby essentially granting infinite amounts of credit to a sending client 
> as it bombards the broker with messages. 
>  Small log snippet showing broker dispositions working at a significant 
> backlog compared to flows it is sending:
> {code:java}
> <- AMQP: Disposition{role=RECEIVER, first=528649, last=528649}
> -> AMQP: Transfer{handle=0, deliveryId=594049, deliveryTag={539299}}
> <- AMQP: Flow{nextIncomingId=594014, incomingWindow=2147483647, 
> nextOutgoingId=1, outgoingWindow=2147483647, handle=0, deliveryCount=594013, 
> linkCredit=1000, available=0, drain=false, echo=false, properties=null}
> {code}
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to