Bug 612592 - possible message loss or incorrect synchronization around flush
possible message loss or incorrect synchronization around flush
Status: CLOSED NOTABUG
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
Development
All Linux
low Severity medium
: ---
: ---
Assigned To: messaging-bugs
MRG Quality Engineering
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2010-07-08 11:14 EDT by Rafael H. Schloming
Modified: 2014-12-01 18:14 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-07-08 11:39:55 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
Excerpt from the broker log illustrating the problem. (2.19 KB, text/plain)
2010-07-08 11:14 EDT, Rafael H. Schloming
no flags Details

  None (edit)
Description Rafael H. Schloming 2010-07-08 11:14:35 EDT
Created attachment 430389 [details]
Excerpt from the broker log illustrating the problem.

Description of problem:

From the broker log it would appear that a message is either being lost or the broker is incorrectly reporting a queue as empty.

How reproducible:

This is quite difficult to reproduce.

Steps to Reproduce:
1. Apply the following diff:

Index: qpid/tests/messaging/message.py
===================================================================
--- qpid/tests/messaging/message.py	(revision 960899)
+++ qpid/tests/messaging/message.py	(working copy)
@@ -65,10 +65,11 @@
     return self.ssn.receiver(ECHO_Q)
 
   def check(self, msg):
-    self.snd.send(msg)
-    echo = self.rcv.fetch(0)
-    self.assertEcho(msg, echo)
-    self.ssn.acknowledge(echo)
+    for i in range(1000):
+       self.snd.send(msg)
+       echo = self.rcv.fetch(0)
+       self.assertEcho(msg, echo)
+       self.ssn.acknowledge(echo)
 
   def testStringContent(self):
     self.check(Message("string"))

2. Run the broker with --auth no and whatever logging options are desired.
3. From the patched python directory run:

bash# while ./qpid-python-test -t -Ddelay=0.1 *.MessageEchoTests.* -v DEBUG -c qpid.messaging.io.ops > log.txt; do true; done

4. Wait until the above fails. (This may take many hours.)

Actual results:

At some point the test will fail and the loop will exit and the broker and client logs can be examined.

Expected results:

The test should run indefinitely.
Comment 1 Gordon Sim 2010-07-08 11:39:55 EDT
Turns out the ttl on the message meant the message expired before it could be delivered.

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