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/08/27 12:40:50 UTC

[1/2] ignite git commit: ignite-1301: added portable protocol version info to node's attributes

Repository: ignite
Updated Branches:
  refs/heads/ignite-1301 3d46b6248 -> 6c5e833cf


ignite-1301: added portable protocol version info to node's attributes


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

Branch: refs/heads/ignite-1301
Commit: 7a30405e210791ebd73b63ebeeda8cc479e40a6e
Parents: e428206
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Aug 27 10:34:59 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Aug 27 10:34:59 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/internal/IgniteKernal.java    |  4 ++
 .../ignite/internal/IgniteNodeAttributes.java   |  3 ++
 .../discovery/GridDiscoveryManager.java         | 13 ++++-
 .../marshaller/portable/PortableMarshaller.java |  3 ++
 .../GridDiscoveryManagerAttributesSelfTest.java | 50 ++++++++++++++++++++
 5 files changed, 71 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/7a30405e/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 1db73bf..c134c90 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
@@ -71,6 +71,7 @@ import org.apache.ignite.lang.*;
 import org.apache.ignite.lifecycle.*;
 import org.apache.ignite.marshaller.*;
 import org.apache.ignite.marshaller.optimized.*;
+import org.apache.ignite.marshaller.portable.*;
 import org.apache.ignite.mxbean.*;
 import org.apache.ignite.plugin.*;
 import org.apache.ignite.spi.*;
@@ -1170,6 +1171,9 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
         add(ATTR_MARSHALLER, cfg.getMarshaller().getClass().getName());
         add(ATTR_USER_NAME, System.getProperty("user.name"));
         add(ATTR_GRID_NAME, gridName);
+        add(ATTR_PORTABLE_PROTO_VER, cfg.getMarshaller() instanceof PortableMarshaller ?
+            ((PortableMarshaller)cfg.getMarshaller()).getProtocolVersion().toString() :
+            PortableMarshaller.DFLT_PORTABLE_PROTO_VER.toString());
 
         add(ATTR_PEER_CLASSLOADING, cfg.isPeerClassLoadingEnabled());
         add(ATTR_DEPLOYMENT_MODE, cfg.getDeploymentMode());

