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 | dce43316e7c701d34fd79bf8c8399646dbd37adf (patch) | |
| tree | e6d7b3bd49fa5ee53f975e70b4bb510a1580c144 /java/client | |
| parent | 50e260bed1ecc54802eda16c0b98e0c02e93989c (diff) | |
| download | qpid-python-dce43316e7c701d34fd79bf8c8399646dbd37adf.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/qpid@1002993 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/client')
| -rw-r--r-- | java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java b/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java index 960661daea..9e6000c472 100644 --- a/java/client/src/main/java/org/apache/qpid/jms/failover/FailoverExchangeMethod.java +++ b/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() |
