You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2017/05/09 20:41:19 UTC

activemq-artemis git commit: ARTEMIS-1154 isolated backup fails over

Repository: activemq-artemis
Updated Branches:
  refs/heads/1.x c7dc04c2a -> 7e4de767b


ARTEMIS-1154 isolated backup fails over

Even if there is no address/url configured for the NetworkHealthCheck
an isolated backup will still fail-over potentially causing split-brain.

(cherry picked from commit 5cb5c8a6dc7179078f099d5455343e1f18fd3398)


Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo
Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/7e4de767
Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/7e4de767
Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/7e4de767

Branch: refs/heads/1.x
Commit: 7e4de767b70065aa9b911dd8171f0a5f9ee6369d
Parents: c7dc04c
Author: Justin Bertram <jb...@apache.org>
Authored: Tue May 9 14:43:17 2017 -0500
Committer: Clebert Suconic <cl...@apache.org>
Committed: Tue May 9 16:41:14 2017 -0400

----------------------------------------------------------------------
 .../artemis/core/server/NetworkHealthCheck.java   | 18 ++++++++++++------
 .../cluster/qourum/SharedNothingBackupQuorum.java |  2 +-
 2 files changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7e4de767/artemis-commons/src/main/java/org/apache/activemq/artemis/core/server/NetworkHealthCheck.java
----------------------------------------------------------------------
diff --git a/artemis-commons/src/main/java/org/apache/activemq/artemis/core/server/NetworkHealthCheck.java b/artemis-commons/src/main/java/org/apache/activemq/artemis/core/server/NetworkHealthCheck.java
index ec98aad..cabd045 100644
--- a/artemis-commons/src/main/java/org/apache/activemq/artemis/core/server/NetworkHealthCheck.java
+++ b/artemis-commons/src/main/java/org/apache/activemq/artemis/core/server/NetworkHealthCheck.java
@@ -298,25 +298,27 @@ public class NetworkHealthCheck extends ActiveMQScheduledComponent {
 
    }
 
+   /**
+    * @return true if no checks were done or if one address/url responds; false if all addresses/urls fail
+    */
    public boolean check() {
-      boolean isEmpty = true;
+      if (isEmpty()) {
+         return true;
+      }
+
       for (InetAddress address : addresses) {
-         isEmpty = false;
          if (check(address)) {
             return true;
          }
       }
 
       for (URL url : urls) {
-         isEmpty = false;
          if (check(url)) {
             return true;
          }
       }
 
-      // This should return true if no checks were done, on this case it's empty
-      // This is tested by {@link NetworkHe
-      return isEmpty;
+      return false;
    }
 
    public boolean check(InetAddress address) {
@@ -397,4 +399,8 @@ public class NetworkHealthCheck extends ActiveMQScheduledComponent {
          return false;
       }
    }
+
+   public boolean isEmpty() {
+      return addresses.isEmpty() && urls.isEmpty();
+   }
 }

http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/7e4de767/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/SharedNothingBackupQuorum.java
----------------------------------------------------------------------
diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/SharedNothingBackupQuorum.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/SharedNothingBackupQuorum.java
index b3e9c32..51d2487 100644
--- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/SharedNothingBackupQuorum.java
+++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/cluster/qourum/SharedNothingBackupQuorum.java
@@ -105,7 +105,7 @@ public class SharedNothingBackupQuorum implements Quorum, SessionFailureListener
             signal = BACKUP_ACTIVATION.FAIL_OVER;
          }
 
-         if (networkHealthCheck != null && networkHealthCheck.check()) {
+         if (networkHealthCheck != null && !networkHealthCheck.isEmpty() && networkHealthCheck.check()) {
             // live is assumed to be down, backup fails-over
             signal = BACKUP_ACTIVATION.FAIL_OVER;
          } else {