You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by ta...@apache.org on 2016/04/08 18:28:40 UTC
activemq git commit: https://issues.apache.org/jira/browse/AMQ-6235
Repository: activemq
Updated Branches:
refs/heads/master c8d96c6e8 -> b1c55fdc7
https://issues.apache.org/jira/browse/AMQ-6235
Honor the initialReconnectDelay configuration in all cases.
Project: http://git-wip-us.apache.org/repos/asf/activemq/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq/commit/b1c55fdc
Tree: http://git-wip-us.apache.org/repos/asf/activemq/tree/b1c55fdc
Diff: http://git-wip-us.apache.org/repos/asf/activemq/diff/b1c55fdc
Branch: refs/heads/master
Commit: b1c55fdc744987245c409af5835fd1a74bdc49ed
Parents: c8d96c6
Author: Timothy Bish <ta...@gmail.com>
Authored: Fri Apr 8 12:28:19 2016 -0400
Committer: Timothy Bish <ta...@gmail.com>
Committed: Fri Apr 8 12:28:19 2016 -0400
----------------------------------------------------------------------
.../discovery/simple/SimpleDiscoveryAgent.java | 48 ++++++++++++--------
1 file changed, 28 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/activemq/blob/b1c55fdc/activemq-client/src/main/java/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java
----------------------------------------------------------------------
diff --git a/activemq-client/src/main/java/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java b/activemq-client/src/main/java/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java
index 1d05273..d3cdf9e 100755
--- a/activemq-client/src/main/java/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java
+++ b/activemq-client/src/main/java/org/apache/activemq/transport/discovery/simple/SimpleDiscoveryAgent.java
@@ -51,7 +51,7 @@ public class SimpleDiscoveryAgent implements DiscoveryAgent {
class SimpleDiscoveryEvent extends DiscoveryEvent {
private int connectFailures;
- private long reconnectDelay = initialReconnectDelay;
+ private long reconnectDelay = -1;
private long connectTime = System.currentTimeMillis();
private final AtomicBoolean failed = new AtomicBoolean(false);
@@ -142,32 +142,16 @@ public class SimpleDiscoveryAgent implements DiscoveryAgent {
// We detect a failed connection attempt because the service
// fails right away.
if (event.connectTime + minConnectTime > System.currentTimeMillis()) {
- LOG.debug("Failure occurred soon after the discovery event was generated. It will be classified as a connection failure: "+event);
+ LOG.debug("Failure occurred soon after the discovery event was generated. It will be classified as a connection failure: {}", event);
event.connectFailures++;
if (maxReconnectAttempts > 0 && event.connectFailures >= maxReconnectAttempts) {
- LOG.warn("Reconnect attempts exceeded "+maxReconnectAttempts+" tries. Reconnecting has been disabled for: " + event);
+ LOG.warn("Reconnect attempts exceeded {} tries. Reconnecting has been disabled for: {}", maxReconnectAttempts, event);
return;
}
- synchronized (sleepMutex) {
- try {
- if (!running.get()) {
- LOG.debug("Reconnecting disabled: stopped");
- return;
- }
-
- LOG.debug("Waiting "+event.reconnectDelay+" ms before attempting to reconnect.");
- sleepMutex.wait(event.reconnectDelay);
- } catch (InterruptedException ie) {
- LOG.debug("Reconnecting disabled: " + ie);
- Thread.currentThread().interrupt();
- return;
- }
- }
-
- if (!useExponentialBackOff) {
+ if (!useExponentialBackOff || event.reconnectDelay == -1) {
event.reconnectDelay = initialReconnectDelay;
} else {
// Exponential increment of reconnect delay.
@@ -177,9 +161,15 @@ public class SimpleDiscoveryAgent implements DiscoveryAgent {
}
}
+ doReconnectDelay(event);
+
} else {
+ LOG.trace("Failure occurred to long after the discovery event was generated. " +
+ "It will not be classified as a connection failure: {}", event);
event.connectFailures = 0;
event.reconnectDelay = initialReconnectDelay;
+
+ doReconnectDelay(event);
}
if (!running.get()) {
@@ -195,6 +185,24 @@ public class SimpleDiscoveryAgent implements DiscoveryAgent {
}
}
+ protected void doReconnectDelay(SimpleDiscoveryEvent event) {
+ synchronized (sleepMutex) {
+ try {
+ if (!running.get()) {
+ LOG.debug("Reconnecting disabled: stopped");
+ return;
+ }
+
+ LOG.debug("Waiting {}ms before attempting to reconnect.", event.reconnectDelay);
+ sleepMutex.wait(event.reconnectDelay);
+ } catch (InterruptedException ie) {
+ LOG.debug("Reconnecting disabled: ", ie);
+ Thread.currentThread().interrupt();
+ return;
+ }
+ }
+ }
+
public long getBackOffMultiplier() {
return backOffMultiplier;
}