qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Conway" <acon...@redhat.com>
Subject Re: Review Request: C++ Broker normalize exchange locking and add RWlock for each
Date Mon, 11 Mar 2013 18:51:50 GMT


> On March 11, 2013, 2:54 p.m., Chug Rolke wrote:
> > trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp, line 218
> > <https://reviews.apache.org/r/9698/diff/2/?file=268390#file268390line218>
> >
> >     Up in Broker.cpp the mgmt::rebind action is being processed. It iterated the
bindings on a particular queue, found one, and callled this function. If the binding disappeared
between seeing it in the queue and processing it here I think it's best to just return.

Yes, fair enough. If we have a concurrent delete+rebind then we could logically expect get
either outcome: new binding or no binding. So doing the simpler thing (no binding) is a good
choice.


- Alan


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/9698/#review17692
-----------------------------------------------------------


On March 8, 2013, 7:42 p.m., Chug Rolke wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/9698/
> -----------------------------------------------------------
> 
> (Updated March 8, 2013, 7:42 p.m.)
> 
> 
> Review request for qpid, Andrew Stitcher, Alan Conway, Gordon Sim, and Ted Ross.
> 
> 
> Description
> -------
> 
> * Move Topic exchange RWlock up into the parent exchange class and call it 'bindingLock'.
> 
> * In Topic exchange take RWlock out of the derived class and use the parent's lock.
> * In Direct and Headers exchanges change the semantics of the current lock to use the
Topic exchange pattern.
> * In FanOut exchange add locks at the same places as in the other exchanges except only
use Rlock. FanOut receives the locking it needs from the CopyOnWriteArray and does not need
anything else. By adding only Rlocks threads will never block in the normal case. However,
the Rlocks are the hooks that the new application will need to freeze the exchange when that
app takes out the Wlock.
> 
> 
> This addresses bug QPID-4616.
>     https://issues.apache.org/jira/browse/QPID-4616
> 
> 
> Diffs
> -----
> 
>   trunk/qpid/cpp/src/qpid/broker/DirectExchange.h 1454111 
>   trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/broker/Exchange.h 1454111 
>   trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h 1454111 
>   trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h 1454111 
>   trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/broker/Link.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/broker/TopicExchange.h 1454111 
>   trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.h 1454111 
>   trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/ha/QueueReplicator.h 1454111 
>   trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp 1454111 
>   trunk/qpid/cpp/src/qpid/sys/CopyOnWriteArray.h 1454111 
>   trunk/qpid/cpp/src/qpid/xml/XmlExchange.h 1454111 
>   trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp 1454111 
> 
> Diff: https://reviews.apache.org/r/9698/diff/
> 
> 
> Testing
> -------
> 
> Passes normal self tests
> 
> 
> Thanks,
> 
> Chug Rolke
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message