Bug 612592 - possible message loss or incorrect synchronization around flush
Summary: possible message loss or incorrect synchronization around flush
Status: CLOSED NOTABUG
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: Development
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
: ---
Assignee: messaging-bugs
QA Contact: MRG Quality Engineering
URL:
Whiteboard:
Keywords:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-07-08 15:14 UTC by Rafael H. Schloming
Modified: 2014-12-01 23:14 UTC (History)
2 users (show)

(edit)
Clone Of:
(edit)
Last Closed: 2010-07-08 15:39:55 UTC


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

Description Rafael H. Schloming 2010-07-08 15:14:35 UTC
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 15:39:55 UTC
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.