You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Marnie McCormack (JIRA)" <qp...@incubator.apache.org> on 2009/01/29 11:51:59 UTC

[jira] Created: (QPID-1621) Flow control fails to release credit when unacknowledge message count exceeds the low water mark

Flow control fails to release credit when unacknowledge message count exceeds the low water mark
------------------------------------------------------------------------------------------------

                 Key: QPID-1621
                 URL: https://issues.apache.org/jira/browse/QPID-1621
             Project: Qpid
          Issue Type: Bug
          Components: Java Broker
    Affects Versions: M4, M3
            Reporter: Marnie McCormack
            Assignee: Aidan Skinner
             Fix For: M5


Summary: 
If we receive more than 2500 msgs on a transacted session then we cannot recover that credit and will block at the prefetch limit of 5000. 

Acknowledging at msg 2501 demonstrates this issue (of being limited to 5000 mgs) but at <2500 then we are able to receive as many messages as are available, beyond 5000. 

This issue has been seen on Qpid M3, further extraction of a test case and testing on M4 is required. 

The test should also adjust the low water mark to identify if that is part of the issue. 

Workaround: 
To prevent client starvation ensure that clients never have more than the low water mark (2500 default) of unacked messages. 


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-1621) Flow control fails to release credit when unacknowledge message count exceeds the low water mark

Posted by "Aidan Skinner (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-1621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aidan Skinner updated QPID-1621:
--------------------------------

        Fix Version/s:     (was: M5)
    Affects Version/s: M5

> Flow control fails to release credit when unacknowledge message count exceeds the low water mark
> ------------------------------------------------------------------------------------------------
>
>                 Key: QPID-1621
>                 URL: https://issues.apache.org/jira/browse/QPID-1621
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M3, M4, M5
>            Reporter: Marnie McCormack
>            Assignee: Aidan Skinner
>         Attachments: 0001-QPID-1621-add-testHighLowStarvation-to-test-this-is.patch
>
>
> Summary: 
> If we receive more than 2500 msgs on a transacted session then we cannot recover that credit and will block at the prefetch limit of 5000. 
> Acknowledging at msg 2501 demonstrates this issue (of being limited to 5000 mgs) but at <2500 then we are able to receive as many messages as are available, beyond 5000. 
> This issue has been seen on Qpid M3, further extraction of a test case and testing on M4 is required. 
> The test should also adjust the low water mark to identify if that is part of the issue. 
> Workaround: 
> To prevent client starvation ensure that clients never have more than the low water mark (2500 default) of unacked messages. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-1621) Flow control fails to release credit when unacknowledge message count exceeds the low water mark

Posted by "Martin Ritchie (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-1621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Ritchie updated QPID-1621:
---------------------------------

    Affects Version/s:     (was: 0.5)
                           (was: M4)
                           (was: M3)
                       M2.1

This particular issue was actually related to M2.1 where the broker decided that there was a low water mark which affects ALL ack modes other than NO_ACK.

The broker would stop sending messages when the High (5000 default was reached) and then would not start sending until it was < low water mark (5000 / 2 by default) 

I'm guessing the < check was erroneous, this is unlike to affect anything post M3 as the _prefetch_LowerWaterMark has been removed.

> Flow control fails to release credit when unacknowledge message count exceeds the low water mark
> ------------------------------------------------------------------------------------------------
>
>                 Key: QPID-1621
>                 URL: https://issues.apache.org/jira/browse/QPID-1621
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M2.1
>            Reporter: Marnie McCormack
>            Assignee: Aidan Skinner
>         Attachments: 0001-QPID-1621-add-testHighLowStarvation-to-test-this-is.patch
>
>
> Summary: 
> If we receive more than 2500 msgs on a transacted session then we cannot recover that credit and will block at the prefetch limit of 5000. 
> Acknowledging at msg 2501 demonstrates this issue (of being limited to 5000 mgs) but at <2500 then we are able to receive as many messages as are available, beyond 5000. 
> This issue has been seen on Qpid M3, further extraction of a test case and testing on M4 is required. 
> The test should also adjust the low water mark to identify if that is part of the issue. 
> Workaround: 
> To prevent client starvation ensure that clients never have more than the low water mark (2500 default) of unacked messages. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-1621) Flow control fails to release credit when unacknowledge message count exceeds the low water mark

Posted by "Rob Godfrey (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-1621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721185#action_12721185 ] 

Rob Godfrey commented on QPID-1621:
-----------------------------------

The attached test is (I believe) incorrect.

For a start the assumption that low watermark = high watermark / 2 doesn't hold... 

By default getPrefetchLow() == getPrefetchHigh()

