/// <summary> /// Tests the partition loss. /// </summary> private static void TestPartitionLoss(PartitionLossPolicy policy, bool canWrite, bool safe) { var ignite = Ignition.GetIgnite(); var cache = CreateCache(policy, ignite); // Loose data and verify lost partition. var lostPart = PrepareTopology(); var lostParts = cache.GetLostPartitions(); Assert.IsTrue(lostParts.Contains(lostPart)); // Check cache operations. foreach (var part in lostParts) { VerifyCacheOperations(cache, part, canWrite, safe); // Check reads are possible from a cache in recovery mode. var recoverCache = cache.WithPartitionRecover(); int res; Assert.IsFalse(recoverCache.TryGet(part, out res)); } // Reset and verify. ignite.ResetLostPartitions(CacheName); Assert.IsEmpty(cache.GetLostPartitions()); // Check another ResetLostPartitions overload. PrepareTopology(); Assert.IsNotEmpty(cache.GetLostPartitions()); ignite.ResetLostPartitions(new List <string> { CacheName, "foo" }); Assert.IsEmpty(cache.GetLostPartitions()); }
/// <summary> /// Creates the cache. /// </summary> private static ICache <int, int> CreateCache(PartitionLossPolicy policy, IIgnite ignite) { return(ignite.CreateCache <int, int>(new CacheConfiguration(CacheName) { CacheMode = CacheMode.Partitioned, Backups = 0, WriteSynchronizationMode = CacheWriteSynchronizationMode.FullSync, PartitionLossPolicy = policy, AffinityFunction = new RendezvousAffinityFunction { ExcludeNeighbors = false, Partitions = 32 } })); }