[
https://issues.apache.org/jira/browse/QPID-7306?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15345124#comment-15345124
]
ASF subversion and git services commented on QPID-7306:
-------------------------------------------------------
Commit 1749782 from [~aconway] in branch 'qpid/trunk'
[ https://svn.apache.org/r1749782 ]
QPID-7306: Fix race conditions during Queue destruction.
Stack traces indicate a Queue was being destroyed concurrently while still in
use by its ManagedObject.
ManagedObject holds a plain pointer to the Manageable object (e.g. Queue) it
belongs to. The Manageable calls ManagedObject::resourceDestroy() when it is
deleted, but without any locking.
Added a locked wrapper class ManageablePtr so destroy is atomic with respect to
other calls via ManageablePtr, calls after pointer is reset to 0 in destroy()
are skipped.
Call resourceDestroy() in Queue::~Queue if it was not called already. This is
probably redundant given given the fixes above but can't hurt.
Queue::destroyed() was also being called without locking and could be called
concurrrently, e.g. if auto-delete happens concurrently with delete via QMF or
by a 0-10 client. Moved the destroyed() call into QueueRegistry::destroy(),
using QueueRegistry lock to guarantee it is called exactly once.
> Fix memory bugs and race conditions found in a Qpid HA deployment
> -----------------------------------------------------------------
>
> Key: QPID-7306
> URL: https://issues.apache.org/jira/browse/QPID-7306
> Project: Qpid
> Issue Type: Bug
> Components: C++ Broker
> Affects Versions: 0.32
> Reporter: Alan Conway
> Assignee: Alan Conway
>
> Bugs related to thread safety and lifecycle of Links/Bridges, management
> objects and Queues. These were discovered in a HA environment but most of the
> issues could theoretically affect a stand alone broker also. For more
> information see https://bugzilla.redhat.com/show_bug.cgi?id=1333767
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]