summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Gemmell <robbie@apache.org>2010-09-30 10:29:37 +0000
committerRobert Gemmell <robbie@apache.org>2010-09-30 10:29:37 +0000
commitf8156eefde27d082fc267dfcce9e061b75611508 (patch)
treeb1279d4099a0752b97683f6bac2f3c4c8e4b157a
parentea85924637502b1a29961cc029c8019b51626ed9 (diff)
downloadqpid-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.java41
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()