Bug 1147968

Summary: Session.nextReceiver() with IMMEDIATE duration does not raise exception when connection is closed
Product: Red Hat Enterprise MRG Reporter: Pavel Moravec <pmoravec>
Component: qpid-cppAssignee: Gordon Sim <gsim>
Status: CLOSED ERRATA QA Contact: Jitka Kocnova <jkocnova>
Severity: high Docs Contact:
Priority: high    
Version: 2.5CC: esammons, jkocnova, jross, mcressma, pematous, tross, zkraus
Target Milestone: 2.5.5Keywords: TestCaseProvided
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: qpid-cpp-0.18-33 Doc Type: Bug Fix
Doc Text:
It was discovered that if Session.nextReceiver() with IMMEDIATE duration was called while the connection to the broker was being lost (due to a network issue, for example) , the method could fail to raise the expected MessagingException. This could cause a client application to not be notified that the connection has shut down, so the application can fail to reconnect. Session.nextReceiver now reliably returns the desired exception if the connection is closed. The client application gets the exception and can take appropriate action.
Story Points: ---
Clone Of:
: 1147977 (view as bug list) Environment:
Last Closed: 2014-10-22 16:34:39 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1140368, 1140369, 1147977    
Attachments:
Description Flags
Reproducer none

Description Pavel Moravec 2014-09-30 12:30:28 UTC
Description of problem:
Invoking Session.nextReceiver() with IMMEDIATE duration when the broker is just dropping the connection (i.e. during its shutdown), the method does not raise MessagingException on faster machines (some timing is crucial).


Version-Release number of selected component (if applicable):
0.18-31


How reproducible:
100% (on faster machines)


Steps to Reproduce:
1. Compile attached program. Dont find a logic in the tight loop, it just serves as a reproducer.

2. service qpidd start; qpid-config add queue q
3. ./qpid-read <broker> q 10 &
4. service qpidd stop
5. check qpid-read process


Actual results:
qpid-read should be still running, no exception caught


Expected results:
MessagingException is raised, qpid-read terminated


Additional info:

Comment 1 Pavel Moravec 2014-09-30 12:32:33 UTC
Created attachment 942689 [details]
Reproducer

Comment 6 Jared MORGAN 2014-10-02 00:37:49 UTC
Hey Mike

I got an Errata advisory update for this and noted this bug was added.

Would this require some CCFR to be provided, and the MRG 2 Release Notes doc subsequently updated?

Cheers

J

Comment 7 Mike Cressman 2014-10-02 01:44:09 UTC
Doc text updated.  Please add this bug to the Release Notes for the 2.5.5 release.

Comment 9 Jitka Kocnova 2014-10-17 13:09:28 UTC
This issue is fixed.

Verified OS: RHEL 7 x86_64, RHEL 6 x86_64, i386; RHEL 5 x86_64, i386

Packages:

qpid-cpp-client-devel-docs-0.18-35 
qpid-cpp-client-devel-0.18-35 
qpid-cpp-client-ssl-0.18-35
qpid-cpp-client-0.18-35
qpid-cpp-debuginfo-0.18-35 
qpid-cpp-server-devel-0.18-35  
qpid-cpp-server-ssl-0.18-35
qpid-cpp-server-store-0.18-35 
qpid-cpp-server-xml-0.18-35
qpid-cpp-server-0.18-35 
qpid-tools-0.18-10

-> VERIFIED

Comment 11 errata-xmlrpc 2014-10-22 16:34:39 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHBA-2014-1682.html