Author: dejanb
Date: Fri Nov 13 11:40:18 2009
New Revision: 835820
URL: http://svn.apache.org/viewvc?rev=835820&view=rev
Log:
merging 835816 - https://issues.apache.org/activemq/browse/AMQ-2486 -
systemExitOnShutdown hang
Modified:
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
Modified:
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
URL:
http://svn.apache.org/viewvc/activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java?rev=835820&r1=835819&r2=835820&view=diff
==============================================================================
---
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
(original)
+++
activemq/branches/activemq-5.3/activemq-core/src/main/java/org/apache/activemq/broker/BrokerService.java
Fri Nov 13 11:40:18 2009
@@ -31,9 +31,12 @@
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+
import javax.management.MalformedObjectNameException;
import javax.management.ObjectName;
+
import org.apache.activemq.ActiveMQConnectionMetaData;
+import org.apache.activemq.ConfigurationException;
import org.apache.activemq.Service;
import org.apache.activemq.advisory.AdvisoryBroker;
import org.apache.activemq.broker.cluster.ConnectionSplitBroker;
@@ -432,13 +435,9 @@
return;
}
try {
- if (systemExitOnShutdown) {
- addShutdownHook(new Runnable() {
- public void run() {
- Runtime.getRuntime().halt(systemExitOnShutdownExitCode);
- }
- });
- }
+ if (systemExitOnShutdown && useShutdownHook) {
+ throw new ConfigurationException("'useShutdownHook'
property cannot be be used with 'systemExitOnShutdown', please turn it off
(useShutdownHook=false)");
+ }
processHelperProperties();
if (isUseJmx()) {
startManagementContext();
@@ -502,6 +501,15 @@
if (!started.compareAndSet(true, false)) {
return;
}
+
+ if (systemExitOnShutdown) {
+ new Thread() {
+ public void run() {
+ System.exit(systemExitOnShutdownExitCode);
+ }
+ }.start();
+ }
+
LOG.info("ActiveMQ Message Broker (" + getBrokerName() + ", " +
brokerId + ") is shutting down");
removeShutdownHook();
ServiceStopper stopper = new ServiceStopper();
@@ -558,6 +566,7 @@
}
}
}
+
stopper.throwFirstException();
}