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


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