> 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? > > Alan Conway wrote: > 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?
Ah yes, of course. I think what you have is good enough for now. We can consider a change if we get to revisiting the management code more generally. - Gordon ----------------------------------------------------------- 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 > >