[Incidentally - outside of the NOACK mode there is no concept of watermarking... there is a single prefetch number sent in a BasicQos method]

Thus the test actually tries to take max_prefetch + 1 messages before commiting.

In this case the last attempted receive in the first loop timesout and you get back a null.

The fact the message is null then means the second loop is essentially skipped.

Looking at the log output for the test it is clear that after the commit, the broker sends all the messages to the broker.

Fixing the test so that the first loop attempts to receive < than the prefetch value results in the test passing.


> Flow control fails to release credit when unacknowledge message count exceeds the low water mark
> ------------------------------------------------------------------------------------------------
>
>                 Key: QPID-1621
>                 URL: https://issues.apache.org/jira/browse/QPID-1621
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M3, M4, 0.5
>            Reporter: Marnie McCormack
>            Assignee: Aidan Skinner
>         Attachments: 0001-QPID-1621-add-testHighLowStarvation-to-test-this-is.patch
>
>
> Summary: 
> If we receive more than 2500 msgs on a transacted session then we cannot recover that credit and will block at the prefetch limit of 5000. 
> Acknowledging at msg 2501 demonstrates this issue (of being limited to 5000 mgs) but at <2500 then we are able to receive as many messages as are available, beyond 5000. 
> This issue has been seen on Qpid M3, further extraction of a test case and testing on M4 is required. 
> The test should also adjust the low water mark to identify if that is part of the issue. 
> Workaround: 
> To prevent client starvation ensure that clients never have more than the low water mark (2500 default) of unacked messages. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Commented: (QPID-1621) Flow control fails to release credit when unacknowledge message count exceeds the low water mark

Posted by "Aidan Skinner (JIRA)" <qp...@incubator.apache.org>.
    [ https://issues.apache.org/jira/browse/QPID-1621?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12672664#action_12672664 ] 

Aidan Skinner commented on QPID-1621:
-------------------------------------

The test for this looks like:

A: send 5001 messages (receive high watermark+1)

B: recieve 2501 (low watermark +1)
commit
while (receive != null)
  commit

no messages after 5000 will arrive

> Flow control fails to release credit when unacknowledge message count exceeds the low water mark
> ------------------------------------------------------------------------------------------------
>
>                 Key: QPID-1621
>                 URL: https://issues.apache.org/jira/browse/QPID-1621
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M3, M4
>            Reporter: Marnie McCormack
>            Assignee: Aidan Skinner
>             Fix For: M5
>
>
> Summary: 
> If we receive more than 2500 msgs on a transacted session then we cannot recover that credit and will block at the prefetch limit of 5000. 
> Acknowledging at msg 2501 demonstrates this issue (of being limited to 5000 mgs) but at <2500 then we are able to receive as many messages as are available, beyond 5000. 
> This issue has been seen on Qpid M3, further extraction of a test case and testing on M4 is required. 
> The test should also adjust the low water mark to identify if that is part of the issue. 
> Workaround: 
> To prevent client starvation ensure that clients never have more than the low water mark (2500 default) of unacked messages. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


[jira] Updated: (QPID-1621) Flow control fails to release credit when unacknowledge message count exceeds the low water mark

Posted by "Aidan Skinner (JIRA)" <qp...@incubator.apache.org>.
     [ https://issues.apache.org/jira/browse/QPID-1621?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Aidan Skinner updated QPID-1621:
--------------------------------

    Attachment: 0001-QPID-1621-add-testHighLowStarvation-to-test-this-is.patch

test case. passes against C++ broker, fails against Java broker.

> Flow control fails to release credit when unacknowledge message count exceeds the low water mark
> ------------------------------------------------------------------------------------------------
>
>                 Key: QPID-1621
>                 URL: https://issues.apache.org/jira/browse/QPID-1621
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Broker
>    Affects Versions: M3, M4
>            Reporter: Marnie McCormack
>            Assignee: Aidan Skinner
>             Fix For: M5
>
>         Attachments: 0001-QPID-1621-add-testHighLowStarvation-to-test-this-is.patch
>
>
> Summary: 
> If we receive more than 2500 msgs on a transacted session then we cannot recover that credit and will block at the prefetch limit of 5000. 
> Acknowledging at msg 2501 demonstrates this issue (of being limited to 5000 mgs) but at <2500 then we are able to receive as many messages as are available, beyond 5000. 
> This issue has been seen on Qpid M3, further extraction of a test case and testing on M4 is required. 
> The test should also adjust the low water mark to identify if that is part of the issue. 
> Workaround: 
> To prevent client starvation ensure that clients never have more than the low water mark (2500 default) of unacked messages. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org