activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivan Pechorin (JIRA)" <j...@apache.org>
Subject [jira] Issue Comment Edited: (AMQCPP-288) ResourceLifecycleManager needs to be thread-safe
Date Wed, 24 Feb 2010 08:56:40 GMT

    [ https://issues.apache.org/activemq/browse/AMQCPP-288?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=57824#action_57824
] 

Ivan Pechorin edited comment on AMQCPP-288 at 2/24/10 8:56 AM:
---------------------------------------------------------------

Here is a patch, prepared against current trunk; same patch builds fine against version 3.1.0.

Thread safety could be added by a smaller patch (just adding few mutexes), but I also replaced
std::vector with decaf::util::StlList because it looks more consistent with other parts of
ActiveMQ C++ client code.

      was (Author: ipechorin):
    Here is a patch, prepared against current trunk; same patch builds fine against version
3.1.0.

Thread safety could be added by a smaller patch (just adding few mutexes), but I replace std::vector
with decaf::util::StlList because it looks more consistent with other parts of ActiveMQ C++
client code.
  
> ResourceLifecycleManager needs to be thread-safe
> ------------------------------------------------
>
>                 Key: AMQCPP-288
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-288
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: CMS Impl
>    Affects Versions: 3.0.1, 3.1
>            Reporter: Ivan Pechorin
>            Assignee: Timothy Bish
>         Attachments: AMQCPP_288_trunk.patch
>
>
> We use ActiveMQ C++ 3.x client in a multi-threaded application. In particular, we use
activemq::cmsutil::SessionPool and activemq::cmsutil::PooledSession. 
> Methods createCachedProducer and createCachedConsumer of class PooledSession do not synchronize
access to their shared ResourceLifecycleManager, and ResourceLifecycleManager itself is not
thread-safe. Therefore, it is not safe to use pooled session from multiple threads, even if
we guarantee that each PooledSession is used from one thread at any given time.
> To resolve this issue, ResourceLifecycleManager needs to be thread-safe, i.e. we need
to add synchronization to all of its add* methods. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message