[jira] [Commented] (AMQ-5396) Linkstealing causes deadlock when old client disconnects before link stealing adds the connection

2014-10-17 Thread AR (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-5396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14175667#comment-14175667
 ] 

AR commented on AMQ-5396:
-

Test case to reproduce this (with Mqtt Paho client lib):

* In the broker source, in 
activemq-broker/src/main/java/org/apache/activemq/broker/region/RegionBroker.java
 add sleep between the 2 lines in function addConnection() as shown below:
{noformat}
TransportConnection transportConnection = 
(TransportConnection) connection;
 Thread.sleep(3);
 transportConnection.stopAsync();
{noformat}

* Run the broker
* Run the following test case:
{noformat}
@Test
public void testLinkStealingDeadlock2() throws MqttException, 
InterruptedException
{
MqttClient client1 = new MqttClient("tcp://localhost:1883", "client1");

client1.connect();

Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("Connecting client 2");
MqttClient client2 = new MqttClient("tcp://localhost:1883", 
"client1"); // should be same client id
client2.connect();
System.out.println("Done connecting client2");
} catch (MqttException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
thread.start(); 
Thread.sleep(2000);
System.out.println("Disconnecting client1...");
client1.disconnect();

System.out.println("Connecting client3...");
MqttClient client3 = new MqttClient("tcp://localhost:1883", "client3");
client3.connect();

System.out.println("Client3 connected");

client3.disconnect();


Thread.sleep(120*1000);
Assert.assertTrue(true);
}
{noformat}

* Run jstack on the JVM


> Linkstealing causes deadlock when old client disconnects before link stealing 
> adds the connection
> -
>
> Key: AMQ-5396
> URL: https://issues.apache.org/jira/browse/AMQ-5396
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.11.0
>Reporter: Sai
> Attachments: jstack.txt, linkstealing-deadlock.patch
>
>
> During link stealing in progress if the old client(or connection) issues a 
> disconnect can cause a deadlock due the order in which the locks are obtained 
> on RegionBroker.addConnection and TransportConnection.processRemoveConneciton.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)


[jira] [Commented] (AMQ-5396) Linkstealing causes deadlock when old client disconnects before link stealing adds the connection

2014-10-16 Thread Sai (JIRA)

[ 
https://issues.apache.org/jira/browse/AMQ-5396?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14174543#comment-14174543
 ] 

Sai commented on AMQ-5396:
--

attached the jstack which shows the deadlock

> Linkstealing causes deadlock when old client disconnects before link stealing 
> adds the connection
> -
>
> Key: AMQ-5396
> URL: https://issues.apache.org/jira/browse/AMQ-5396
> Project: ActiveMQ
>  Issue Type: Bug
>  Components: Broker
>Affects Versions: 5.11.0
>Reporter: Sai
> Attachments: jstack.txt, linkstealing-deadlock.patch
>
>
> During link stealing in progress if the old client(or connection) issues a 
> disconnect can cause a deadlock due the order in which the locks are obtained 
> on RegionBroker.addConnection and TransportConnection.processRemoveConneciton.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)