Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 657523

Summary: .NET example clients does not exit cleanly (warning Ignoring frame while closing connection)
Product: Red Hat Enterprise MRG Reporter: Frantisek Reznicek <freznice>
Component: qpid-sdkAssignee: Chuck Rolke <crolke>
Status: CLOSED ERRATA QA Contact: Petra Svobodová <psvobodo>
Severity: medium Docs Contact:
Priority: medium    
Version: DevelopmentCC: esammons, gsim, iboverma, jneedle, tross
Target Milestone: 2.0   
Target Release: ---   
Hardware: Unspecified   
OS: Windows   
Whiteboard:
Fixed In Version: 1.3.8.1 Doc Type: Bug Fix
Doc Text:
Cause: Spout program sent messages but did not wait for the sending to complete before closing session. Consequence: Sometimes not all the messages processed by Spout's sender.Send() are received by the session receiver. Fix: Call function session.Sync() before closing the session. Result: Receiver receives all messages sent.
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-06-23 15:47:01 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:

Description Frantisek Reznicek 2010-11-26 10:48:23 UTC
Description of problem:

.NET examples (for instance csharp.example.spout) does not exit cleanly.

Above mentioned csharp.example.spout very frequently exit with one or more following warning[s]:
2010-11-26 11:30:31 warning Ignoring frame while closing connection: Frame[BEbe; channel=1; {SessionDetachedBody: name=; code=3; }]

On the broker side there is seen following error:

2010-11-26 05:31:38 debug Exception constructed: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:38 error Channel exception: not-attached: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)

The c++ spout example does not suffer from the issue, so it seems to be .NET client library specific problem.

Tested primarily on Win xp x64 <-> RHEL4 i386.


Version-Release number of selected component (if applicable):
qpid-cpp-winsdk-1.3.0.18.2-*.zip

How reproducible:
80% (more rapidly on durable addresses)

Steps to Reproduce:
1. extract winsdk
2. compile c++ / .NET examples
3. issue the command from Additional info section and check broker log
  
Actual results:
.NET client does not exit cleanly

Expected results:
.NET client should exit cleanly


Additional info:

Client side:
~~~~~~~~~~~~
\qpid\bin\csharp.example.spout --broker mrg-qe-07.lab.eng.brq.redhat.com:5672\
  --content "Hi!fgkfddfsd"  --count 80 \
  "xyzz; {create:sender, delete: receiver, node: {durable:True}}"
2010-11-26 11:30:31 warning Ignoring frame while closing connection: Frame[BEbe; channel=1; {SessionDetachedBody: name=; code=3; }]
2010-11-26 11:30:31 warning Ignoring frame while closing connection: Frame[BEbe; channel=1; {SessionDetachedBody: name=; code=3; }]
2010-11-26 11:30:31 warning Ignoring frame while closing connection: Frame[BEbe; channel=1; {SessionDetachedBody: name=; code=3; }]

broker side (rhel4 i386):
~~~~~~~~~~~~~~~~~~~~~~~~~
2010-11-26 05:31:37 debug RECV [10.34.27.200:1942] INIT(0-10)
2010-11-26 05:31:37 debug SASL: No Authentication Performed
2010-11-26 05:31:37 debug SessionState::SessionState .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: 0x8a485e8
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: attached on broker.
2010-11-26 05:31:37 debug Attached channel 1 to .9a860ba1-5d32-4c90-98a7-a13ca5af5c15
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: ready to send, activating output.
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: receiver command-point set to: (0+0)
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: receiver marked completed: 0 incomplete: { } unknown-completed: { [0,0] }
2010-11-26 05:31:37 debug Exception constructed: Exchange not found: xyzz (qpid/broker/ExchangeRegistry.cpp:92)
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: receiver marked completed: 1 incomplete: { } unknown-completed: { [0,1] }
2010-11-26 05:31:37 notice Journal "xyzz": Created
2010-11-26 05:31:37 debug Journal "xyzz": Journal directory = "/tmp/dd/rhm/jrnl/0012/xyzz/"; Base file name = "JournalData"
2010-11-26 05:31:37 debug Journal "xyzz": Initialize; num_jfiles=8 jfsize_sblks=3072 wcache_pgsize_sblks=64 wcache_num_pages=32
2010-11-26 05:31:37 debug Journal "xyzz": Initialization complete
2010-11-26 05:31:37 info Queue "xyzz": Policy created: type=reject; maxCount=0; maxSize=104857600
2010-11-26 05:31:37 debug Configured queue xyzz with no-local=0
2010-11-26 05:31:37 debug Configured queue xyzz with qpid.trace.id='' and qpid.trace.exclude='' i.e. 0 elements
2010-11-26 05:31:37 debug Bind key [xyzz] to queue xyzz (origin=)
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: receiver marked completed: 2 incomplete: { } unknown-completed: { [0,2] }
2010-11-26 05:31:37 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: receiver marked completed: 3 incomplete: { } unknown-completed: { [0,3] }
...
2010-11-26 05:31:38 debug Message 0x8a65660 enqueued on xyzz
2010-11-26 05:31:38 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: receiver marked completed: 83 incomplete: { } unknown-completed: { [42,83] }
2010-11-26 05:31:38 debug .9a860ba1-5d32-4c90-98a7-a13ca5af5c15: detached on broker.
2010-11-26 05:31:38 debug Exception constructed: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:38 error Channel exception: not-attached: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:38 debug Exception constructed: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:38 error Channel exception: not-attached: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:38 debug Exception constructed: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:38 error Channel exception: not-attached: Channel 1 is not attached (qpid/amqp_0_10/SessionHandler.cpp:39)
2010-11-26 05:31:42 debug periodic update  management snapshot: packages: 2 objects: 15 new objects: 0

Comment 1 Frantisek Reznicek 2010-11-30 10:07:59 UTC
Just an update the qpid .NET kit qpid-cpp-winsdk-1.3.0.24-*.zip still suffers from the above issue.

Comment 2 Chuck Rolke 2010-11-30 21:26:58 UTC
Spout.cs is missing a line "session.Sync();" between when the transmission blast is done and the connection is closed. 

Fixed in r1040778.

Comment 3 Frantisek Reznicek 2010-12-01 10:41:36 UTC
I can confirm that session.Sync() call fixes the issue.

The r1040778 fixes just spout example, but there are couple of other sender examples which has to be changed as well.

csharp.map.sender.cs:128
csharp.map.callback.sender.cs:160
csharp.example.server.cs:47
csharp.example.client.cs:57
csharp.direct.sender.cs:66

Comment 4 Chuck Rolke 2010-12-01 20:01:16 UTC
r1041141 adds the session.Sync() calls.

Comment 6 Chuck Rolke 2011-01-14 16:59:11 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause: Spout program sent messages but did not wait for the sending to complete before closing session.

Consequence: Sometimes not all the messages processed by Spout's sender.Send() are received by the session receiver.

Fix: Call function session.Sync() before closing the session.

Result: Receiver receives all messages sent.

Comment 8 Petra Svobodová 2011-05-06 09:09:15 UTC
The session.Sync() statements were added, defect does not repeat any more (tested packages: qpid-cpp-*-2.0.0.4)

--> VERIFIED

Comment 9 errata-xmlrpc 2011-06-23 15:47:01 UTC
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-2011-0890.html