You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Gordon Sim (JIRA)" <qp...@incubator.apache.org> on 2009/07/06 17:26:14 UTC
[jira] Created: (QPID-1971) bind in fedOpReorigen mode is not
threadsafe for TopicExchange
bind in fedOpReorigen mode is not threadsafe for TopicExchange
--------------------------------------------------------------
Key: QPID-1971
URL: https://issues.apache.org/jira/browse/QPID-1971
Project: Qpid
Issue Type: Bug
Affects Versions: 0.5
Reporter: Gordon Sim
Fix For: 0.6
} else if (fedOp == fedOpReorigin) {
for (BindingMap::iterator iter = bindings.begin();
iter != bindings.end(); iter++) {
const BoundKey& bk = iter->second;
if (bk.fedBinding.hasLocal()) {
propagateFedOp(iter->first, string(), fedOpBind, string());
}
}
}
Note no lock held when iterating over bindings in snippet above.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] Updated: (QPID-1971) bind in fedOpReorigen mode is not
threadsafe for TopicExchange
Posted by "Gordon Sim (JIRA)" <qp...@incubator.apache.org>.
[ https://issues.apache.org/jira/browse/QPID-1971?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Gordon Sim updated QPID-1971:
-----------------------------
Priority: Blocker (was: Major)
> bind in fedOpReorigen mode is not threadsafe for TopicExchange
> --------------------------------------------------------------
>
> Key: QPID-1971
> URL: https://issues.apache.org/jira/browse/QPID-1971
> Project: Qpid
> Issue Type: Bug
> Affects Versions: 0.5
> Reporter: Gordon Sim
> Assignee: Ted Ross
> Priority: Blocker
> Fix For: 0.6
>
>
> } else if (fedOp == fedOpReorigin) {
> for (BindingMap::iterator iter = bindings.begin();
> iter != bindings.end(); iter++) {
> const BoundKey& bk = iter->second;
> if (bk.fedBinding.hasLocal()) {
> propagateFedOp(iter->first, string(), fedOpBind, string());
> }
> }
> }
> Note no lock held when iterating over bindings in snippet above.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] Resolved: (QPID-1971) bind in fedOpReorigen mode is not
threadsafe for TopicExchange
Posted by "Ted Ross (JIRA)" <qp...@incubator.apache.org>.
[ https://issues.apache.org/jira/browse/QPID-1971?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ted Ross resolved QPID-1971.
----------------------------
Resolution: Fixed
> bind in fedOpReorigen mode is not threadsafe for TopicExchange
> --------------------------------------------------------------
>
> Key: QPID-1971
> URL: https://issues.apache.org/jira/browse/QPID-1971
> Project: Qpid
> Issue Type: Bug
> Affects Versions: 0.5
> Reporter: Gordon Sim
> Assignee: Ted Ross
> Priority: Blocker
> Fix For: 0.6
>
> Attachments: QPID-1971.diff
>
>
> } else if (fedOp == fedOpReorigin) {
> for (BindingMap::iterator iter = bindings.begin();
> iter != bindings.end(); iter++) {
> const BoundKey& bk = iter->second;
> if (bk.fedBinding.hasLocal()) {
> propagateFedOp(iter->first, string(), fedOpBind, string());
> }
> }
> }
> Note no lock held when iterating over bindings in snippet above.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] Assigned: (QPID-1971) bind in fedOpReorigen mode is not
threadsafe for TopicExchange
Posted by "Ted Ross (JIRA)" <qp...@incubator.apache.org>.
[ https://issues.apache.org/jira/browse/QPID-1971?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ted Ross reassigned QPID-1971:
------------------------------
Assignee: Ted Ross
> bind in fedOpReorigen mode is not threadsafe for TopicExchange
> --------------------------------------------------------------
>
> Key: QPID-1971
> URL: https://issues.apache.org/jira/browse/QPID-1971
> Project: Qpid
> Issue Type: Bug
> Affects Versions: 0.5
> Reporter: Gordon Sim
> Assignee: Ted Ross
> Fix For: 0.6
>
>
> } else if (fedOp == fedOpReorigin) {
> for (BindingMap::iterator iter = bindings.begin();
> iter != bindings.end(); iter++) {
> const BoundKey& bk = iter->second;
> if (bk.fedBinding.hasLocal()) {
> propagateFedOp(iter->first, string(), fedOpBind, string());
> }
> }
> }
> Note no lock held when iterating over bindings in snippet above.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org
[jira] Updated: (QPID-1971) bind in fedOpReorigen mode is not
threadsafe for TopicExchange
Posted by "Ken Giusti (JIRA)" <qp...@incubator.apache.org>.
[ https://issues.apache.org/jira/browse/QPID-1971?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ken Giusti updated QPID-1971:
-----------------------------
Attachment: QPID-1971.diff
Proposed solution: while holding the lock, make a local list of all the keys requiring propagation. Then drop the lock, and propagate the binds for all the keys on that list.
Also modified DirectExchange.cpp - used the same locking pattern.
Added a couple of federation tests that exercise the new codepath.
-K
> bind in fedOpReorigen mode is not threadsafe for TopicExchange
> --------------------------------------------------------------
>
> Key: QPID-1971
> URL: https://issues.apache.org/jira/browse/QPID-1971
> Project: Qpid
> Issue Type: Bug
> Affects Versions: 0.5
> Reporter: Gordon Sim
> Assignee: Ted Ross
> Priority: Blocker
> Fix For: 0.6
>
> Attachments: QPID-1971.diff
>
>
> } else if (fedOp == fedOpReorigin) {
> for (BindingMap::iterator iter = bindings.begin();
> iter != bindings.end(); iter++) {
> const BoundKey& bk = iter->second;
> if (bk.fedBinding.hasLocal()) {
> propagateFedOp(iter->first, string(), fedOpBind, string());
> }
> }
> }
> Note no lock held when iterating over bindings in snippet above.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org