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

[email protected] commented on QPID-3629:
-----------------------------------------------------



bq.  On 2011-11-22 22:34:38, rajith attapattu wrote:
bq.  > There is good news and bad news.
bq.  > This patch makes sure that the number of messages in the clients 
prefetch buffer never exceeds the max-prefetch value.
bq.  > So this fix is very important for QPID-3602
bq.  > 
bq.  > The bad news is that this patch seems to not send messages to the client 
even when there are messages in the queue.
bq.  > This could be due to,
bq.  > 1. An error introduced by the patch.
bq.  > 2. The patch has unearthed a client side issue that went unnoticed 
before.
bq.  > 
bq.  > At this point I'm not sure which one it is :(.
bq.  > I can easily reproduce this issue by running against a broker with the 
patch applied. This never happens without the patch.
bq.  > 
bq.  > I have attached my test case to 
https://issues.apache.org/jira/browse/QPID-3640
bq.  > 
bq.  > The client I'm using is with some patches I've worked for QPID-3602
bq.  > I've attached those patches in a private email to you. If you have 
trouble applying those patches, I've got the client and common jar attached 
with the same email.
bq.  > You can just drop them into your classpath and run it.
bq.  > 
bq.  > I will continue to investigate this issue and will update if I come 
across something.

The client is not issuing session-completed controls correctly. There are 
un-completed messages at the point the message-stop and subsequent 
message-flows are issued, equal in number to the window size, so until these 
are completed no further messages are sent. The test cases where this is 
observed fail in the same manner against the java broker.

Regarding the number of redelivered messages, that number matches exactly the 
number of message-release commands issued by the client with the 
redelivered-flag set to 1. I.e. it is as expected from the broker side.


- Gordon


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/2880/#review3445
-----------------------------------------------------------


On 2011-11-22 17:10:06, Gordon Sim wrote:
bq.  
bq.  -----------------------------------------------------------
bq.  This is an automatically generated e-mail. To reply, visit:
bq.  https://reviews.apache.org/r/2880/
bq.  -----------------------------------------------------------
bq.  
bq.  (Updated 2011-11-22 17:10:06)
bq.  
bq.  
bq.  Review request for Alan Conway, Kenneth Giusti, Robbie Gemmell, rajith 
attapattu, and Keith Wall.
bq.  
bq.  
bq.  Summary
bq.  -------
bq.  
bq.  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).
bq.  
bq.  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.
bq.  
bq.  
bq.  This addresses bug QPID-3629.
bq.      https://issues.apache.org/jira/browse/QPID-3629
bq.  
bq.  
bq.  Diffs
bq.  -----
bq.  
bq.    /trunk/qpid/cpp/src/CMakeLists.txt 1203231 
bq.    /trunk/qpid/cpp/src/Makefile.am 1203231 
bq.    /trunk/qpid/cpp/src/qpid/broker/Credit.h PRE-CREATION 
bq.    /trunk/qpid/cpp/src/qpid/broker/Credit.cpp PRE-CREATION 
bq.    /trunk/qpid/cpp/src/qpid/broker/SemanticState.h 1203231 
bq.    /trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp 1203231 
bq.    /trunk/qpid/cpp/src/qpid/cluster/Cluster.cpp 1203231 
bq.    /trunk/qpid/cpp/src/qpid/cluster/Connection.h 1203231 
bq.    /trunk/qpid/cpp/src/qpid/cluster/Connection.cpp 1203231 
bq.    /trunk/qpid/cpp/src/qpid/cluster/UpdateClient.cpp 1203231 
bq.    /trunk/qpid/cpp/src/tests/ClientSessionTest.cpp 1203231 
bq.    /trunk/qpid/cpp/xml/cluster.xml 1203231 
bq.    /trunk/qpid/python/qpid/testlib.py 1203231 
bq.    /trunk/qpid/tests/src/py/qpid_tests/broker_0_10/message.py 1203231 
bq.  
bq.  Diff: https://reviews.apache.org/r/2880/diff
bq.  
bq.  
bq.  Testing
bq.  -------
bq.  
bq.  New test from Keith included in the patch. All existing tests pass.
bq.  
bq.  
bq.  Thanks,
bq.  
bq.  Gordon
bq.  
bq.


                
> 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:[email protected]

Reply via email to