qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "jiraposter@reviews.apache.org (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QPID-3629) CPP Broker allows credit window to exceed the request size.
Date Fri, 18 Nov 2011 21:04:51 GMT

    [ https://issues.apache.org/jira/browse/QPID-3629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13153120#comment-13153120

jiraposter@reviews.apache.org commented on QPID-3629:

This is an automatically generated e-mail. To reply, visit:

(Updated 2011-11-18 21:03:35.365601)

Review request for Alan Conway, Kenneth Giusti, Robbie Gemmell, and Keith Wall.


Got the JIRA numbers muddled first time round; now fixed.

Summary (updated)

The c++ broker does not track the actual credit window as distinct from the remaining credit.
This means that when a message-stop is received followed by a message-flow, the total number
of outstanding, uncompleted messages for the subscription is larger than the window. Fixing
the corner cases requires tracking some extra state in window mode. This patch modifies thing
s to track the window size and the current used credit in that case. (In explicit mode we
just track the available credit as before). I've moved all the credit logic out into its own
pair of files and attempted to reduce a lot of the repetitiveness (once the changes needed
to address the issue in the JIRA, the code was even messier than before).

The extra state also needs to be communicated to cluster updatees, so there is a small modification
to the update process and one of the update commands.

This addresses bug QPID-3629.


  /trunk/qpid/cpp/src/CMakeLists.txt 1203231 
  /trunk/qpid/cpp/src/Makefile.am 1203231 
  /trunk/qpid/cpp/src/qpid/broker/Credit.h PRE-CREATION 
  /trunk/qpid/cpp/src/qpid/broker/Credit.cpp PRE-CREATION 
  /trunk/qpid/cpp/src/qpid/broker/SemanticState.h 1203231 
  /trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp 1203231 
  /trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp 1203231 
  /trunk/qpid/cpp/src/qpid/cluster/Connection.h 1203231 
  /trunk/qpid/cpp/src/qpid/cluster/Connection.cpp 1203231 
  /trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp 1203231 
  /trunk/qpid/cpp/xml/cluster.xml 1203231 
  /trunk/qpid/python/qpid/testlib.py 1203231 
  /trunk/qpid/tests/src/py/qpid_tests/broker_0_10/message.py 1203231 

Diff: https://reviews.apache.org/r/2880/diff


New test from Keith included in the patch. All existing tests pass.



> CPP Broker allows credit window to exceed the request size.
> -----------------------------------------------------------
>                 Key: QPID-3629
>                 URL: https://issues.apache.org/jira/browse/QPID-3629
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker
>    Affects Versions: 0.14
>            Reporter: Keith Wall
>            Assignee: Gordon Sim
>         Attachments: 0001-QPID-3629-demonstrate-credit-window-issue-using-pyth.patch
> Investigation of QPID-2703 revealed that the CPP Broker can be made to extend the window
size beyond that requested by the client's message.flow command.   To reproduce the problem,
the client must perform the following steps:
> 1) Receive messages
> 2) Perform message stop
> 3) Perform message flow
> 4) Complete messages received by step 1)
> 5) Observe the window is the sum of that requested by step 3 + the recredit of messages
from 1)
> The window handling behaviour of the CPP Broker was the reason that QPID-2703 was not
apparent against the CPP Broker but was against the Java Broker which does not expand the
window in this way.
> The attached Python test demonstrates the issue by receiving more uncompleted message
commands than the window should allow.  Obviously it can be argued that the python test does
not have the expected order of commands, but there is nothing stopping a client from performing
such a sequence (e.g. the Qpid Java Client) so the broker should enforce the requested window
size regardless.

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:dev-subscribe@qpid.apache.org

View raw message