Repository: qpid-python Updated Branches: refs/heads/master bc3605bc8 -> 81f09ae33
QPID-7429 [Python Client 0-8..0-91] Prevent Client from leaking threads when connection is closed remotely Project: http://git-wip-us.apache.org/repos/asf/qpid-python/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-python/commit/81f09ae3 Tree: http://git-wip-us.apache.org/repos/asf/qpid-python/tree/81f09ae3 Diff: http://git-wip-us.apache.org/repos/asf/qpid-python/diff/81f09ae3 Branch: refs/heads/master Commit: 81f09ae33839b7048a08bdf5b7405d64a1446b27 Parents: bc3605b Author: Alex Rudyy <[email protected]> Authored: Wed Sep 14 16:13:08 2016 +0100 Committer: Alex Rudyy <[email protected]> Committed: Wed Sep 14 16:13:08 2016 +0100 ---------------------------------------------------------------------- qpid/peer.py | 7 ++++--- qpid/queue.py | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-python/blob/81f09ae3/qpid/peer.py ---------------------------------------------------------------------- diff --git a/qpid/peer.py b/qpid/peer.py index 3025c2e..2ff25c0 100644 --- a/qpid/peer.py +++ b/qpid/peer.py @@ -105,7 +105,7 @@ class Peer: try: frame = self.conn.read() except EOF, e: - self.work.close() + self.work.close("Connection lost") break ch = self.channel(frame.channel) ch.receive(frame, self.work) @@ -121,6 +121,7 @@ class Peer: self.delegate.closed(reason) for ch in self.channels.values(): ch.closed(reason) + self.outgoing.close() def writer(self): try: @@ -149,8 +150,8 @@ class Peer: content = None self.delegate(channel, Message(channel, frame, content)) - except QueueClosed: - self.closed("worker closed") + except QueueClosed, e: + self.closed(str(e) or "worker closed") except: self.fatal() http://git-wip-us.apache.org/repos/asf/qpid-python/blob/81f09ae3/qpid/queue.py ---------------------------------------------------------------------- diff --git a/qpid/queue.py b/qpid/queue.py index 63a7684..100bb0b 100644 --- a/qpid/queue.py +++ b/qpid/queue.py @@ -40,7 +40,8 @@ class Queue(BaseQueue): self.thread = None def close(self, error = None): - self.error = error + if error and self.error is None: + self.error = error self.put(Queue.END) if self.thread is not None: self.thread.join() --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
