private void InternalTestCaching(ColumnFamilyCaching?columnFamilyCaching)
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3
            };

            if (columnFamilyCaching != null)
            {
                originalColumnFamily.Caching = columnFamilyCaching.Value;
            }
            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            if (columnFamilyCaching != null)
            {
                Assert.That(columnFamily.Caching, Is.EqualTo(columnFamilyCaching));
            }
            else
            {
                Assert.That(columnFamily.Caching, Is.EqualTo(ColumnFamilyCaching.KeysOnly));
            }
        }
示例#2
0
        // fullCompactionStrategy returns a compactionStrategy for higher level generations of TSM files.
        // It returns nil if there are no TSM files to compact.
        private CompactionStrategy fullCompactionStrategy()
        {
            bool optimize = false;
            List <CompactionGroup> compactionGroups = compactionPlan.Plan(wal.LastWriteTime);

            if (compactionGroups == null || compactionGroups.Count == 0)
            {
                optimize         = true;
                compactionGroups = compactionPlan.PlanOptimize();
            }
            if (compactionGroups == null || compactionGroups.Count == 0)
            {
                return(null);
            }
            CompactionStrategy result = new CompactionStrategy()
            {
                compactionGroups = compactionGroups,
                fileStore        = fileStore,
                compactor        = compactor,
                fast             = optimize
            };

            if (optimize)
            {
                result.description = "optimize";
                result.stat        = stats.OptimizeStat;
            }
            else
            {
                result.description = "full";
                result.stat        = stats.FullStat;
            }
            return(result);
        }
示例#3
0
        private void compactTSMLevel(bool fast, int level)
        {
            CompactionStrategy s = levelCompactionStrategy(fast, level);

            if (s != null)
            {
                s.Apply();
                compactionPlan.Release(s.compactionGroups);
            }
        }
 private static bool CompareCompactionStrategy(CompactionStrategy lhs, CompactionStrategy rhs)
 {
     if (lhs == null && rhs == null)
     {
         return(true);
     }
     if (lhs != null && rhs != null)
     {
         return(lhs.CompactionStrategyType == rhs.CompactionStrategyType && CompareCompactionStrategyOptions(lhs.CompactionStrategyOptions, rhs.CompactionStrategyOptions));
     }
     return(false);
 }
        public void TestChangeCompactionProperties()
        {
            var scheme = new KeyspaceScheme
            {
                Name          = TestSchemaUtils.GetRandomKeyspaceName(),
                Configuration = new KeyspaceConfiguration
                {
                    ColumnFamilies = new[]
                    {
                        new ColumnFamily
                        {
                            Name = "CF1"
                        }
                    }
                }
            };

            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(0));

            scheme.Configuration.ColumnFamilies[0].CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 32);
            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(0));

            scheme.Configuration.ColumnFamilies[0].CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(3, 32);
            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(1));

            scheme.Configuration.ColumnFamilies[0].CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(3, 31);
            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(2));

            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(2));

            scheme.Configuration.ColumnFamilies[0].CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(10);
            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(3));

            scheme.Configuration.ColumnFamilies[0].CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(11);
            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(4));

            scheme.Configuration.ColumnFamilies[0].CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(11);
            ActualizeKeyspaces(scheme);
            Assert.That(cluster.UpdateColumnFamilyInvokeCount, Is.EqualTo(4));
        }
        public void TestUpdateColumnFamilyCaching()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3,
                Caching            = ColumnFamilyCaching.All
            };
            var keyspaceName    = TestSchemaUtils.GetRandomKeyspaceName();
            var keyspaceSchemes = new[]
            {
                new KeyspaceScheme
                {
                    Name          = keyspaceName,
                    Configuration = new KeyspaceConfiguration
                    {
                        ColumnFamilies = new[]
                        {
                            originalColumnFamily
                        }
                    }
                }
            };

            cluster.ActualizeKeyspaces(keyspaceSchemes);

            originalColumnFamily.Caching = ColumnFamilyCaching.None;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.None));

            originalColumnFamily.Caching = ColumnFamilyCaching.KeysOnly;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.KeysOnly));

            originalColumnFamily.Caching = ColumnFamilyCaching.RowsOnly;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.RowsOnly));

            originalColumnFamily.Caching = ColumnFamilyCaching.All;
            cluster.ActualizeKeyspaces(keyspaceSchemes);
            Assert.That(cluster.RetrieveKeyspaceConnection(keyspaceName).DescribeKeyspace().ColumnFamilies[name].Caching, Is.EqualTo(ColumnFamilyCaching.All));
        }
        public static void SetUp()
        {
            var templateDirectory = Path.Combine(FindCassandraTemplateDirectory(AppDomain.CurrentDomain.BaseDirectory), @"v3.11.x");
            var deployDirectory   = Path.Combine(Path.GetTempPath(), "deployed_cassandra_v3.11.x");

            cassandraNode = new LocalCassandraNode(templateDirectory, deployDirectory)
            {
                RpcPort    = 9360,
                CqlPort    = 9343,
                JmxPort    = 7399,
                GossipPort = 7400,
            };
            cassandraNode.Restart(timeout: TimeSpan.FromMinutes(1));

            cassandraCluster = new CassandraCluster(cassandraNode.CreateSettings(), Logger.Instance);
            var cassandraSchemaActualizer = new CassandraSchemaActualizer(cassandraCluster, null, Logger.Instance);

            cassandraSchemaActualizer.ActualizeKeyspaces(new[]
            {
                new KeyspaceSchema
                {
                    Name          = ksName,
                    Configuration = new KeyspaceConfiguration
                    {
                        ReplicationStrategy = SimpleReplicationStrategy.Create(replicationFactor: 1),
                        ColumnFamilies      = new[]
                        {
                            new ColumnFamily
                            {
                                Name = minTicksCfName,
                                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 160),
                                Caching            = ColumnFamilyCaching.All
                            },
                            new ColumnFamily
                            {
                                Name = maxTicksCfName,
                                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 160),
                                Caching            = ColumnFamilyCaching.KeysOnly
                            }
                        }
                    }
                },
            }, changeExistingKeyspaceMetadata: false);
        }
