activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alessandro Monguzzi (Reopened) (JIRA)" <j...@apache.org>
Subject [jira] [Reopened] (AMQ-3760) Deadlock on Java Client when onMessage executes a synchronized method.
Date Mon, 12 Mar 2012 13:12:41 GMT

     [ https://issues.apache.org/jira/browse/AMQ-3760?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Alessandro Monguzzi reopened AMQ-3760:
--------------------------------------


I disagree with the closure of this issue.

The spec cannot allow a deadlock and a synchronized method is not an uncommon case. Either
a method can be called or it can't, the behaviour cannot be unpredictable.
If none Session method can be called (apart from close) when a Session is running, then I
could not call the createObjectMessage() method also. I cannot believe that.

I would leave this bug open and explore a solution; closing the bug in this moment is like
hiding the issue.

                
> Deadlock on Java Client when onMessage executes a synchronized method.
> ----------------------------------------------------------------------
>
>                 Key: AMQ-3760
>                 URL: https://issues.apache.org/jira/browse/AMQ-3760
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: JMS client
>    Affects Versions: 5.5.1
>         Environment: java version "1.6.0_30"
> Java(TM) SE Runtime Environment (build 1.6.0_30-b12)
> Java HotSpot(TM) Server VM (build 20.5-b03, mixed mode)
> OS: SunOs 10/06
>            Reporter: Alessandro Monguzzi
>              Labels: features
>         Attachments: ActiveMQDeadlock.zip
>
>
> Create a class with two synchronized methods synchMethod1 and synchMethod2. 
> syncMethod1 is invoked inside a messageListener object and only prints a message on stdout.
> syncMethod2 creates a new MessageConsumer with a new instance of MessageListener. All
the MessageConsumers created by synchMethod2 share the same session.
> All the consumers listen on the same Topic named "myDest".
> Create an infinite cycle that: 
> 1) send a message on Topic "myDest"
> 2) invoke syncMethod2
> 3) waits 10ms
> In attach the unit test source.
> As result, a deadlock is created between the "ActiveMQ Session Task" thread entering
in syncMethod1 having the ActiveMessageConsumer's mutex and my other thread executing the
syncMethod2 when the SimplePriorityMessageDispatchChannel.stop() method is invoked.
> This means that it's not possible to create or change MessageListeners on a running session,
even if the code seems to handle this case stopping and restarting the session.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message