[ 
https://issues.apache.org/jira/browse/QPID-7505?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Keith Wall updated QPID-7505:
-----------------------------
    Description: 
As part of changes made for QPID-1642 the functionality of 
BasicMessageConsumer_0_10#receive(long) was changed to force message delivery 
by sending message.flush when there is no message present locally in a consumer 
queue. The message.flush is followed by the message.flow to restore the credit 
as  message.flush forces the sender to exhaust his credit supply making it zero 
when message.flush command completes. However, no sync is sent after sending 
message flow. As result, in some cases the credit is not restored promptly 
impacting various messaging scenarios when message is published immediately 
after receive() is called but the published message is delivered to another 
consumer because credits are not restored after message.flush

This problem was detected by the sporadic failure of ConsumerPriorityTest on 
the 0-10 path.

  was:As part of changes made for QPID-1642 the functionality of 
BasicMessageConsumer_0_10#receive(long) was changed to force message delivery 
by sending message.flush when there is no message present locally in a consumer 
queue. The message.flush is followed by the message.flow to restore the credit 
as  message.flush forces the sender to exhaust his credit supply making it zero 
when message.flush command completes. However, no sync is sent after sending 
message flow. As result, in some cases the credit is not restored promptly 
impacting various messaging scenarios when message is published immediately 
after receive() is called but the published message is delivered to another 
consumer because credits are not restored after message.flush


> [Java Client,0-10] The consumer credits might not be restored by the time 
> when MessageConsumer#receive() returns in situations when there is no message 
> prefetched locally and consumer is sending message.flush/flow as part of 
> receive() to force delivery
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-7505
>                 URL: https://issues.apache.org/jira/browse/QPID-7505
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.18, 0.20, 0.22, 0.24, 0.26, 0.28, 0.30, 0.32, 
> qpid-java-6.0, qpid-java-6.0.1, qpid-java-6.0.2, qpid-java-6.0.3, 
> qpid-java-6.0.4, qpid-java-6.0.5, qpid-java-6.1
>            Reporter: Alex Rudyy
>            Assignee: Keith Wall
>             Fix For: qpid-java-6.0.2
>
>
> As part of changes made for QPID-1642 the functionality of 
> BasicMessageConsumer_0_10#receive(long) was changed to force message delivery 
> by sending message.flush when there is no message present locally in a 
> consumer queue. The message.flush is followed by the message.flow to restore 
> the credit as  message.flush forces the sender to exhaust his credit supply 
> making it zero when message.flush command completes. However, no sync is sent 
> after sending message flow. As result, in some cases the credit is not 
> restored promptly impacting various messaging scenarios when message is 
> published immediately after receive() is called but the published message is 
> delivered to another consumer because credits are not restored after 
> message.flush
> This problem was detected by the sporadic failure of ConsumerPriorityTest on 
> the 0-10 path.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to