You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2015/07/03 14:57:34 UTC

[39/39] incubator-ignite git commit: ignite-747: returning only verified nodes from top snapshot

ignite-747: returning only verified nodes from top snapshot


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/96960375
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/96960375
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/96960375

Branch: refs/heads/ignite-747
Commit: 9696037540220507cbad1151ff10706bdd615c85
Parents: 20204f0
Author: Denis Magda <dm...@gridgain.com>
Authored: Fri Jul 3 15:07:58 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Fri Jul 3 15:07:58 2015 +0300

----------------------------------------------------------------------
 .../managers/discovery/GridDiscoveryManager.java    |  3 ++-
 .../apache/ignite/internal/util/lang/GridFunc.java  | 16 ++++++++++++++++
 .../tcp/internal/TcpDiscoveryNodesRing.java         |  8 +++++++-
 3 files changed, 25 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96960375/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index a8ce8ff..616e27c 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -438,7 +438,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 // There is no race possible between history maintenance and concurrent discovery
                 // event notifications, since SPI notifies manager about all events from this listener.
                 if (verChanged) {
-                    DiscoCache cache = new DiscoCache(locNode, F.view(topSnapshot, F.remoteNodes(locNode.id())));
+                    DiscoCache cache = new DiscoCache(locNode, F.view(topSnapshot,
+                        F.remoteVerifiedNodes(locNode.id())));
 
                     discoCacheHist.put(nextTopVer, cache);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96960375/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
index 6f544e0..d04190a 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java
@@ -332,6 +332,22 @@ public class GridFunc {
     }
 
     /**
+     * Gets predicate that evaluates to {@code false} for given local node ID and unverified nodes - who hasn't
+     * received order ID from the coordinator.
+     *
+     * @param locNodeId Local node ID.
+     * @param <T> Type of the node.
+     * @return Return {@code false} for the given local node ID.
+     */
+    public static <T extends ClusterNode> IgnitePredicate<T> remoteVerifiedNodes(final UUID locNodeId) {
+        return new P1<T>() {
+            @Override public boolean apply(T n) {
+                return n.order() > 0 && !n.id().equals(locNodeId);
+            }
+        };
+    }
+
+    /**
      * Creates new collection by removing duplicates from the given collection.
      *
      * @param c Collection to remove duplicates from.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/96960375/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNodesRing.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNodesRing.java b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNodesRing.java
index e9eaa1d..acb479d 100644
--- a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNodesRing.java
+++ b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/internal/TcpDiscoveryNodesRing.java
@@ -34,7 +34,13 @@ public class TcpDiscoveryNodesRing {
     /** Visible nodes filter. */
     public static final IgnitePredicate<TcpDiscoveryNode> VISIBLE_NODES = new P1<TcpDiscoveryNode>() {
         @Override public boolean apply(TcpDiscoveryNode node) {
-            return node.visible();
+            if (node.visible()) {
+                assert node.order() > 0 : "Invalid node order: " + node;
+
+                return true;
+            }
+
+            return false;
         }
     };