When invoking SubscriptionManager::get() with a non-zero timeout the expectation is that if a message is not on the queue at that time the thread will block for the desired time waiting for one to arrive. However a flush is issued before the wait starts. This means that if the queue is empty at that point no message will be sent but the credit will be set to zero and so when a message does arrive it won't get delivered.
Fix applied on trunk (r679739) and qpid.0-10(r679748).
RHTS test (MRG_Messaging/qpid_localqueue_timeout_bz453599) implements SubscriptionManager::get() test with non zero timeout and proves that SubscriptionManager::get() now correctly waits. (ON_QA->VERIFIED)
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHBA-2008-0640.html