/[Apache-SVN]
ViewVC logotype

Revision 1543893


Jump to revision: Previous Next
Author: aconway
Date: Wed Nov 20 18:02:25 2013 UTC (10 years, 4 months ago)
Changed paths: 2
Log Message:
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.

Changed paths

Path Details
Directoryqpid/trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp modified , text changed
Directoryqpid/trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.h modified , text changed

infrastructure at apache.org
ViewVC Help
Powered by ViewVC 1.1.26