[
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