Repository: ignite Updated Branches: refs/heads/ignite-5578 bc9a41617 -> b3cf893c5
IGNITE-6016 Get rid of checking topology hash in ackTopology - Fixes #2424. Signed-off-by: Alexey Goncharuk <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/199339eb Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/199339eb Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/199339eb Branch: refs/heads/ignite-5578 Commit: 199339ebcf93452df4363f6fe4f70cb02cf10bfd Parents: ad9e210 Author: Ivan Rakov <[email protected]> Authored: Mon Aug 14 12:01:08 2017 +0300 Committer: Alexey Goncharuk <[email protected]> Committed: Mon Aug 14 12:01:08 2017 +0300 ---------------------------------------------------------------------- .../discovery/GridDiscoveryManager.java | 39 ++------------------ .../ignite/internal/GridDiscoverySelfTest.java | 30 --------------- 2 files changed, 4 insertions(+), 65 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/199339eb/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 ebfe339..834ba4d 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 @@ -83,6 +83,7 @@ import org.apache.ignite.internal.processors.cluster.GridClusterStateProcessor; import org.apache.ignite.internal.processors.jobmetrics.GridJobMetrics; import org.apache.ignite.internal.processors.security.SecurityContext; import org.apache.ignite.internal.processors.timeout.GridTimeoutProcessor; +import org.apache.ignite.internal.util.GridAtomicLong; import org.apache.ignite.internal.util.GridBoundedConcurrentLinkedHashMap; import org.apache.ignite.internal.util.GridSpinBusyLock; import org.apache.ignite.internal.util.future.GridFinishedFuture; @@ -205,7 +206,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { private IgniteThread segChkThread; /** Last logged topology. */ - private final AtomicLong lastLoggedTop = new AtomicLong(); + private final GridAtomicLong lastLoggedTop = new GridAtomicLong(); /** Local node. */ private ClusterNode locNode; @@ -1449,11 +1450,9 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { Collection<ClusterNode> allNodes = discoCache.allNodes(); - long hash = topologyHash(allNodes); - // Prevent ack-ing topology for the same topology. // Can happen only during node startup. - if (throttle && lastLoggedTop.getAndSet(hash) == hash) + if (throttle && !lastLoggedTop.setIfGreater(topVer)) return; int totalCpus = cpus(allNodes); @@ -1474,8 +1473,7 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { (ctx.igniteInstanceName() == null ? "default" : ctx.igniteInstanceName()) + U.nl() + ">>> Number of server nodes: " + srvNodes.size() + U.nl() + ">>> Number of client nodes: " + clientNodes.size() + U.nl() + - (discoOrdered ? ">>> Topology version: " + topVer + U.nl() : "") + - ">>> Topology hash: 0x" + Long.toHexString(hash).toUpperCase() + U.nl(); + (discoOrdered ? ">>> Topology version: " + topVer + U.nl() : ""); dbg += ">>> Local: " + locNode.id().toString().toUpperCase() + ", " + @@ -1686,35 +1684,6 @@ public class GridDiscoveryManager extends GridManagerAdapter<DiscoverySpi> { } /** - * Gets topology hash for given set of nodes. - * - * @param nodes Subset of grid nodes for hashing. - * @return Hash for given topology. - */ - public long topologyHash(Iterable<? extends ClusterNode> nodes) { - assert nodes != null; - - Iterator<? extends ClusterNode> iter = nodes.iterator(); - - if (!iter.hasNext()) - return 0; // Special case. - - List<String> uids = new ArrayList<>(); - - for (ClusterNode node : nodes) - uids.add(node.id().toString()); - - Collections.sort(uids); - - CRC32 hash = new CRC32(); - - for (String uuid : uids) - hash.update(uuid.getBytes()); - - return hash.getValue(); - } - - /** * Gets future that will be completed when current topology version becomes greater or equal to argument passed. * * @param awaitVer Topology version to await. http://git-wip-us.apache.org/repos/asf/ignite/blob/199339eb/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java index 5822ce7..e6b678b 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/GridDiscoverySelfTest.java @@ -123,36 +123,6 @@ public class GridDiscoverySelfTest extends GridCommonAbstractTest { /** * @throws Exception If failed. */ - public void testGetTopologyHash() throws Exception { - int hashCnt = 5000; - - Random rand = new Random(); - - Collection<Long> hashes = new HashSet<>(hashCnt, 1.0f); - - for (int i = 0; i < hashCnt; i++) { - // Max topology of 10 nodes. - int size = rand.nextInt(10) + 1; - - Collection<ClusterNode> nodes = new ArrayList<>(size); - - for (int j = 0; j < size; j++) - nodes.add(new GridDiscoveryTestNode()); - - @SuppressWarnings("deprecation") - long hash = ((IgniteKernal) ignite).context().discovery().topologyHash(nodes); - - boolean isHashed = hashes.add(hash); - - assert isHashed : "Duplicate hash [hash=" + hash + ", topSize=" + size + ", iteration=" + i + ']'; - } - - info("No duplicates found among '" + hashCnt + "' hashes."); - } - - /** - * @throws Exception If failed. - */ @SuppressWarnings({"SuspiciousMethodCalls"}) public void testGetLocalNode() throws Exception { ClusterNode node = ignite.cluster().localNode();
