summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorRafael H. Schloming <rhs@apache.org>2010-04-09 11:39:38 +0000
committerRafael H. Schloming <rhs@apache.org>2010-04-09 11:39:38 +0000
commitd485a23d5e73578b68bb6e57f2360e317796dafb (patch)
tree6bb8fe904cdac758e4e0afdd7b0ccdabf662b7f3 /python
parenteea02c2d4d711c9be8a1701ce67a0e4de69fe15a (diff)
downloadqpid-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.py1
-rw-r--r--python/qpid/tests/messaging/endpoints.py20
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