http://git-wip-us.apache.org/repos/asf/ignite/blob/7a30405e/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 10b8df0..ea3eafd 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
@@ -135,6 +135,9 @@ public final class IgniteNodeAttributes {
     /** Node consistent id. */
     public static final String ATTR_NODE_CONSISTENT_ID = ATTR_PREFIX + ".consistent.id";
 
+    /** Portable protocol version. */
+    public static final String ATTR_PORTABLE_PROTO_VER = ATTR_PREFIX + ".portable.proto.ver";
+
     /**
      * Enforces singleton.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/7a30405e/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 a7363af..8437468 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
@@ -906,6 +906,8 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
         // Fetch local node attributes once.
         String locPreferIpV4 = locNode.attribute("java.net.preferIPv4Stack");
 
+        String locPortableProtoVer = locNode.attribute(ATTR_PORTABLE_PROTO_VER);
+
         Object locMode = locNode.attribute(ATTR_DEPLOYMENT_MODE);
 
         int locJvmMajVer = nodeJavaMajorVersion(locNode);
@@ -950,11 +952,18 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> {
                 boolean rmtP2pEnabled = n.attribute(ATTR_PEER_CLASSLOADING);
 
                 if (locP2pEnabled != rmtP2pEnabled)
-                    throw new IgniteCheckedException("Remote node has peer class loading enabled flag different from local " +
-                        "[locId8=" + U.id8(locNode.id()) + ", locPeerClassLoading=" + locP2pEnabled +
+                    throw new IgniteCheckedException("Remote node has peer class loading enabled flag different from" +
+                        " local [locId8=" + U.id8(locNode.id()) + ", locPeerClassLoading=" + locP2pEnabled +
                         ", rmtId8=" + U.id8(n.id()) + ", rmtPeerClassLoading=" + rmtP2pEnabled +
                         ", rmtAddrs=" + U.addressesAsString(n) + ']');
             }
+
+            String rmtPortableProtoVer = n.attribute(ATTR_PORTABLE_PROTO_VER);
+
+            // In order to support backward compatibility skip the check for nodes that don't have this attribute.
+            if (rmtPortableProtoVer != null && !F.eq(locPortableProtoVer, rmtPortableProtoVer))
+                throw new IgniteCheckedException("Remote node has portable protocol version different from local " +
+                    "[locVersion=" + locPortableProtoVer + ", rmtVersion=" + rmtPortableProtoVer + ']');
         }
 
         if (log.isDebugEnabled())

http://git-wip-us.apache.org/repos/asf/ignite/blob/7a30405e/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java b/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java
index 2a17363..a4c8b80 100644
--- a/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/marshaller/portable/PortableMarshaller.java
@@ -277,6 +277,9 @@ public class PortableMarshaller extends AbstractMarshaller {
      * @param protoVer Portable protocol version.
      */
     public void setProtocolVersion(PortableProtocolVersion protoVer) {
+        if (protoVer == null)
+            throw new IllegalArgumentException("Wrong portable protocol version: " + protoVer);
+
         this.protoVer = protoVer;
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/7a30405e/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
index e76c615..7e11592 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
@@ -18,12 +18,17 @@
 package org.apache.ignite.internal.managers.discovery;
 
 import org.apache.ignite.*;
+import org.apache.ignite.cluster.*;
 import org.apache.ignite.configuration.*;
+import org.apache.ignite.internal.*;
 import org.apache.ignite.spi.discovery.tcp.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.*;
 import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.*;
 import org.apache.ignite.testframework.junits.common.*;
 
+import java.lang.reflect.*;
+import java.util.*;
+
 import static org.apache.ignite.configuration.DeploymentMode.*;
 
 /**
@@ -151,6 +156,51 @@ public abstract class GridDiscoveryManagerAttributesSelfTest extends GridCommonA
     }
 
     /**
+     * @throws Exception If failed.
+     */
+    public void testDifferentPortableProtocolVersions() throws Exception {
+        startGridWithPortableProtocolVer("VER_99_99_99");
+
+        try {
+            startGrid(1);
+
+            fail();
+        }
+        catch (IgniteCheckedException e) {
+            if (!e.getCause().getMessage().startsWith("Remote node has portable protocol version different from local"))
+                throw e;
+        }
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    public void testNullPortableProtocolVersion() throws Exception {
+        startGridWithPortableProtocolVer(null);
+
+        // Must not fail in order to preserve backward compatibility with the nodes that don't have this property yet.
+        startGrid(1);
+    }
+
+    /**
+     * @throws Exception If failed.
+     */
+    private void startGridWithPortableProtocolVer(String ver) throws Exception {
+        Ignite ignite = startGrid(0);
+
+        ClusterNode clusterNode = ignite.cluster().localNode();
+
+        Field f = clusterNode.getClass().getDeclaredField("attrs");
+        f.setAccessible(true);
+
+        Map<String, Object> attrs = new HashMap<>((Map<String, Object>)f.get(clusterNode));
+
+        attrs.put(IgniteNodeAttributes.ATTR_PORTABLE_PROTO_VER, ver);
+
+        f.set(clusterNode, attrs);
+    }
+
+    /**
      * @param preferIpV4 {@code java.net.preferIPv4Stack} system property value.
      * @throws Exception If failed.
      */


[2/2] ignite git commit: Merge remote-tracking branch 'remotes/origin/ignite-1301' into ignite-1301

Posted by sb...@apache.org.
Merge remote-tracking branch 'remotes/origin/ignite-1301' into ignite-1301


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

Branch: refs/heads/ignite-1301
Commit: 6c5e833cf08c58ce414a70f9e0db47fcffd2aa2a
Parents: 3d46b62 7a30405
Author: Denis Magda <dm...@gridgain.com>
Authored: Thu Aug 27 13:40:05 2015 +0300
Committer: Denis Magda <dm...@gridgain.com>
Committed: Thu Aug 27 13:40:05 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/internal/IgniteKernal.java    |  4 ++
 .../ignite/internal/IgniteNodeAttributes.java   |  3 ++
 .../discovery/GridDiscoveryManager.java         | 13 ++++-
 .../marshaller/portable/PortableMarshaller.java |  3 ++
 .../GridDiscoveryManagerAttributesSelfTest.java | 50 ++++++++++++++++++++
 5 files changed, 71 insertions(+), 2 deletions(-)
----------------------------------------------------------------------