mirror of https://github.com/apache/activemq.git
release the connection even if broker communication fails
(cherry picked from commit 934f3cea7e
)
This commit is contained in:
parent
81ef5efdc7
commit
d9a79d172b
|
@ -678,34 +678,36 @@ public class ActiveMQConnection implements Connection, TopicConnection, QueueCon
|
||||||
|
|
||||||
this.activeTempDestinations.clear();
|
this.activeTempDestinations.clear();
|
||||||
|
|
||||||
if (isConnectionInfoSentToBroker) {
|
try {
|
||||||
// If we announced ourselves to the broker.. Try to let the broker
|
if (isConnectionInfoSentToBroker) {
|
||||||
// know that the connection is being shutdown.
|
// If we announced ourselves to the broker.. Try to let the broker
|
||||||
RemoveInfo removeCommand = info.createRemoveCommand();
|
// know that the connection is being shutdown.
|
||||||
removeCommand.setLastDeliveredSequenceId(lastDeliveredSequenceId);
|
RemoveInfo removeCommand = info.createRemoveCommand();
|
||||||
try {
|
removeCommand.setLastDeliveredSequenceId(lastDeliveredSequenceId);
|
||||||
doSyncSendPacket(removeCommand, closeTimeout);
|
try {
|
||||||
} catch (JMSException e) {
|
doSyncSendPacket(removeCommand, closeTimeout);
|
||||||
if (e.getCause() instanceof RequestTimedOutIOException) {
|
} catch (JMSException e) {
|
||||||
// expected
|
if (e.getCause() instanceof RequestTimedOutIOException) {
|
||||||
} else {
|
// expected
|
||||||
throw e;
|
} else {
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
doAsyncSendPacket(new ShutdownInfo());
|
||||||
}
|
}
|
||||||
doAsyncSendPacket(new ShutdownInfo());
|
} finally { // release anyway even if previous communication fails
|
||||||
}
|
started.set(false);
|
||||||
|
|
||||||
started.set(false);
|
// TODO if we move the TaskRunnerFactory to the connection
|
||||||
|
// factory
|
||||||
// TODO if we move the TaskRunnerFactory to the connection
|
// then we may need to call
|
||||||
// factory
|
// factory.onConnectionClose(this);
|
||||||
// then we may need to call
|
if (sessionTaskRunner != null) {
|
||||||
// factory.onConnectionClose(this);
|
sessionTaskRunner.shutdown();
|
||||||
if (sessionTaskRunner != null) {
|
}
|
||||||
sessionTaskRunner.shutdown();
|
closed.set(true);
|
||||||
|
closing.set(false);
|
||||||
}
|
}
|
||||||
closed.set(true);
|
|
||||||
closing.set(false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|
Loading…
Reference in New Issue