ARTEMIS-459 NPE during RA tearDown
This commit is contained in:
parent
7d9d3086ab
commit
9c840bdeb8
|
@ -42,6 +42,7 @@ import org.apache.activemq.artemis.api.core.ActiveMQExceptionType;
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQNonExistentQueueException;
|
import org.apache.activemq.artemis.api.core.ActiveMQNonExistentQueueException;
|
||||||
import org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException;
|
import org.apache.activemq.artemis.api.core.ActiveMQNotConnectedException;
|
||||||
import org.apache.activemq.artemis.api.core.SimpleString;
|
import org.apache.activemq.artemis.api.core.SimpleString;
|
||||||
|
import org.apache.activemq.artemis.api.core.client.ActiveMQClient;
|
||||||
import org.apache.activemq.artemis.api.core.client.ClientSession;
|
import org.apache.activemq.artemis.api.core.client.ClientSession;
|
||||||
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
|
import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
|
||||||
import org.apache.activemq.artemis.api.core.client.ClusterTopologyListener;
|
import org.apache.activemq.artemis.api.core.client.ClusterTopologyListener;
|
||||||
|
@ -360,6 +361,8 @@ public class ActiveMQActivation {
|
||||||
protected synchronized void teardown() {
|
protected synchronized void teardown() {
|
||||||
ActiveMQRALogger.LOGGER.debug("Tearing down " + spec);
|
ActiveMQRALogger.LOGGER.debug("Tearing down " + spec);
|
||||||
|
|
||||||
|
long timeout = factory == null ? ActiveMQClient.DEFAULT_CALL_TIMEOUT : factory.getCallTimeout();
|
||||||
|
|
||||||
if (resourceRecovery != null) {
|
if (resourceRecovery != null) {
|
||||||
ra.getRecoveryManager().unRegister(resourceRecovery);
|
ra.getRecoveryManager().unRegister(resourceRecovery);
|
||||||
}
|
}
|
||||||
|
@ -385,7 +388,7 @@ public class ActiveMQActivation {
|
||||||
}
|
}
|
||||||
|
|
||||||
//wait for all the consumers to complete any onmessage calls
|
//wait for all the consumers to complete any onmessage calls
|
||||||
boolean stuckThreads = !future.await(factory.getCallTimeout());
|
boolean stuckThreads = !future.await(timeout);
|
||||||
//if any are stuck then we need to interrupt them
|
//if any are stuck then we need to interrupt them
|
||||||
if (stuckThreads) {
|
if (stuckThreads) {
|
||||||
for (Thread interruptThread : interruptThreads) {
|
for (Thread interruptThread : interruptThreads) {
|
||||||
|
@ -413,7 +416,7 @@ public class ActiveMQActivation {
|
||||||
threadTearDown.start();
|
threadTearDown.start();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
threadTearDown.join(factory.getCallTimeout());
|
threadTearDown.join(timeout);
|
||||||
}
|
}
|
||||||
catch (InterruptedException e) {
|
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
|
// nothing to be done on this context.. we will just keep going as we need to send an interrupt to threadTearDown and give up
|
||||||
|
|
Loading…
Reference in New Issue