[
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=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}
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.
> 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=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}
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)