diff options
author | Ted Ross <tross@apache.org> | 2009-09-02 20:19:13 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2009-09-02 20:19:13 +0000 |
commit | d743ea32e78e9ab4dbd2a61f117de2e40b879a34 (patch) | |
tree | 8992584e01b0f9cabd1674f7434b837e685a9f6a | |
parent | 9f8abff662ff73e45954fec11c85edaff17367b1 (diff) | |
download | qpid-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.cpp | 1 | ||||
-rwxr-xr-x | qpid/cpp/src/tests/federation.py | 14 |
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) |