[ 
https://issues.apache.org/jira/browse/ARTEMIS-2757?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Timothy A. Bish updated ARTEMIS-2757:
-------------------------------------
    Description: 
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}
 

  was:
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=593949, deliveryTag={539199}}
-> AMQP: Transfer{handle=0, deliveryId=593999, deliveryTag={539249}}
-> 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}
 


> 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: Blocker
>         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