Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-sprint-3 5421701ac -> 60aaaaa08


#ignite-gg-9966: Add node validator processor.


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

Branch: refs/heads/ignite-sprint-3
Commit: cfa3a96f6d4c17bd20c8648b3872ff928fd95be1
Parents: 07ca9fa
Author: ivasilinets <ivasilin...@gridgain.com>
Authored: Thu Apr 2 16:55:02 2015 +0300
Committer: ivasilinets <ivasilin...@gridgain.com>
Committed: Thu Apr 2 16:55:02 2015 +0300

----------------------------------------------------------------------
 .../ignite/internal/GridKernalContextImpl.java  |   3 +-
 .../org/apache/ignite/internal/IgniteEx.java    |   7 --
 .../apache/ignite/internal/IgniteKernal.java    |  25 +----
 .../ignite/internal/IgniteNodeAttributes.java   |   3 -
 .../internal/processors/spi/NodeValidator.java  |  27 +++++
 .../processors/spi/OsNodeValidator.java         |  75 +++++++++++++
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 104 -------------------
 .../HadoopDefaultMapReducePlannerSelfTest.java  |   5 -
 8 files changed, 109 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 845344b..a28c09c 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@ -53,6 +53,7 @@ import org.apache.ignite.internal.processors.security.*;
 import org.apache.ignite.internal.processors.segmentation.*;
 import org.apache.ignite.internal.processors.service.*;
 import org.apache.ignite.internal.processors.session.*;
+import org.apache.ignite.internal.processors.spi.*;
 import org.apache.ignite.internal.processors.task.*;
 import org.apache.ignite.internal.processors.timeout.*;
 import org.apache.ignite.internal.util.*;
@@ -475,7 +476,7 @@ public class GridKernalContextImpl implements 
GridKernalContext, Externalizable
             dataStructuresProc = (DataStructuresProcessor)comp;
         else if (comp instanceof ClusterProcessor)
             cluster = (ClusterProcessor)comp;
-        else
+        else if (!(comp instanceof OsNodeValidator))
             assert (comp instanceof GridPluginComponent) : "Unknown manager 
class: " + comp.getClass();
 
         if (addToList)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
index b8c1e11..867e26d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteEx.java
@@ -88,13 +88,6 @@ public interface IgniteEx extends Ignite {
     public boolean allEventsUserRecordable(int[] types);
 
     /**
-     * Gets list of compatible versions.
-     *
-     * @return Compatible versions.
-     */
-    public Collection<String> compatibleVersions();
-
-    /**
      * Whether or not remote JMX management is enabled for this node.
      *
      * @return {@code True} if remote JMX management is enabled - {@code 
false} otherwise.

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index 2789a0c..530613d 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -56,6 +56,7 @@ import org.apache.ignite.internal.processors.security.*;
 import org.apache.ignite.internal.processors.segmentation.*;
 import org.apache.ignite.internal.processors.service.*;
 import org.apache.ignite.internal.processors.session.*;
+import org.apache.ignite.internal.processors.spi.*;
 import org.apache.ignite.internal.processors.task.*;
 import org.apache.ignite.internal.processors.timeout.*;
 import org.apache.ignite.internal.util.*;
@@ -98,9 +99,6 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, 
Externalizable {
     /** */
     private static final long serialVersionUID = 0L;
 
-    /** Compatible versions. */
-    private static final String COMPATIBLE_VERS = 
IgniteProperties.get("ignite.compatible.vers");
-
     /** Ignite site that is shown in log messages. */
     static final String SITE = "ignite.incubator.apache.org";
 
@@ -189,10 +187,6 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
     @GridToStringExclude
     private final AtomicReference<GridKernalGateway> gw = new 
AtomicReference<>();
 
-    /** */
-    @GridToStringExclude
-    private final Collection<String> compatibleVers;
-
     /** Stop guard. */
     @GridToStringExclude
     private final AtomicBoolean stopGuard = new AtomicBoolean();
@@ -213,13 +207,6 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
      */
     public IgniteKernal(@Nullable GridSpringResourceContext rsrcCtx) {
         this.rsrcCtx = rsrcCtx;
-
-        String[] compatibleVers = COMPATIBLE_VERS.split(",");
-
-        for (int i = 0; i < compatibleVers.length; i++)
-            compatibleVers[i] = compatibleVers[i].trim();
-
-        this.compatibleVers = 
Collections.unmodifiableList(Arrays.asList(compatibleVers));
     }
 
     /** {@inheritDoc} */
@@ -748,6 +735,7 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
 
             // Start processors before discovery manager, so they will
             // be able to start receiving messages once discovery completes.
+            startProcessor(createComponent(OsNodeValidator.class, ctx));
             startProcessor(new GridClockSyncProcessor(ctx));
             startProcessor(new GridAffinityProcessor(ctx));
             startProcessor(createComponent(GridSegmentationProcessor.class, 
ctx));
@@ -1171,7 +1159,6 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
         add(ATTR_JIT_NAME, U.getCompilerMx() == null ? "" : 
U.getCompilerMx().getName());
         add(ATTR_BUILD_VER, VER_STR);
         add(ATTR_BUILD_DATE, BUILD_TSTAMP_STR);
-        add(ATTR_COMPATIBLE_VERS, (Serializable)compatibleVersions());
         add(ATTR_MARSHALLER, cfg.getMarshaller().getClass().getName());
         add(ATTR_USER_NAME, System.getProperty("user.name"));
         add(ATTR_GRID_NAME, gridName);
@@ -2568,11 +2555,6 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
     }
 
     /** {@inheritDoc} */
