Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-721 2d3eac747 -> bf7b9f861


# ignite-537


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

Branch: refs/heads/ignite-721
Commit: 33dbf24b7bac8b5eea2709b7cc2bbd721a92ab70
Parents: fd9cdff
Author: sboikov <sboi...@gridgain.com>
Authored: Thu Apr 9 14:46:34 2015 +0300
Committer: sboikov <sboi...@gridgain.com>
Committed: Thu Apr 9 18:15:39 2015 +0300

----------------------------------------------------------------------
 .../discovery/GridDiscoveryManager.java         |  41 ++++--
 .../spi/discovery/DiscoverySpiDataExchange.java |  13 +-
 .../discovery/tcp/TcpClientDiscoverySpi.java    |  14 +-
 .../spi/discovery/tcp/TcpDiscoverySpi.java      | 135 ++++++++++++++++++-
 .../discovery/tcp/TcpDiscoverySpiAdapter.java   |  13 ++
 .../messages/TcpDiscoveryGetClassRequest.java   |  47 +++++++
 .../messages/TcpDiscoveryGetClassResponse.java  |  67 +++++++++
 .../TcpDiscoveryJoinRequestMessage.java         |   6 +-
 .../messages/TcpDiscoveryNodeAddedMessage.java  |  16 ++-
 .../discovery/AbstractDiscoverySelfTest.java    |   7 +-
 .../tcp/TcpDiscoverySpiStartStopSelfTest.java   |   7 +-
 .../junits/spi/GridSpiAbstractTest.java         |   7 +-
 12 files changed, 334 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/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 04ff423..7662bcc 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
@@ -36,6 +36,7 @@ import org.apache.ignite.internal.util.typedef.*;
 import org.apache.ignite.internal.util.typedef.internal.*;
 import org.apache.ignite.internal.util.worker.*;
 import org.apache.ignite.lang.*;
+import org.apache.ignite.marshaller.jdk.*;
 import org.apache.ignite.plugin.security.*;
 import org.apache.ignite.plugin.segmentation.*;
 import org.apache.ignite.spi.*;
@@ -171,6 +172,9 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
     /** Map of dynamic cache filters. */
     private Map<String, CachePredicate> registeredCaches = new HashMap<>();
 
