Calling Connection.close() on interrupted thread generates
InterruptedIOException and leaks Connection
------------------------------------------------------------------------------------------------------
Key: AMQ-3547
URL: https://issues.apache.org/jira/browse/AMQ-3547
Project: ActiveMQ
Issue Type: Bug
Components: JMS client
Affects Versions: 5.5.0
Reporter: Martin Beránek
Priority: Critical
Similar to https://issues.apache.org/jira/browse/AMQ-3529
call close() method on connection raise JMSException with
InterruptedIOException as cause
Sample program:
public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new
ActiveMQConnectionFactory("tcp://localhost:61616");
Connection connection = connectionFactory.createConnection();
Session session = connection.createSession(false,
Session.AUTO_ACKNOWLEDGE);
final Thread mainThread = Thread.currentThread();
new Thread() {
public void run() {
// this thread interrupt main thread after 3s
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
mainThread.interrupt();
};
}.start();
try {
//wait for interrupt
Thread.sleep(10000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
try {
// this generate exception - bug???
connection.close();
} catch (JMSException e) {
e.printStackTrace();
}
// non-daemon thread responsible for connection still running, program
// will not terminate
}
when I remove line with Session obtain, everything works OK
--
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