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: QPID-4394: HA QMF events out of order
Date Thu, 01 Nov 2012 16:37:20 GMT


> On Nov. 1, 2012, 8:41 a.m., Gordon Sim wrote:
> > /trunk/qpid/cpp/src/qpid/management/ManagementAgent.h, line 347
> > <https://reviews.apache.org/r/7814/diff/1/?file=183515#file183515line347>
> >
> >     Remind me why we can't push the ManagementEvent object itself onto the PollableQueue,
and move all the logic of raiseEvent onto another thread?

ManagementEvent subclasses don't contain any data, they just have reference members plus they
are polymorphic so they can't be passed by value. To make this work you need to change the
ManangementObject subclasses to contain values, and pass them by shared_ptr. I started to
do it but backed off because it breaks the ABI for the store and possibly other plugins that
aren't in the qpid tree (windows store?) It is *much* cleaner though. Do  you think it's worth
the compatibility breakage?


- Alan


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


On Oct. 31, 2012, 8:30 p.m., Alan Conway wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/7814/
> -----------------------------------------------------------
> 
> (Updated Oct. 31, 2012, 8:30 p.m.)
> 
> 
> Review request for qpid, Gordon Sim, Kenneth Giusti, Andy Goldstein, and Jason Dillaman.
> 
> 
> Description
> -------
> 
> QPID-4394: HA QMF events out of order
> 
> QMF create/delete events for auto-delete queues can be generated out-of-order
> because they are not regulated by any lock. This creates problems for HA
> replication. This commit does 2 things:
> 
> 1. Dispatch QMF events via a pollable queue. Events are encoded in the thread
> calling raiseEvent then put on a PollableQueue to be dispatched in a separate thread.
> This allows us to move the raiseEvent calls inside registry locks to ensure
> they are ordered.
> 
> 2. Move queue create and delete raiseEvent calls inside the queue registry
> lock so they are executed in order.
> 
> 
> Diffs
> -----
> 
>   /trunk/qpid/cpp/src/qpid/broker/Broker.cpp 1402462 
>   /trunk/qpid/cpp/src/qpid/broker/QueueRegistry.h 1402462 
>   /trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp 1402462 
>   /trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp 1402462 
>   /trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp 1402462 
>   /trunk/qpid/cpp/src/qpid/management/ManagementAgent.h 1402462 
>   /trunk/qpid/cpp/src/qpid/management/ManagementAgent.cpp 1402462 
>   /trunk/qpid/cpp/src/tests/ha_tests.py 1402462 
> 
> Diff: https://reviews.apache.org/r/7814/diff/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Alan Conway
> 
>


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