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) { } });