> On March 27, 2013, 3:53 p.m., Kenneth Giusti wrote:
> > Looks fine - but I'm not a big fan of the xxxLH() convention, though.  It's 
> > too brittle.  A code change that (re)moves the lock will cause the code to 
> > fail, but cannot be detected by the compiler.  Not much of an issue if the 
> > developer is careful, but a real problem when backporting patches.
> > 
> > My preference - while not a very popular one - is to change the parameter 
> > list of the xxxLH() call to take a const reference to the held lock, while 
> > the actual function ignores this parameter.  This allows the compiler to 
> > enforce that there is a lock around the xxLH() call, since the lock 
> > actually has to be passed.  Should a patch be applied that (re)moves the 
> > lock, the compilation will fail.
> > 
> > Example:
> > 
> > ScopedLock l(somelock);
> > ...
> > xxxLH( param1, param2, ..., l );
> > 
> > with the definition of xxxLH() ignoring that parameter:
> > 
> > void xxxLH( int param1, int param2, ... const ScopedLock& /*ignored*/ ) { 
> > ....
> > 
> > 
> > I can see why most people don't like this convention - it implies the 
> > method may modify the lock - but the const designation prevents that.
> > 
> > That said, I'm fine with the patch as-is.

+1


- Alan


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


On March 27, 2013, 2:38 p.m., Chug Rolke wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/10155/
> -----------------------------------------------------------
> 
> (Updated March 27, 2013, 2:38 p.m.)
> 
> 
> Review request for qpid, Alan Conway, Gordon Sim, and Kenneth Giusti.
> 
> 
> Description
> -------
> 
> Self test federation.test_dynamic_topic hangs. Two threads take out an Rlock 
> and then try to upgrade the lock to a Wlock and hang.
> 
> The failure was intermittent. Only automake builds running 'make check' 
> seemed to have the issue.
> 
> The fix is to create an unbindLH() function that does the unbind but does not 
> take out the Wlock itself.
> 
> The note in the Jira about similar behavior in the TopicExchange is wrong; 
> this issue is XmlExchange only.
> 
> 
> This addresses bug QPID-4672.
>     https://issues.apache.org/jira/browse/QPID-4672
> 
> 
> Diffs
> -----
> 
>   trunk/qpid/cpp/src/qpid/xml/XmlExchange.h 1461592 
>   trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp 1461592 
> 
> Diff: https://reviews.apache.org/r/10155/diff/
> 
> 
> Testing
> -------
> 
> Passes automake and cmake tests.
> 
> 
> Thanks,
> 
> Chug Rolke
> 
>

Reply via email to