AMQ-5086. Fix the timeout arithmetic
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/59109a66 Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/59109a66 Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/59109a66 Branch: refs/heads/activemq-5.10.x Commit: 59109a669fe7de89ad833d3369e6fb68f3d93fc9 Parents: 4298966 Author: Hadrian Zbarcea <[email protected]> Authored: Thu Jul 3 14:53:30 2014 -0400 Committer: Hadrian Zbarcea <[email protected]> Committed: Mon Dec 15 19:00:06 2014 -0500 ---------------------------------------------------------------------- .../apache/activemq/broker/BrokerService.java | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq/blob/59109a66/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java ---------------------------------------------------------------------- diff --git a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java index 3c542ce..00d4abd 100644 --- a/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java +++ b/activemq-broker/src/main/java/org/apache/activemq/broker/BrokerService.java @@ -137,6 +137,7 @@ public class BrokerService implements Service { public static final String BROKER_VERSION; public static final String DEFAULT_BROKER_NAME = "localhost"; public static final int DEFAULT_MAX_FILE_LENGTH = 1024 * 1024 * 32; + public static final long DEFAULT_START_TIMEOUT = 600000L; private static final Logger LOG = LoggerFactory.getLogger(BrokerService.class); @@ -156,7 +157,7 @@ public class BrokerService implements Service { private boolean shutdownOnMasterFailure; private boolean shutdownOnSlaveFailure; private boolean waitForSlave; - private long waitForSlaveTimeout = 600000L; + private long waitForSlaveTimeout = DEFAULT_START_TIMEOUT; private boolean passiveSlave; private String brokerName = DEFAULT_BROKER_NAME; private File dataDirectoryFile; @@ -248,7 +249,6 @@ public class BrokerService implements Service { private boolean restartRequested = false; private int storeOpenWireVersion = OpenWireFormat.DEFAULT_VERSION; - private String configurationUrl; static { @@ -914,8 +914,21 @@ public class BrokerService implements Service { * @return boolean true if wait succeeded false if broker was not started or was stopped */ public boolean waitUntilStarted() { + return waitUntilStarted(DEFAULT_START_TIMEOUT); + } + + /** + * A helper method to block the caller thread until the broker has fully started + * + * @param timeout + * the amount of time to wait before giving up and returning false. + * + * @return boolean true if wait succeeded false if broker was not started or was stopped + */ + public boolean waitUntilStarted(long timeout) { boolean waitSucceeded = isStarted(); - while (!isStarted() && !stopped.get() && !waitSucceeded) { + long expiration = Math.max(0, timeout + System.currentTimeMillis()); + while (!isStarted() && !stopped.get() && !waitSucceeded && expiration > System.currentTimeMillis()) { try { if (startException != null) { return waitSucceeded;
