diff options
author | Robert Gemmell <robbie@apache.org> | 2010-09-30 10:29:37 +0000 |
---|---|---|
committer | Robert Gemmell <robbie@apache.org> | 2010-09-30 10:29:37 +0000 |
commit | f8156eefde27d082fc267dfcce9e061b75611508 (patch) | |
tree | b1279d4099a0752b97683f6bac2f3c4c8e4b157a | |
parent | ea85924637502b1a29961cc029c8019b51626ed9 (diff) | |
download | qpid-python-f8156eefde27d082fc267dfcce9e061b75611508.tar.gz |
QPID-2857: Fix issue identified by running FindBugs across the codebase. Release lock before sleeping.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1002993 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java b/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java index 960661daea..9e6000c472 100644 --- a/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java +++ b/qpid/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java @@ -196,6 +196,8 @@ public class FailoverExchangeMethod implements FailoverMethod, MessageListener public BrokerDetails getNextBrokerDetails() { + BrokerDetails broker = null; + synchronized(_brokerListLock) { if (_currentBrokerIndex == (_connectionDetails.getBrokerCount() - 1)) @@ -207,7 +209,7 @@ public class FailoverExchangeMethod implements FailoverMethod, MessageListener _currentBrokerIndex++; } - BrokerDetails broker = _connectionDetails.getBrokerDetails(_currentBrokerIndex); + broker = _connectionDetails.getBrokerDetails(_currentBrokerIndex); // When the broker list is updated it will include the current broker as well // There is no point trying it again, so trying the next one. @@ -225,30 +227,31 @@ public class FailoverExchangeMethod implements FailoverMethod, MessageListener return null; } } + } - String delayStr = broker.getProperty(BrokerDetails.OPTIONS_CONNECT_DELAY); - if (delayStr != null) + String delayStr = broker.getProperty(BrokerDetails.OPTIONS_CONNECT_DELAY); + if (delayStr != null) + { + Long delay = Long.parseLong(delayStr); + _logger.info("Delay between connect retries:" + delay); + try { - Long delay = Long.parseLong(delayStr); - _logger.info("Delay between connect retries:" + delay); - try - { - Thread.sleep(delay); - } - catch (InterruptedException ie) - { - return null; - } + Thread.sleep(delay); } - else + catch (InterruptedException ie) { - _logger.info("No delay between connect retries, use tcp://host:port?connectdelay='value' to enable."); + return null; } - - _failedAttemps ++; - _currentBrokerDetail = broker; - return broker; } + else + { + _logger.info("No delay between connect retries, use tcp://host:port?connectdelay='value' to enable."); + } + + _failedAttemps ++; + _currentBrokerDetail = broker; + + return broker; } public boolean failoverAllowed() |