IGNITE-3068: GridDhtPartitionTopology.nodes() now returns List instead of Collection.
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/f900f3a1 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/f900f3a1 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/f900f3a1 Branch: refs/heads/ignite-2788 Commit: f900f3a1e802c10e1c1cc2a8b4bfedf83121fe3f Parents: 3adc493 Author: vozerov-gridgain <[email protected]> Authored: Thu Apr 28 16:32:54 2016 +0300 Committer: shtykh_roman <[email protected]> Committed: Fri May 13 16:11:16 2016 +0900 ---------------------------------------------------------------------- .../distributed/dht/GridClientPartitionTopology.java | 6 +++--- .../cache/distributed/dht/GridDhtPartitionTopology.java | 2 +- .../distributed/dht/GridDhtPartitionTopologyImpl.java | 6 +++--- .../distributed/dht/GridDhtTransactionalCacheAdapter.java | 4 ++-- .../distributed/dht/atomic/GridDhtAtomicUpdateFuture.java | 8 ++++++-- .../dht/atomic/GridNearAtomicUpdateFuture.java | 10 +++++++--- 6 files changed, 22 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/f900f3a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridClientPartitionTopology.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridClientPartitionTopology.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridClientPartitionTopology.java index 4635cad..58933b7 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridClientPartitionTopology.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridClientPartitionTopology.java @@ -395,14 +395,14 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { } /** {@inheritDoc} */ - @Override public Collection<ClusterNode> nodes(int p, AffinityTopologyVersion topVer) { + @Override public List<ClusterNode> nodes(int p, AffinityTopologyVersion topVer) { lock.readLock().lock(); try { assert node2part != null && node2part.valid() : "Invalid node-to-partitions map [topVer=" + topVer + ", node2part=" + node2part + ']'; - Collection<ClusterNode> nodes = null; + List<ClusterNode> nodes = null; Collection<UUID> nodeIds = part2node.get(p); @@ -412,7 +412,7 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { if (n != null && (topVer.topologyVersion() < 0 || n.order() <= topVer.topologyVersion())) { if (nodes == null) - nodes = new ArrayList<>(); + nodes = new ArrayList<>(nodeIds.size()); nodes.add(n); } http://git-wip-us.apache.org/repos/asf/ignite/blob/f900f3a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopology.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopology.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopology.java index 2c483a1..6e9b907 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopology.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopology.java @@ -167,7 +167,7 @@ public interface GridDhtPartitionTopology { * @param topVer Topology version. * @return Collection of all nodes responsible for this partition with primary node being first. */ - public Collection<ClusterNode> nodes(int p, AffinityTopologyVersion topVer); + public List<ClusterNode> nodes(int p, AffinityTopologyVersion topVer); /** * @param p Partition ID. http://git-wip-us.apache.org/repos/asf/ignite/blob/f900f3a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java index 9f5fbfb..4be0acb 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtPartitionTopologyImpl.java @@ -821,10 +821,10 @@ class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology { } /** {@inheritDoc} */ - @Override public Collection<ClusterNode> nodes(int p, AffinityTopologyVersion topVer) { + @Override public List<ClusterNode> nodes(int p, AffinityTopologyVersion topVer) { GridAffinityAssignment affAssignment = cctx.affinity().assignment(topVer); - Collection<ClusterNode> affNodes = affAssignment.get(p); + List<ClusterNode> affNodes = affAssignment.get(p); lock.readLock().lock(); @@ -835,7 +835,7 @@ class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology { ", cache=" + cctx.name() + ", node2part=" + node2part + ']'; - Collection<ClusterNode> nodes = null; + List<ClusterNode> nodes = null; Collection<UUID> nodeIds = part2node.get(p); http://git-wip-us.apache.org/repos/asf/ignite/blob/f900f3a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java index 9d277b9..7bace73 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/GridDhtTransactionalCacheAdapter.java @@ -1367,9 +1367,9 @@ public abstract class GridDhtTransactionalCacheAdapter<K, V> extends GridDhtCach Map<ClusterNode, List<KeyCacheObject>> dhtMap, Map<ClusterNode, List<KeyCacheObject>> nearMap) throws IgniteCheckedException { - Collection<ClusterNode> dhtNodes = ctx.dht().topology().nodes(cached.partition(), topVer); + List<ClusterNode> dhtNodes = ctx.dht().topology().nodes(cached.partition(), topVer); - ClusterNode primary = F.first(dhtNodes); + ClusterNode primary = dhtNodes.get(0); assert primary != null; http://git-wip-us.apache.org/repos/asf/ignite/blob/f900f3a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java index 5760596..fa69f10 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridDhtAtomicUpdateFuture.java @@ -20,6 +20,7 @@ package org.apache.ignite.internal.processors.cache.distributed.dht.atomic; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; @@ -216,6 +217,7 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void> * @param prevVal Previous value. * @param updateCntr Partition update counter. */ + @SuppressWarnings("ForLoopReplaceableByForEach") public void addWriteEntry(GridDhtCacheEntry entry, @Nullable CacheObject val, EntryProcessor<Object, Object, Object> entryProcessor, @@ -227,7 +229,7 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void> long updateCntr) { AffinityTopologyVersion topVer = updateReq.topologyVersion(); - Collection<ClusterNode> dhtNodes = cctx.dht().topology().nodes(entry.partition(), topVer); + List<ClusterNode> dhtNodes = cctx.dht().topology().nodes(entry.partition(), topVer); if (log.isDebugEnabled()) log.debug("Mapping entry to DHT nodes [nodes=" + U.nodeIds(dhtNodes) + ", entry=" + entry + ']'); @@ -236,7 +238,9 @@ public class GridDhtAtomicUpdateFuture extends GridFutureAdapter<Void> keys.add(entry.key()); - for (ClusterNode node : dhtNodes) { + for (int i = 0; i < dhtNodes.size(); i++) { + ClusterNode node = dhtNodes.get(i); + UUID nodeId = node.id(); if (!nodeId.equals(cctx.localNodeId())) { http://git-wip-us.apache.org/repos/asf/ignite/blob/f900f3a1/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java index dfdf1a5..cc0427c 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/atomic/GridNearAtomicUpdateFuture.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.UUID; import javax.cache.expiry.ExpiryPolicy; @@ -789,6 +790,7 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu * @return Mapping. * @throws Exception If failed. */ + @SuppressWarnings("ForLoopReplaceableByForEach") private Map<UUID, GridNearAtomicUpdateRequest> mapUpdate(Collection<ClusterNode> topNodes, AffinityTopologyVersion topVer, GridCacheVersion futVer, @@ -862,7 +864,7 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu if (op != TRANSFORM) val = cctx.toCacheObject(val); - Collection<ClusterNode> affNodes = mapKey(cacheKey, topVer); + List<ClusterNode> affNodes = mapKey(cacheKey, topVer); if (affNodes.isEmpty()) throw new ClusterTopologyServerNotFoundException("Failed to map keys for cache " + @@ -870,7 +872,9 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu int i = 0; - for (ClusterNode affNode : affNodes) { + for (int n = 0; n < affNodes.size(); n++) { + ClusterNode affNode = affNodes.get(n); + if (affNode == null) throw new ClusterTopologyServerNotFoundException("Failed to map keys for cache " + "(all partition nodes left the grid)."); @@ -1020,7 +1024,7 @@ public class GridNearAtomicUpdateFuture extends GridNearAtomicAbstractUpdateFutu * @param topVer Topology version to map. * @return Collection of nodes to which key is mapped. */ - private Collection<ClusterNode> mapKey(KeyCacheObject key, AffinityTopologyVersion topVer) { + private List<ClusterNode> mapKey(KeyCacheObject key, AffinityTopologyVersion topVer) { GridCacheAffinityManager affMgr = cctx.affinity(); // If we can send updates in parallel - do it.
