Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
0.30
-
None
-
None
-
Ubuntu 10.04 (python 2.6.5) and 12.04 (python 2.7.3). QPID is compiled from source on both platforms, with proton 0.8.
Description
If a receiver is created but causes an error (no such queue, malformed address, etc), the session.close() can freeze in certain circumstances. Example code:
import qpid.messaging as m class Foo: def __init__(self): self.conn = m.Connection("127.0.0.1") self.conn.open() self.session = self.c.session() try: self.r = self.s.receiver("sdklfdsdls") except: print "no such queue" def __del__(self): self.session.close() f = Foo()
The above sequence does not stall if the code is simply put in a function (or _del_ is merged into _init_).
Note that providing session.close() with a timeout prevents the freeze, but of course can cause data loss if the stall was legit.