Repository: activemq-artemis
Updated Branches:
refs/heads/master 9765dadbc -> 2ddaa0aa8
NO-JIRA Partially Revert "NO-JIRA Removing Wrong assertion"
I have changed ActiveMQActivation by mistake here at 385e11117b1f62803e999e602b952ad68b79a7c3
Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/2ddaa0aa
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/2ddaa0aa
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/2ddaa0aa
Branch: refs/heads/master
Commit: 2ddaa0aa86be69140debb5477d9fbd3f4301a8dc
Parents: 9765dad
Author: Clebert Suconic <clebertsuconic@apache.org>
Authored: Wed May 2 21:35:17 2018 -0400
Committer: Clebert Suconic <clebertsuconic@apache.org>
Committed: Wed May 2 21:38:12 2018 -0400
----------------------------------------------------------------------
.../artemis/ra/inflow/ActiveMQActivation.java | 38 ++++++++++++++++++--
1 file changed, 35 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/2ddaa0aa/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
----------------------------------------------------------------------
diff --git a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
index e527352..ede1b01 100644
--- a/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
+++ b/artemis-ra/src/main/java/org/apache/activemq/artemis/ra/inflow/ActiveMQActivation.java
@@ -390,8 +390,24 @@ public class ActiveMQActivation {
}
}
- for (ActiveMQMessageHandler handler : handlersCopy) {
- handler.teardown();
+ Thread threadTearDown = new Thread("TearDown/ActiveMQActivation") {
+ @Override
+ public void run() {
+ for (ActiveMQMessageHandler handler : handlersCopy) {
+ handler.teardown();
+ }
+ }
+ };
+
+ // We will first start a new thread that will call tearDown on all the instances, trying
to graciously shutdown everything.
+ // We will then use the call-timeout to determine a timeout.
+ // if that failed we will then close the connection factory, and interrupt the thread
+ threadTearDown.start();
+
+ try {
+ threadTearDown.join(timeout);
+ } catch (InterruptedException e) {
+ // nothing to be done on this context.. we will just keep going as we need to send
an interrupt to threadTearDown and give up
}
if (factory != null) {
@@ -405,6 +421,20 @@ public class ActiveMQActivation {
factory = null;
}
+ if (threadTearDown.isAlive()) {
+ threadTearDown.interrupt();
+
+ try {
+ threadTearDown.join(5000);
+ } catch (InterruptedException e) {
+ // nothing to be done here.. we are going down anyways
+ }
+
+ if (threadTearDown.isAlive()) {
+ ActiveMQRALogger.LOGGER.threadCouldNotFinish(threadTearDown.toString());
+ }
+ }
+
nodes.clear();
lastReceived = false;
@@ -518,7 +548,9 @@ public class ActiveMQActivation {
calculatedDestinationName = spec.getQueuePrefix() + calculatedDestinationName;
}
- logger.debug("Unable to retrieve " + destinationName + " from JNDI. Creating
a new " + destinationType.getName() + " named " + calculatedDestinationName + " to be used
by the MDB.");
+ logger.debug("Unable to retrieve " + destinationName +
+ " from JNDI. Creating a new " + destinationType.getName()
+
+ " named " + calculatedDestinationName + "
to be used by the MDB.");
// If there is no binding on naming, we will just create a new instance
if (isTopic) {
|