Esempio n. 1
0
        /// <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());
        }
Esempio n. 2
0
 /// <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
         }
     }));
 }