+    /** */
+    private JdkMarshaller jdkMarsh = new JdkMarshaller();
+
     /** @param ctx Context. */
     public GridDiscoveryManager(GridKernalContext ctx) {
         super(ctx, ctx.config().getDiscoverySpi());
@@ -417,10 +421,10 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
         });
 
         spi.setDataExchange(new DiscoverySpiDataExchange() {
-            @Override public Map<Integer, Object> collect(UUID nodeId) {
+            @Override public Map<Integer, byte[]> collect(UUID nodeId) {
                 assert nodeId != null;
 
-                Map<Integer, Object> data = new HashMap<>();
+                Map<Integer, byte[]> data = new HashMap<>();
 
                 for (GridComponent comp : ctx.components()) {
                     Object compData = comp.collectDiscoveryData(nodeId);
@@ -428,29 +432,48 @@ public class GridDiscoveryManager extends 
GridManagerAdapter<DiscoverySpi> {
                     if (compData != null) {
                         assert comp.discoveryDataType() != null;
 
-                        data.put(comp.discoveryDataType().ordinal(), compData);
+                        try {
+                            byte[] bytes = jdkMarsh.marshal(compData);
+
+                            data.put(comp.discoveryDataType().ordinal(), 
bytes);
+                        }
+                        catch (IgniteCheckedException e) {
+                            U.error(log, "Failed to marshal discovery data " +
+                                "[comp=" + comp + ", data=" + compData + ']', 
e);
+                        }
                     }
                 }
 
                 return data;
             }
 
-            @Override public void onExchange(UUID joiningNodeId, UUID nodeId, 
Map<Integer, Object> data) {
-                for (Map.Entry<Integer, Object> e : data.entrySet()) {
+            @Override public void onExchange(UUID joiningNodeId,
+                UUID nodeId,
+                Map<Integer, byte[]> data,
+                ClassLoader clsLdr) {
+                for (Map.Entry<Integer, byte[]> entry : data.entrySet()) {
                     GridComponent comp = null;
 
                     for (GridComponent c : ctx.components()) {
-                        if (c.discoveryDataType() != null && 
c.discoveryDataType().ordinal() == e.getKey()) {
+                        if (c.discoveryDataType() != null && 
c.discoveryDataType().ordinal() == entry.getKey()) {
                             comp = c;
 
                             break;
                         }
                     }
 
-                    if (comp != null)
-                        comp.onDiscoveryDataReceived(joiningNodeId, nodeId, 
e.getValue());
+                    if (comp != null) {
+                        try {
+                            Object compData = 
jdkMarsh.unmarshal(entry.getValue(), clsLdr);
+
+                            comp.onDiscoveryDataReceived(joiningNodeId, 
nodeId, compData);
+                        }
+                        catch (IgniteCheckedException e) {
+                            U.error(log, "Failed to unmarshal discovery data 
for component: "  + comp, e);
+                        }
+                    }
                     else
-                        U.warn(log, "Received discovery data for unknown 
component: " + e.getKey());
+                        U.warn(log, "Received discovery data for unknown 
component: " + entry.getKey());
                 }
             }
         });

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchange.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchange.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchange.java
index 29f6b5f..06f1af8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchange.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/DiscoverySpiDataExchange.java
@@ -33,13 +33,18 @@ public interface DiscoverySpiDataExchange {
      * @param joiningNodeId ID of new node that joins topology.
      * @return Collection of discovery data objects from different components.
      */
-    public Map<Integer, Object> collect(UUID joiningNodeId);
+    public Map<Integer, byte[]> collect(UUID joiningNodeId);
 
     /**
      * Notifies discovery manager about data received from remote node.
      *
-     * @param joiningNodeId Remote node ID.
-     * @param data Collection of discovery data objects from different 
components.
+     * @param joiningNodeId Joining node ID.
+     * @param nodeId Remote node ID for which data is provided.
+     * @param data Collection of marshalled discovery data objects from 
different components.
+     * @param clsLdr Class loader to use for discovery data unmarshalling.
      */
-    public void onExchange(UUID joiningNodeId, UUID nodeId, Map<Integer, 
Object> data);
+    public void onExchange(UUID joiningNodeId,
+        UUID nodeId,
+        Map<Integer, byte[]> data,
+        ClassLoader clsLdr);
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
index bf69efb..6ced987 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpClientDiscoverySpi.java
@@ -893,11 +893,15 @@ public class TcpClientDiscoverySpi extends 
TcpDiscoverySpiAdapter implements Tcp
                         if (msg.topologyHistory() != null)
                             topHist.putAll(msg.topologyHistory());
 
-                        Map<UUID, Map<Integer, Object>> dataMap = 
msg.oldNodesDiscoveryData();
+                        Map<UUID, Map<Integer, byte[]>> dataMap = 
msg.oldNodesDiscoveryData();
 
                         if (dataMap != null) {
-                            for (Map.Entry<UUID, Map<Integer, Object>> entry : 
dataMap.entrySet())
-                                exchange.onExchange(newNodeId, entry.getKey(), 
entry.getValue());
+                            for (Map.Entry<UUID, Map<Integer, byte[]>> entry : 
dataMap.entrySet()) {
+                                exchange.onExchange(newNodeId,
+                                    entry.getKey(),
+                                    entry.getValue(),
+                                    exchangeClassLoader(newNodeId));
+                            }
                         }
 
                         locNode.setAttributes(node.attributes());
@@ -917,10 +921,10 @@ public class TcpClientDiscoverySpi extends 
TcpDiscoverySpiAdapter implements Tcp
                     if (log.isDebugEnabled())
                         log.debug("Added new node to topology: " + node);
 
-                    Map<Integer, Object> data = msg.newNodeDiscoveryData();
+                    Map<Integer, byte[]> data = msg.newNodeDiscoveryData();
 
                     if (data != null)
-                        exchange.onExchange(newNodeId, newNodeId, data);
+                        exchange.onExchange(newNodeId, newNodeId, data, 
exchangeClassLoader(newNodeId));
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/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 bad8837..ef22291 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
@@ -2192,6 +2192,54 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
         return dfltAllowMatch && bothHaveSamePerms;
     }
 
+    /**
+     * @param req Get class request.
+     */
+    private TcpDiscoveryGetClassResponse 
processGetClassRequest(TcpDiscoveryGetClassRequest req) {
+        assert !F.isEmpty(req.className()) : req;
+
+        InputStream in = getClass().getResourceAsStream(req.className());
+
+        byte[] clsBytes = null;
+        String err = null;
+
+        if (in != null) {
+            try {
+                GridByteArrayList bytes = new GridByteArrayList(1024);
+
+                bytes.readAll(in);
+
+                clsBytes = bytes.entireArray();
+            }
+            catch (IOException e) {
+                err = "Failed to load class '" + req.className() + "' due IO 
error: " + e;
+
+                U.error(log, err, e);
+            }
+            finally {
+                U.close(in, log);
+            }
+        }
+        else {
+            if (log.isDebugEnabled())
+                log.debug("Failed to find requested class: " + 
req.className());
+
+            err = "Class '" + req.className() + "' not found.";
+        }
+
+        TcpDiscoveryGetClassResponse res;
+
+        if (clsBytes != null)
+            res = new TcpDiscoveryGetClassResponse(getLocalNodeId(), clsBytes);
+        else {
+            assert err != null;
+
+            res = new TcpDiscoveryGetClassResponse(getLocalNodeId(), err);
+        }
+
+        return res;
+    }
+
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(TcpDiscoverySpi.class, this);
@@ -3540,10 +3588,10 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
                 if (topChanged) {
                     assert !node.visible() : "Added visible node [node=" + 
node + ", locNode=" + locNode + ']';
 
-                    Map<Integer, Object> data = msg.newNodeDiscoveryData();
+                    Map<Integer, byte[]> data = msg.newNodeDiscoveryData();
 
                     if (data != null)
-                        exchange.onExchange(node.id(), node.id(), data);
+                        exchange.onExchange(node.id(), node.id(), data, 
exchangeClassLoader(node.id()));
 
                     msg.addDiscoveryData(locNodeId, 
exchange.collect(node.id()));
                 }
@@ -3555,7 +3603,7 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
 
             if (msg.verified() && locNodeId.equals(node.id())) {
                 // Discovery data.
-                Map<UUID, Map<Integer, Object>> dataMap;
+                Map<UUID, Map<Integer, byte[]>> dataMap;
 
                 synchronized (mux) {
                     if (spiState == CONNECTING && locNode.internalOrder() != 
node.internalOrder()) {
@@ -3614,8 +3662,12 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
 
                 // Notify outside of synchronized block.
                 if (dataMap != null) {
-                    for (Map.Entry<UUID, Map<Integer, Object>> entry : 
dataMap.entrySet())
-                        exchange.onExchange(node.id(), entry.getKey(), 
entry.getValue());
+                    for (Map.Entry<UUID, Map<Integer, byte[]>> entry : 
dataMap.entrySet()) {
+                        exchange.onExchange(node.id(),
+                            entry.getKey(),
+                            entry.getValue(),
+                            exchangeClassLoader(node.id()));
+                    }
                 }
             }
 
@@ -4872,6 +4924,13 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
 
                             continue;
                         }
+                        else if (msg instanceof TcpDiscoveryGetClassRequest) {
+                            TcpDiscoveryGetClassResponse res = 
processGetClassRequest((TcpDiscoveryGetClassRequest)msg);
+
+                            writeToSocket(sock, res);
+
+                            continue;
+                        }
 
                         msgWorker.addMessage(msg);
 
@@ -5162,4 +5221,70 @@ public class TcpDiscoverySpi extends 
TcpDiscoverySpiAdapter implements TcpDiscov
             U.closeQuiet(sock);
         }
     }
+    /**
+     *
+     */
+    private class DiscoveryDeploymentClassLoader extends ClassLoader {
+        /** */
+        private final UUID nodeId;
+
+        /** */
+        private Socket sock;
+
+        /**
+         * @param nodeId Node ID.
+         */
+        public DiscoveryDeploymentClassLoader(UUID nodeId) {
+            this.nodeId = nodeId;
+        }
+
+        /** {@inheritDoc} */
+        @Override protected Class<?> findClass(String name) throws 
ClassNotFoundException {
+            TcpDiscoveryGetClassResponse res = requestClass(name);
+
+            if (res.error() != null)
+                throw new ClassNotFoundException(res.error());
+
+            assert res.classBytes() != null;
+
+            Class<?> cls = defineClass(name, res.classBytes(), 0, 
res.classBytes().length);
+
+            return cls;
+        }
+
+        /**
+         * @param name Class name.
+         * @return Class response.
+         * @throws ClassNotFoundException If request failed.
+         */
+        private TcpDiscoveryGetClassResponse requestClass(String name) throws 
ClassNotFoundException {
+            sock = connect();
+
+            if (sock == null)
+                throw new ClassNotFoundException("Failed to load class, can 
not connect to peer node " +
+                    "[cls=" + name + ", node=" + nodeId + ']');
+
+            try {
+                writeToSocket(sock, new 
TcpDiscoveryGetClassRequest(getLocalNodeId(), name));
+
+                TcpDiscoveryGetClassResponse res = readMessage(sock, null, 
netTimeout);
+
+                return res;
+            }
+            catch (IOException | IgniteCheckedException e) {
+                throw new ClassNotFoundException("Failed to load class: " + 
name, e);
+            }
+        }
+
+        private Socket connect() {
+            if (sock == null) {
+                TcpDiscoveryNode node = ring.node(nodeId);
+
+                if (node == null)
+                    return null;
+            }
+
+            return sock;
+        }
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java
index e949846..51d28f9 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiAdapter.java
@@ -725,6 +725,19 @@ abstract class TcpDiscoverySpiAdapter extends 
IgniteSpiAdapter implements Discov
     }
 
     /**
+     * @param nodeId Node ID.
+     * @return Class loader for exchange data unmarshalling.
+     */
+    protected ClassLoader exchangeClassLoader(UUID nodeId) {
+        assert ignite != null;
+
+        if (!ignite.configuration().isPeerClassLoadingEnabled() || 
nodeId.equals(getLocalNodeId()))
+            return null;
+
+        return null;
+    }
+
+    /**
      * @param msg Message.
      * @return Whether delivery of the message is ensured.
      */

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassRequest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassRequest.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassRequest.java
new file mode 100644
index 0000000..e372ea2
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassRequest.java
@@ -0,0 +1,47 @@
+/*
+ * 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.spi.discovery.tcp.messages;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class TcpDiscoveryGetClassRequest extends TcpDiscoveryAbstractMessage {
+    /** */
+    private static final long serialVersionUID = 0L;
+
+    /** */
+    private String clsName;
+
+    /**
+     * @param creatorNodeId Creator node ID.
+     * @param clsName Class name.
+     */
+    public TcpDiscoveryGetClassRequest(UUID creatorNodeId, String clsName) {
+        super(creatorNodeId);
+        this.clsName = clsName;
+    }
+
+    /**
+     * @return Class name.
+     */
+    public String className() {
+        return clsName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassResponse.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassResponse.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassResponse.java
new file mode 100644
index 0000000..b1afe1c
--- /dev/null
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryGetClassResponse.java
@@ -0,0 +1,67 @@
+/*
+ * 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.spi.discovery.tcp.messages;
+
+import org.jetbrains.annotations.*;
+
+import java.util.*;
+
+/**
+ *
+ */
+public class TcpDiscoveryGetClassResponse extends TcpDiscoveryAbstractMessage {
+    /** */
+    private String errMsg;
+
+    /** */
+    private byte[] clsBytes;
+
+    /**
+     * @param creatorNodeId Creator node ID.
+     * @param clsBytes Class bytes.
+     */
+    public TcpDiscoveryGetClassResponse(UUID creatorNodeId, byte[] clsBytes) {
+        super(creatorNodeId);
+
+        this.clsBytes = clsBytes;
+    }
+
+    /**
+     * @param creatorNodeId Creator node ID.
+     * @param errMsg Error message.
+     */
+    public TcpDiscoveryGetClassResponse(UUID creatorNodeId, String errMsg) {
+        super(creatorNodeId);
+
+        this.errMsg = errMsg;
+    }
+
+    /**
+     * @return Error if class loading failed.
+     */
+    @Nullable public String error() {
+        return errMsg;
+    }
+
+    /**
+     * @return Loaded class bytes.
+     */
+    public byte[] classBytes() {
+        return clsBytes;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java
index 5e6b892..5fd99b2 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryJoinRequestMessage.java
@@ -34,7 +34,7 @@ public class TcpDiscoveryJoinRequestMessage extends 
TcpDiscoveryAbstractMessage
     private final TcpDiscoveryNode node;
 
     /** Discovery data. */
-    private final Map<Integer, Object> discoData;
+    private final Map<Integer, byte[]> discoData;
 
     /**
      * Constructor.
@@ -42,7 +42,7 @@ public class TcpDiscoveryJoinRequestMessage extends 
TcpDiscoveryAbstractMessage
      * @param node New node that wants to join.
      * @param discoData Discovery data.
      */
-    public TcpDiscoveryJoinRequestMessage(TcpDiscoveryNode node, Map<Integer, 
Object> discoData) {
+    public TcpDiscoveryJoinRequestMessage(TcpDiscoveryNode node, Map<Integer, 
byte[]> discoData) {
         super(node.id());
 
         this.node = node;
@@ -61,7 +61,7 @@ public class TcpDiscoveryJoinRequestMessage extends 
TcpDiscoveryAbstractMessage
     /**
      * @return Discovery data.
      */
-    public Map<Integer, Object> discoveryData() {
+    public Map<Integer, byte[]> discoveryData() {
         return discoData;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java
 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java
index 7b1704e..a9303f3 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/messages/TcpDiscoveryNodeAddedMessage.java
@@ -54,10 +54,10 @@ public class TcpDiscoveryNodeAddedMessage extends 
TcpDiscoveryAbstractMessage {
     private Map<Long, Collection<ClusterNode>> topHist;
 
     /** Discovery data from new node. */
-    private Map<Integer, Object> newNodeDiscoData;
+    private Map<Integer, byte[]> newNodeDiscoData;
 
     /** Discovery data from old nodes. */
-    private Map<UUID, Map<Integer, Object>> oldNodesDiscoData;
+    private Map<UUID, Map<Integer, byte[]>> oldNodesDiscoData;
 
     /** Start time of the first grid node. */
     private final long gridStartTime;
@@ -70,8 +70,9 @@ public class TcpDiscoveryNodeAddedMessage extends 
TcpDiscoveryAbstractMessage {
      * @param newNodeDiscoData New Node discovery data.
      * @param gridStartTime Start time of the first grid node.
      */
-    public TcpDiscoveryNodeAddedMessage(UUID creatorNodeId, TcpDiscoveryNode 
node,
-        Map<Integer, Object> newNodeDiscoData,
+    public TcpDiscoveryNodeAddedMessage(UUID creatorNodeId,
+        TcpDiscoveryNode node,
+        Map<Integer, byte[]> newNodeDiscoData,
         long gridStartTime)
     {
         super(creatorNodeId);
@@ -163,21 +164,22 @@ public class TcpDiscoveryNodeAddedMessage extends 
TcpDiscoveryAbstractMessage {
     /**
      * @return Discovery data from new node.
      */
-    public Map<Integer, Object> newNodeDiscoveryData() {
+    public Map<Integer, byte[]> newNodeDiscoveryData() {
         return newNodeDiscoData;
     }
 
     /**
      * @return Discovery data from old nodes.
      */
-    public Map<UUID, Map<Integer, Object>> oldNodesDiscoveryData() {
+    public Map<UUID, Map<Integer, byte[]>> oldNodesDiscoveryData() {
         return oldNodesDiscoData;
     }
 
     /**
+     * @param nodeId Node ID.
      * @param discoData Discovery data to add.
      */
-    public void addDiscoveryData(UUID nodeId, Map<Integer, Object> discoData) {
+    public void addDiscoveryData(UUID nodeId, Map<Integer, byte[]> discoData) {
         // Old nodes disco data may be null if message
         // makes more than 1 pass due to stopping of the nodes in topology.
         if (oldNodesDiscoData != null)

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
index 234e3cd..78710fe 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/AbstractDiscoverySelfTest.java
@@ -379,11 +379,14 @@ public abstract class AbstractDiscoverySelfTest<T extends 
IgniteSpi> extends Gri
                 });
 
                 spi.setDataExchange(new DiscoverySpiDataExchange() {
-                    @Override public Map<Integer, Object> collect(UUID nodeId) 
{
+                    @Override public Map<Integer, byte[]> collect(UUID nodeId) 
{
                         return new HashMap<>();
                     }
 
-                    @Override public void onExchange(UUID joiningNodeId, UUID 
nodeId, Map<Integer, Object> data) {
+                    @Override public void onExchange(UUID joiningNodeId,
+                        UUID nodeId,
+                        Map<Integer, byte[]> data,
+                        ClassLoader clsLdr) {
                         // No-op.
                     }
                 });

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiStartStopSelfTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiStartStopSelfTest.java
 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiStartStopSelfTest.java
index b0e22b4..6692046 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiStartStopSelfTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/spi/discovery/tcp/TcpDiscoverySpiStartStopSelfTest.java
@@ -44,11 +44,14 @@ public class TcpDiscoverySpiStartStopSelfTest extends 
GridSpiStartStopAbstractTe
     @GridSpiTestConfig
     public DiscoverySpiDataExchange getDataExchange() {
         return new DiscoverySpiDataExchange() {
-            @Override public Map<Integer, Object> collect(UUID nodeId) {
+            @Override public Map<Integer, byte[]> collect(UUID nodeId) {
                 return null;
             }
 
-            @Override public void onExchange(UUID joiningNodeId, UUID nodeId, 
Map<Integer, Object> data) {
+            @Override public void onExchange(UUID joiningNodeId,
+                UUID nodeId,
+                Map<Integer, byte[]> data,
+                ClassLoader clsLdr) {
                 // No-op.
             }
         };

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/33dbf24b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
index 7898c3d..7b83979 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/testframework/junits/spi/GridSpiAbstractTest.java
@@ -215,11 +215,14 @@ public abstract class GridSpiAbstractTest<T extends 
IgniteSpi> extends GridAbstr
             discoSpi.setMetricsProvider(createMetricsProvider());
 
             discoSpi.setDataExchange(new DiscoverySpiDataExchange() {
-                @Override public Map<Integer, Object> collect(UUID nodeId) {
+                @Override public Map<Integer, byte[]> collect(UUID nodeId) {
                     return new HashMap<>();
                 }
 
-                @Override public void onExchange(UUID joiningNodeId, UUID 
nodeId, Map<Integer, Object> data) {
+                @Override public void onExchange(UUID joiningNodeId,
+                    UUID nodeId,
+                    Map<Integer, byte[]> data,
+                    ClassLoader clsLdr) {
                 }
             });
 

Reply via email to