-    @Override public Collection<String> compatibleVersions() {
-        return compatibleVers;
-    }
-
-    /** {@inheritDoc} */
     @Override public void close() throws IgniteException {
         Ignition.stop(gridName, true);
     }
@@ -2746,6 +2728,9 @@ public class IgniteKernal implements IgniteEx, 
IgniteMXBean, Externalizable {
         if (cls.equals(IgniteCacheObjectProcessor.class))
             return (T)new IgniteCacheObjectProcessorImpl(ctx);
 
+        if (cls.equals(OsNodeValidator.class))
+            return (T)new OsNodeValidator(ctx);
+
         Class<T> implCls = null;
 
         try {

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
index d1a829e..98cc3a7 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteNodeAttributes.java
@@ -31,9 +31,6 @@ public final class IgniteNodeAttributes {
     public static final String ATTR_BUILD_DATE = ATTR_PREFIX + ".build.date";
 
     /** Internal attribute name constant. */
-    public static final String ATTR_COMPATIBLE_VERS = ATTR_PREFIX + 
".compatible.vers";
-
-    /** Internal attribute name constant. */
     public static final String ATTR_MARSHALLER = ATTR_PREFIX + ".marshaller";
 
     /** Internal attribute name constant. */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/NodeValidator.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/NodeValidator.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/NodeValidator.java
new file mode 100644
index 0000000..091deda
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/NodeValidator.java
@@ -0,0 +1,27 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.spi;
+
+import org.apache.ignite.internal.*;
+
+/**
+ * Node Validator.
+ */
+public interface NodeValidator extends GridComponent {
+    //No-op.
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/OsNodeValidator.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/OsNodeValidator.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/OsNodeValidator.java
new file mode 100644
index 0000000..a350157
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/spi/OsNodeValidator.java
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.ignite.internal.processors.spi;
+
+import org.apache.ignite.cluster.*;
+import org.apache.ignite.internal.*;
+import org.apache.ignite.internal.processors.*;
+import org.apache.ignite.internal.util.typedef.*;
+import org.apache.ignite.internal.util.typedef.internal.*;
+import org.apache.ignite.spi.*;
+import org.jetbrains.annotations.*;
+
+import java.util.*;
+
+import static org.apache.ignite.internal.IgniteNodeAttributes.*;
+
+/**
+ * Node validator.
+ */
+public class OsNodeValidator extends GridProcessorAdapter implements 
NodeValidator {
+    /**
+     * @param ctx Kernal context.
+     */
+    public OsNodeValidator(GridKernalContext ctx) {
+        super(ctx);
+    }
+
+    /** {@inheritDoc} */
+    @Nullable @Override public IgniteSpiNodeValidationResult 
validateNode(ClusterNode node) {
+        ClusterNode locNode = ctx.discovery().localNode();
+
+        // Check version.
+        String locBuildVer = locNode.attribute(ATTR_BUILD_VER);
+        String rmtBuildVer = node.attribute(ATTR_BUILD_VER);
+
+        if (!F.eq(rmtBuildVer, locBuildVer)) {
+            // OS nodes don't support rolling updates.
+            if (!locBuildVer.equals(rmtBuildVer)) {
+                String errMsg = "Local node and remote node have different 
version numbers " +
+                    "(node will not join, Ignite does not support rolling 
updates, " +
+                    "so versions must be exactly the same) " +
+                    "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + 
rmtBuildVer +
+                    ", locNodeAddrs=" + U.addressesAsString(locNode) +
+                    ", rmtNodeAddrs=" + U.addressesAsString(node) +
+                    ", locNodeId=" + locNode.id() + ", rmtNodeId=" + node.id() 
+ ']';
+
+                LT.warn(log, null, errMsg);
+
+                // Always output in debug.
+                if (log.isDebugEnabled())
+                    log.debug(errMsg);
+
+                return new IgniteSpiNodeValidationResult(node.id(), errMsg, 
errMsg);
+            }
+
+        }
+
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
index d5c05f7..d17f9b3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpi.java
@@ -3254,110 +3254,6 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
                     return;
                 }
 
-                // Check version.
-                String locBuildVer = locNode.attribute(ATTR_BUILD_VER);
-                String rmtBuildVer = node.attribute(ATTR_BUILD_VER);
-
-                if (!F.eq(rmtBuildVer, locBuildVer)) {
-                    // OS nodes don't support rolling updates.
-                    if (!locBuildVer.equals(rmtBuildVer)) {
-                        String errMsg = "Local node and remote node have 
different version numbers " +
-                            "(node will not join, Ignite does not support 
rolling updates, " +
-                            "so versions must be exactly the same) " +
-                            "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + 
rmtBuildVer +
-                            ", locNodeAddrs=" + U.addressesAsString(locNode) +
-                            ", rmtNodeAddrs=" + U.addressesAsString(node) +
-                            ", locNodeId=" + locNode.id() + ", rmtNodeId=" + 
msg.creatorNodeId() + ']';
-
-                        LT.warn(log, null, errMsg);
-
-                        // Always output in debug.
-                        if (log.isDebugEnabled())
-                            log.debug(errMsg);
-
-                        try {
-                            String sndMsg = "Local node and remote node have 
different version numbers " +
-                                "(node will not join, Ignite does not support 
rolling updates, " +
-                                "so versions must be exactly the same) " +
-                                "[locBuildVer=" + rmtBuildVer + ", 
rmtBuildVer=" + locBuildVer +
-                                ", locNodeAddrs=" + U.addressesAsString(node) 
+ ", locPort=" + node.discoveryPort() +
-                                ", rmtNodeAddr=" + 
U.addressesAsString(locNode) + ", locNodeId=" + node.id() +
-                                ", rmtNodeId=" + locNode.id() + ']';
-
-                            trySendMessageDirectly(node,
-                                    new 
TcpDiscoveryCheckFailedMessage(locNodeId, sndMsg));
-                        }
-                        catch (IgniteSpiException e) {
-                            if (log.isDebugEnabled())
-                                log.debug("Failed to send version check failed 
message to node " +
-                                    "[node=" + node + ", err=" + 
e.getMessage() + ']');
-
-                            onException("Failed to send version check failed 
message to node " +
-                                "[node=" + node + ", err=" + e.getMessage() + 
']', e);
-                        }
-
-                        // Ignore join request.
-                        return;
-                    }
-
-                    Collection<String> locCompatibleVers = 
locNode.attribute(ATTR_COMPATIBLE_VERS);
-                    Collection<String> rmtCompatibleVers = 
node.attribute(ATTR_COMPATIBLE_VERS);
-
-                    if (F.contains(rmtCompatibleVers, locBuildVer) || 
F.contains(locCompatibleVers, rmtBuildVer)) {
-                        String errMsg = "Local node's build version differs 
from remote node's, " +
-                            "but they are compatible (will continue join 
process) " +
-                            "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + 
rmtBuildVer +
-                            ", locNodeAddrs=" + U.addressesAsString(locNode) +
-                            ", rmtNodeAddrs=" + U.addressesAsString(node) +
-                            ", locNodeId=" + locNode.id() + ", rmtNodeId=" + 
msg.creatorNodeId() + ']';
-
-                        LT.warn(log, null, errMsg);
-
-                        // Always output in debug.
-                        if (log.isDebugEnabled())
-                            log.debug(errMsg);
-                    }
-                    else {
-                        String errMsg = "Local node's and remote node's build 
versions are not compatible " +
-                            "(topologies built with different Ignite versions 
" +
-                            "are supported in Enterprise version only) "  +
-                            "[locBuildVer=" + locBuildVer + ", rmtBuildVer=" + 
rmtBuildVer +
-                            ", locNodeAddrs=" + U.addressesAsString(locNode) +
-                            ", rmtNodeAddrs=" + U.addressesAsString(node) +
-                            ", locNodeId=" + locNode.id() + ", rmtNodeId=" + 
msg.creatorNodeId() + ']';
-
-                        LT.warn(log, null, errMsg);
-
-                        // Always output in debug.
-                        if (log.isDebugEnabled())
-                            log.debug(errMsg);
-
-                        try {
-                            String sndMsg = "Local node's and remote node's 
build versions are not compatible " +
-                                "(topologies built with different Ignite 
versions " +
-                                "are supported in Enterprise version only) " +
-                                " [locBuildVer=" + rmtBuildVer + ", 
rmtBuildVer=" + locBuildVer +
-                                ", locNodeAddrs=" + U.addressesAsString(node) 
+ ", locPort=" + node.discoveryPort() +
-                                ", rmtNodeAddr=" + 
U.addressesAsString(locNode) + ", locNodeId=" + node.id() +
-                                ", rmtNodeId=" + locNode.id() + ']';
-
-                            trySendMessageDirectly(node,
-                                new TcpDiscoveryCheckFailedMessage(locNodeId, 
sndMsg));
-                        }
-                        catch (IgniteSpiException e) {
-                            if (log.isDebugEnabled())
-                                log.debug("Failed to send version check failed 
message to node " +
-                                    "[node=" + node + ", err=" + 
e.getMessage() + ']');
-
-                            onException("Failed to send version check failed 
message to node " +
-                                "[node=" + node + ", err=" + e.getMessage() + 
']', e);
-                        }
-
-                        // Ignore join request.
-                        return;
-                    }
-                }
-
                 String locMarsh = locNode.attribute(ATTR_MARSHALLER);
                 String rmtMarsh = node.attribute(ATTR_MARSHALLER);
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/cfa3a96f/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultMapReducePlannerSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultMapReducePlannerSelfTest.java
 
b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultMapReducePlannerSelfTest.java
index 7075f2e..1ff8a0f 100644
--- 
a/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultMapReducePlannerSelfTest.java
+++ 
b/modules/hadoop/src/test/java/org/apache/ignite/internal/processors/hadoop/HadoopDefaultMapReducePlannerSelfTest.java
@@ -977,11 +977,6 @@ public class HadoopDefaultMapReducePlannerSelfTest extends 
HadoopAbstractSelfTes
         }
 
         /** {@inheritDoc} */
-        @Override public Collection<String> compatibleVersions() {
-            return null;
-        }
-
-        /** {@inheritDoc} */
         @Override public boolean isJmxRemoteEnabled() {
             return false;
         }

Reply via email to