Management of message credits should be on a per subscription basis (not on a 
per session basis)
------------------------------------------------------------------------------------------------

                 Key: QPID-3613
                 URL: https://issues.apache.org/jira/browse/QPID-3613
             Project: Qpid
          Issue Type: Bug
          Components: Java Client
    Affects Versions: 0.14
            Reporter: Rajith Attapattu
            Assignee: Rajith Attapattu
             Fix For: 0.15


We currently calculate credit replenishment at the session level completely 
ignoring the capacity of each individual subscription. Further more as per 
QPID-3612 the completions are tied to message-acks further complicating the 
issue.

The general formula used for calculating the replenishment rate is as follows. 
{code}
if (unackedCount >= prefetch/2 || maxAckDelay <= 0 || _acknowledgeMode == 
javax.jms.Session.AUTO_ACKNOWLEDGE)
{
            flushAcknowledgments();
}
{code}

There are several issues with this.

1. If the application doesn't ack (in CLIENT_ACK) or commit a transaction 
before it exhaust the credits, the consumer will starve. See QPID-3612. A 
recent change done in rev 1195213 fixes the TX case.

2. Ineffective flow control as the calculation happens globally at the session 
level instead at the subscription level. Due to this, slow consumers can affect 
fast consumers.

Ex . Assume there are two fast consumers and a slow consumer each with an 
individual capacity of 20 and the max_prefetch for the connection to be 100. 
The threshold for sending acks (and therefore completions) is 50. If the fast 
consumers have already done with their 20 messages, they will have to wait for 
the slow consumer to do atleast 10 messages before the threshold is hit.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to