Bug 1049498 - [amqp1.0] connection loss is not detected by session sync() call
Summary: [amqp1.0] connection loss is not detected by session sync() call
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: Development
Hardware: Unspecified
OS: Unspecified
medium
high
Target Milestone: 3.0
: ---
Assignee: Gordon Sim
QA Contact: Petr Matousek
URL:
Whiteboard:
Depends On: 1050867
Blocks: 1010399
TreeView+ depends on / blocked
 
Reported: 2014-01-07 16:05 UTC by Petr Matousek
Modified: 2014-09-24 15:09 UTC (History)
5 users (show)

Fixed In Version: qpid-cpp-0.22-35
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2014-09-24 15:09:45 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
reproducer (1.19 KB, text/x-c++src)
2014-01-07 16:06 UTC, Petr Matousek
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Apache JIRA QPID-5497 0 None None None Never
Red Hat Bugzilla 1001772 0 medium CLOSED [AMQP 1.0] support for automatic reconnect 2021-02-22 00:41:40 UTC
Red Hat Product Errata RHEA-2014:1296 0 normal SHIPPED_LIVE Red Hat Enterprise MRG Messaging 3.0 Release 2014-09-24 19:00:06 UTC

Internal Links: 1001772

Description Petr Matousek 2014-01-07 16:05:24 UTC
Description of problem:

When an amqp1.0 client is connected to the broker and the connection is lost, 
session sync call do not raise any exception and seems to be successful. Also connection isOpen() returns wrong connection state. See the attached reproducer for more details.

0-10 client reports exception immediately on sync call. Also the connection isOpen() call reports the proper connection state.

Version-Release number of selected component (if applicable):
qpid-cpp-*-0.22-30.el6

How reproducible:
100%

Steps to Reproduce:
1. start the broker
2. create connection to the broker
3. create session
4. stop the broker
5. call session.sync()
6. sync call seems to be successfully executed, no exception is raised  

ie.
1. service qpidd start
2. ./sync_client --connection-options "{protocol:amqp1.0}"
3. service qpidd stop
4. client continues execution (repeatedly calls the session sync method) even if the connection is lost

Actual results:
connection loss is not detected, sync call do not raise any exception, inappropriate connection state is reported by connection isOpen() call

Expected results:
an exception appears when the connection is lost on session sync call,
connection isOpen() call reports the proper connection state

Additional info:

Comment 1 Petr Matousek 2014-01-07 16:06:04 UTC
Created attachment 846765 [details]
reproducer

Comment 2 Gordon Sim 2014-01-21 18:32:45 UTC
Fix for Session::sync() issue applied upstream: https://svn.apache.org/r1560125

The issue with Connection::isOpen()is fixed by the backports for https://bugzilla.redhat.com/show_bug.cgi?id=1050867.

Note on reproducer, I found that with the Connection.isOpen() test in place I couldn't reproduce the exception from sync(). I tested both protocols with that test in place and with it replaced by 'true'.

Comment 4 Petr Matousek 2014-02-11 12:43:15 UTC
This issue has been fixed. Verified on rhel6.5 (x86_64, i386).

packages under test:
qpid-cpp-*-0.22-35

-> VERIFIED

Comment 5 errata-xmlrpc 2014-09-24 15:09:45 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.

http://rhn.redhat.com/errata/RHEA-2014-1296.html


Note You need to log in before you can comment on or make changes to this bug.