summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2009-09-02 20:19:13 +0000
committerTed Ross <tross@apache.org>2009-09-02 20:19:13 +0000
commitd743ea32e78e9ab4dbd2a61f117de2e40b879a34 (patch)
tree8992584e01b0f9cabd1674f7434b837e685a9f6a
parent9f8abff662ff73e45954fec11c85edaff17367b1 (diff)
downloadqpid-python-d743ea32e78e9ab4dbd2a61f117de2e40b879a34.tar.gz
QPID-2050 - leak of bridge objects
Committed patch from Ken Giusti. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@810693 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--qpid/cpp/src/qpid/broker/Link.cpp1
-rwxr-xr-xqpid/cpp/src/tests/federation.py14
2 files changed, 14 insertions, 1 deletions
diff --git a/qpid/cpp/src/qpid/broker/Link.cpp b/qpid/cpp/src/qpid/broker/Link.cpp
index 9ce0c710bd..9a845b0339 100644
--- a/qpid/cpp/src/qpid/broker/Link.cpp
+++ b/qpid/cpp/src/qpid/broker/Link.cpp
@@ -264,7 +264,6 @@ void Link::ioThreadProcessing()
}
if (!cancellations.empty()) {
for (Bridges::iterator i = cancellations.begin(); i != cancellations.end(); ++i) {
- active.push_back(*i);
(*i)->cancel(*connection);
}
cancellations.clear();
diff --git a/qpid/cpp/src/tests/federation.py b/qpid/cpp/src/tests/federation.py
index 174932adf8..1175074093 100755
--- a/qpid/cpp/src/tests/federation.py
+++ b/qpid/cpp/src/tests/federation.py
@@ -503,6 +503,20 @@ class FederationTests(TestBase010):
self.assertEqual(result.status, 0)
result = bridge2.close()
self.assertEqual(result.status, 0)
+
+ # extra check: verify we don't leak bridge objects - keep the link
+ # around and verify the bridge count has gone to zero
+
+ attempts = 0
+ bridgeCount = len(qmf.getObjects(_class="bridge"))
+ while bridgeCount > 0:
+ attempts += 1
+ if attempts >= 5:
+ self.fail("Bridges didn't clean up")
+ return
+ sleep(1)
+ bridgeCount = len(qmf.getObjects(_class="bridge"))
+
result = link.close()
self.assertEqual(result.status, 0)