diff options
| author | Rafael H. Schloming <rhs@apache.org> | 2010-04-09 11:39:38 +0000 |
|---|---|---|
| committer | Rafael H. Schloming <rhs@apache.org> | 2010-04-09 11:39:38 +0000 |
| commit | d485a23d5e73578b68bb6e57f2360e317796dafb (patch) | |
| tree | 6bb8fe904cdac758e4e0afdd7b0ccdabf662b7f3 /python | |
| parent | eea02c2d4d711c9be8a1701ce67a0e4de69fe15a (diff) | |
| download | qpid-python-d485a23d5e73578b68bb6e57f2360e317796dafb.tar.gz | |
cleanup waiter pipes on error
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@932362 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'python')
| -rw-r--r-- | python/qpid/messaging/endpoints.py | 1 | ||||
| -rw-r--r-- | python/qpid/tests/messaging/endpoints.py | 20 |
2 files changed, 21 insertions, 0 deletions
diff --git a/python/qpid/messaging/endpoints.py b/python/qpid/messaging/endpoints.py index 17807f20d2..be657173fe 100644 --- a/python/qpid/messaging/endpoints.py +++ b/python/qpid/messaging/endpoints.py @@ -174,6 +174,7 @@ class Connection: def _check_error(self, exc=ConnectionError): if self.error: + self._condition.gc() raise exc(*self.error) def _ewait(self, predicate, timeout=None, exc=ConnectionError): diff --git a/python/qpid/tests/messaging/endpoints.py b/python/qpid/tests/messaging/endpoints.py index 26c7ff25f4..320f88aa3b 100644 --- a/python/qpid/tests/messaging/endpoints.py +++ b/python/qpid/tests/messaging/endpoints.py @@ -67,6 +67,26 @@ class SetupTests(Base): while fds: os.close(fds.pop()) + def testOpenFailResourceLeaks(self): + fds = self.use_fds() + try: + for i in range(32): + if fds: os.close(fds.pop()) + for i in xrange(64): + conn = Connection("localhost:0", **self.connection_options()) + # XXX: we need to force a waiter to be created for this test + # to work + conn._lock.acquire() + conn._wait(lambda: False, timeout=0.001) + conn._lock.release() + try: + conn.open() + except ConnectError, e: + pass + finally: + while fds: + os.close(fds.pop()) + def testReconnect(self): options = self.connection_options() import socket |