示例#8
0
        private void compactTSMFull()
        {
            bool cold = shard.IsOld() &&
                        DateTime.Now.Ticks - LastModified() > Constants.DefaultCompactFullWriteColdDuration;

            if (cold)
            {
                compactionPlan.ForceFull();
                quitCompact.Cancel();
                quitCompact = null;
            }
            CompactionStrategy s = fullCompactionStrategy();

            if (s != null)
            {
                s.Apply();
                compactionPlan.Release(s.compactionGroups);
            }
        }
        public void TestCreateColumnFamily()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3
            };

            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            Assert.That(columnFamily.Name, Is.EqualTo(originalColumnFamily.Name));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyType, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyType));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb));
            Assert.That(columnFamily.GCGraceSeconds, Is.EqualTo(originalColumnFamily.GCGraceSeconds));
            Assert.That(columnFamily.ReadRepairChance, Is.EqualTo(originalColumnFamily.ReadRepairChance));
        }
        public void TestUpdateColumnFamily()
        {
            var name = TestSchemaUtils.GetRandomColumnFamilyName();
            var originalColumnFamily = new ColumnFamily
            {
                Name = name,
                CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 10),
                GCGraceSeconds     = 123,
                ReadRepairChance   = 0.3,
                Caching            = ColumnFamilyCaching.All
            };

            keyspaceConnection.AddColumnFamily(originalColumnFamily);

            originalColumnFamily.CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(sstableSizeInMb: 20);
            originalColumnFamily.GCGraceSeconds     = 321;
            originalColumnFamily.ReadRepairChance   = 0.9;
            originalColumnFamily.Caching            = ColumnFamilyCaching.None;
            keyspaceConnection.UpdateColumnFamily(originalColumnFamily);

            var columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];

            Assert.That(columnFamily.Name, Is.EqualTo(originalColumnFamily.Name));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyType, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyType));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.SstableSizeInMb));
            Assert.That(columnFamily.GCGraceSeconds, Is.EqualTo(originalColumnFamily.GCGraceSeconds));
            Assert.That(columnFamily.ReadRepairChance, Is.EqualTo(originalColumnFamily.ReadRepairChance));

            originalColumnFamily.CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(minThreshold: 5, maxThreshold: 17);
            keyspaceConnection.UpdateColumnFamily(originalColumnFamily);

            columnFamily = keyspaceConnection.DescribeKeyspace().ColumnFamilies[name];
            Assert.That(columnFamily.Name, Is.EqualTo(originalColumnFamily.Name));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyType, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyType));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.Enabled, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.Enabled));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.MinThreshold, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.MinThreshold));
            Assert.That(columnFamily.CompactionStrategy.CompactionStrategyOptions.MaxThreshold, Is.EqualTo(originalColumnFamily.CompactionStrategy.CompactionStrategyOptions.MaxThreshold));
            Assert.That(columnFamily.GCGraceSeconds, Is.EqualTo(originalColumnFamily.GCGraceSeconds));
            Assert.That(columnFamily.ReadRepairChance, Is.EqualTo(originalColumnFamily.ReadRepairChance));
        }
 public void TestCompareColumnFamiliesByCompactionStrategy()
 {
     Assert.That(
         !comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(10)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(10)
     })
         );
     Assert.That(
         !comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategyDisabled()
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategyDisabled()
     })
         );
     Assert.That(
         !comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 32)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 32)
     })
         );
     Assert.That(
         !comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategyDisabled()
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategyDisabled()
     })
         );
     Assert.That(
         !comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategyDisabled()
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = new CompactionStrategy(CompactionStrategyType.SizeTiered, new CompactionStrategyOptions {
             Enabled = false, MinThreshold = 4, MaxThreshold = 32
         })
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 32)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategyDisabled()
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 32)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(16, 32)
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 32)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 16)
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(20)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(10)
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategy(4)
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategy(4, 4)
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategyDisabled()
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.SizeTieredCompactionStrategyDisabled()
     })
         );
     Assert.That(
         comparer.NeedUpdateColumnFamily(
             new ColumnFamily {
         Name = "name", CompactionStrategy = CompactionStrategy.LeveledCompactionStrategyDisabled()
     },
             new ColumnFamily {
         Name = "name", CompactionStrategy = null
     })
         );
 }