10044
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/94ec2f89 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/94ec2f89 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/94ec2f89 Branch: refs/heads/ignite-10044 Commit: 94ec2f89255aa15fd7860f390167239d7d2f8f37 Parents: a284207 Author: sboikov <[email protected]> Authored: Thu Nov 29 17:42:13 2018 +0300 Committer: sboikov <[email protected]> Committed: Thu Nov 29 17:42:13 2018 +0300 ---------------------------------------------------------------------- .../cache/GridCachePartitionExchangeManager.java | 2 +- .../dht/topology/GridClientPartitionTopology.java | 12 +++++++++++- .../dht/topology/GridDhtPartitionTopologyImpl.java | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/94ec2f89/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java index 6dad367..38cbe46 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/GridCachePartitionExchangeManager.java @@ -854,7 +854,7 @@ public class GridCachePartitionExchangeManager<K, V> extends GridCacheSharedMana aff.partitions()); GridClientPartitionTopology old = clientTops.putIfAbsent(grpId, - top = new GridClientPartitionTopology(cctx, discoCache, grpId, aff.partitions(), affKey)); + top = new GridClientPartitionTopology(cctx, discoCache, grpId, aff.partitions(), ccfg.getPartitionLossPolicy(), affKey)); return old != null ? old : top; } http://git-wip-us.apache.org/repos/asf/ignite/blob/94ec2f89/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java index feca1e7..02faa51 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridClientPartitionTopology.java @@ -32,6 +32,7 @@ import java.util.concurrent.locks.ReentrantReadWriteLock; import java.util.stream.Collectors; import org.apache.ignite.IgniteCheckedException; import org.apache.ignite.IgniteLogger; +import org.apache.ignite.cache.PartitionLossPolicy; import org.apache.ignite.cluster.ClusterNode; import org.apache.ignite.events.DiscoveryEvent; import org.apache.ignite.internal.IgniteInterruptedCheckedException; @@ -127,6 +128,9 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { private volatile Map<Integer, Long> globalPartSizes; /** */ + private final PartitionLossPolicy partLossPlc; + + /** */ private TreeSet<Integer> lostParts; /** @@ -134,6 +138,7 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { * @param discoCache Discovery data cache. * @param grpId Group ID. * @param parts Number of partitions in the group. + * @param partLossPlc Partition loss policy. * @param similarAffKey Key to find caches with similar affinity. */ public GridClientPartitionTopology( @@ -141,6 +146,7 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { DiscoCache discoCache, int grpId, int parts, + PartitionLossPolicy partLossPlc, Object similarAffKey ) { this.cctx = cctx; @@ -148,6 +154,7 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { this.grpId = grpId; this.similarAffKey = similarAffKey; this.parts = parts; + this.partLossPlc = partLossPlc; topVer = AffinityTopologyVersion.NONE; @@ -944,7 +951,7 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { if (cur == null || !cur.equals(parts)) changed = true; - if (lostParts != null) { + if (lostParts != null && partLossPlc != PartitionLossPolicy.IGNORE) { for (Integer lostPart : lostParts) { GridDhtPartitionState state0 = parts.get(lostPart); @@ -1005,6 +1012,9 @@ public class GridClientPartitionTopology implements GridDhtPartitionTopology { /** {@inheritDoc} */ @Override public boolean detectLostPartitions(AffinityTopologyVersion affVer, DiscoveryEvent discoEvt) { + if (partLossPlc == PartitionLossPolicy.IGNORE) + return false; + lock.writeLock().lock(); http://git-wip-us.apache.org/repos/asf/ignite/blob/94ec2f89/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java index d518467..cc8a198 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/distributed/dht/topology/GridDhtPartitionTopologyImpl.java @@ -1807,7 +1807,7 @@ public class GridDhtPartitionTopologyImpl implements GridDhtPartitionTopology { if (cur == null || !cur.equals(parts)) changed = true; - if (lostParts != null) { + if (lostParts != null && grp.config().getPartitionLossPolicy() != PartitionLossPolicy.IGNORE) { for (Integer lostPart : lostParts) { GridDhtPartitionState state0 = parts.get(lostPart);
