[ 
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

        

Reply via email to