diff options
| author | Alan Conway <aconway@apache.org> | 2013-11-20 18:02:25 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2013-11-20 18:02:25 +0000 |
| commit | d33073b26b692835e0f43d2e02f2224dd8f30d70 (patch) | |
| tree | b0fcea44a0061204e27310c6f1fcdd7806a36dbf /qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb | |
| parent | 25987555e19e40908e5fad21c4aadbc73c800ef8 (diff) | |
| download | qpid-python-d33073b26b692835e0f43d2e02f2224dd8f30d70.tar.gz | |
QPID-5366: qpid segfaults in qpid::ha::BrokerReplicator::disconnected
Fix for a race condition: previously, BrokerReplicator created a separate
ConnectionObserver object to forward connection events to it. However the
Observers locking is such that it is possible for an event to arrive *after*
calling Observers::remove (Observers copies the pointers and delivers events
outside its lock.) This meant that it was possible for a call to
BrokerReplicator::disconnect to be made after the BrokerReplicator was deleted.
The fix is to combine BrokerReplicator and BrokerReplicator::ConnectionObserver
into a single object with one lifetime that will last until it is removed from
both the ExchangeRegistry and the ConnectionObservers.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1543893 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb')
0 files changed, 0 insertions, 0 deletions
