Bug 488806
Summary: | SubscriptionManager::get() closes dispatch queue unexpectedly | ||||||
---|---|---|---|---|---|---|---|
Product: | Red Hat Enterprise MRG | Reporter: | Gordon Sim <gsim> | ||||
Component: | qpid-cpp | Assignee: | Gordon Sim <gsim> | ||||
Status: | CLOSED ERRATA | QA Contact: | Frantisek Reznicek <freznice> | ||||
Severity: | medium | Docs Contact: | |||||
Priority: | high | ||||||
Version: | 1.1 | CC: | esammons | ||||
Target Milestone: | 1.1.1 | ||||||
Target Release: | --- | ||||||
Hardware: | All | ||||||
OS: | Linux | ||||||
Whiteboard: | |||||||
Fixed In Version: | Doc Type: | Bug Fix | |||||
Doc Text: | Story Points: | --- | |||||
Clone Of: | Environment: | ||||||
Last Closed: | 2009-04-21 16:18:00 UTC | Type: | --- | ||||
Regression: | --- | Mount Type: | --- | ||||
Documentation: | --- | CRM: | |||||
Verified Versions: | Category: | --- | |||||
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
Cloudforms Team: | --- | Target Upstream Version: | |||||
Embargoed: | |||||||
Attachments: |
|
Fixed by r750622. The issue has been fixed, validated on RHEL 4.7 / 5.2 / 5.3, i386 / x86_64 on packages: qpid*-0.5.752581-1.el5. ->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/RHEA-2009-0434.html |
Created attachment 334193 [details] reproducer If SubscriptionManager::get() is invoked with no subscriptions in place, the dispatch queue is closed and a subsequent SubscriptionManager::run() returns without dispatching. Attached reproducer is a modified versio of the direct examples listener. Use the declare_queues and direct_producer from that example to create the queue and publish some messages. Then run this modified listener. The expected result is that the first message is pulled of, then the rest are received via the listener. However the initial get() is causing the dispatcher to close the dispatch queue even though dispatching has not yet begun. Therefore only the first message is printed (from the get()) and run returns immediately.