private IMemoizationStore CreateServerSideLocalMemoizationStore(AbsolutePath path, DistributedContentStoreFactory factory) { var distributedSettings = _arguments.Configuration.DistributedContentSettings; if (distributedSettings.UseRedisMetadataStore) { return(factory.CreateMemoizationStoreAsync().GetAwaiter().GetResult()); } else if (distributedSettings.UseRoxisMetadataStore) { var config = new RoxisMemoizationDatabaseConfiguration(); ApplyIfNotNull(distributedSettings.RoxisMetadataStoreHost, v => config.MetadataClientConfiguration.GrpcHost = v); ApplyIfNotNull(distributedSettings.RoxisMetadataStorePort, v => config.MetadataClientConfiguration.GrpcPort = v); return(config.CreateStore(_logger, SystemClock.Instance)); } else { var config = new RocksDbMemoizationStoreConfiguration() { Database = RocksDbContentLocationDatabaseConfiguration.FromDistributedContentSettings( distributedSettings, databasePath: path / "RocksDbMemoizationStore", logsBackupPath: null, logsKeepLongTerm: true), }; config.Database.CleanOnInitialize = false; config.Database.OnFailureDeleteExistingStoreAndRetry = true; config.Database.MetadataGarbageCollectionEnabled = true; return(new RocksDbMemoizationStore(_logger, SystemClock.Instance, config)); } }
protected override ICache CreateCache(DisposableDirectory testDirectory) { var rootPathForStream = RootPathOfContentStoreForStream(testDirectory); var rootPathForPath = RootPathOfContentStoreForPath(testDirectory); FileSystem.CreateDirectory(rootPathForStream); FileSystem.CreateDirectory(rootPathForPath); var configuration1 = ContentStoreConfiguration.CreateWithMaxSizeQuotaMB(1); var configuration2 = ContentStoreConfiguration.CreateWithMaxSizeQuotaMB(1); configuration1.Write(FileSystem, rootPathForStream).Wait(); configuration2.Write(FileSystem, rootPathForPath).Wait(); var memoConfig = new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(rootPathForPath) { CleanOnInitialize = false, OnFailureDeleteExistingStoreAndRetry = true, LogsKeepLongTerm = true, MetadataGarbageCollectionEnabled = true, MetadataGarbageCollectionMaximumNumberOfEntriesToKeep = MaxContentHashListItems, }, }; return(LocalCache.CreateStreamPathContentStoreInProcMemoizationStoreCache(Logger, rootPathForStream, rootPathForPath, memoConfig, clock: Clock)); }
private IMemoizationStore CreateServerSideLocalMemoizationStore(AbsolutePath path, DistributedContentStoreFactory factory) { var distributedSettings = _arguments.Configuration.DistributedContentSettings; if (distributedSettings.UseRedisMetadataStore) { return(factory.CreateMemoizationStoreAsync().GetAwaiter().GetResult()); } else if (distributedSettings.UseRoxisMetadataStore) { var config = new RoxisMemoizationDatabaseConfiguration(); ApplyIfNotNull(distributedSettings.RoxisMetadataStoreHost, v => config.MetadataClientConfiguration.GrpcHost = v); ApplyIfNotNull(distributedSettings.RoxisMetadataStorePort, v => config.MetadataClientConfiguration.GrpcPort = v); return(config.CreateStore(_logger, SystemClock.Instance)); } else { var config = new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(path / "RocksDbMemoizationStore") { CleanOnInitialize = false, OnFailureDeleteExistingStoreAndRetry = true, LogsKeepLongTerm = true, MetadataGarbageCollectionEnabled = true, MetadataGarbageCollectionMaximumNumberOfEntriesToKeep = distributedSettings.MaximumNumberOfMetadataEntriesToStore, }, }; return(new RocksDbMemoizationStore(_logger, SystemClock.Instance, config)); } }
private IMemoizationStore CreateServerSideLocalMemoizationStore(AbsolutePath path, DistributedContentStoreFactory factory) { var distributedSettings = _arguments.Configuration.DistributedContentSettings; if (distributedSettings.UseRedisMetadataStore) { return(RedisMemoizationStoreFactory.CreateMemoizationStore(factory.Services.ContentLocationStoreServices.Instance)); } else { var config = new RocksDbMemoizationStoreConfiguration() { Database = RocksDbContentLocationDatabaseConfiguration.FromDistributedContentSettings( distributedSettings, databasePath: path / "RocksDbMemoizationStore", logsBackupPath: null, logsKeepLongTerm: true), }; config.Database.CleanOnInitialize = false; config.Database.OnFailureDeleteExistingStoreAndRetry = true; config.Database.MetadataGarbageCollectionEnabled = true; return(new RocksDbMemoizationStore(_logger, SystemClock.Instance, config)); } }
private static MemoizationStoreConfiguration CreateMemoizationStoreConfiguration(Config config, AbsolutePath cacheRootPath) { if (config.UseRocksDbMemoizationStore) { var memoConfig = new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(cacheRootPath / "RocksDbMemoizationStore") { CleanOnInitialize = false, }, }; return(memoConfig); } else { var memoConfig = new SQLiteMemoizationStoreConfiguration(cacheRootPath) { MaxRowCount = config.MaxStrongFingerprints, SingleInstanceTimeoutSeconds = (int)config.SingleInstanceTimeoutInSeconds }; memoConfig.Database.BackupDatabase = config.BackupLKGCache; memoConfig.Database.VerifyIntegrityOnStartup = config.CheckCacheIntegrityOnStartup; if (!string.IsNullOrEmpty(config.SynchronizationMode)) { memoConfig.Database.SyncMode = (SynchronizationMode)Enum.Parse(typeof(SynchronizationMode), config.SynchronizationMode, ignoreCase: true); } return(memoConfig); } }
protected override IMemoizationStore CreateStore(DisposableDirectory testDirectory) { var memoConfig = new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(testDirectory.Path) }; return(new RocksDbMemoizationStore(Logger, _clock, memoConfig)); }
protected IMemoizationStore CreateStore(DisposableDirectory testDirectory, Action <RocksDbContentLocationDatabaseConfiguration> configMutator = null) { var memoConfig = new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(testDirectory.Path) }; configMutator?.Invoke(memoConfig.Database); return(new RocksDbMemoizationStore(Logger, _clock, memoConfig)); }
private static MemoizationStoreConfiguration CreateInProcMemoizationStoreConfiguration(Config cacheConfig, AbsolutePath cacheRootPath) { if (cacheConfig.UseRocksDbMemoizationStore) { var memoConfig = new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(cacheRootPath / "RocksDbMemoizationStore") { CleanOnInitialize = false, GarbageCollectionInterval = TimeSpan.FromSeconds(cacheConfig.RocksDbMemoizationStoreGarbageCollectionIntervalInSeconds), MetadataGarbageCollectionEnabled = true, MetadataGarbageCollectionMaximumNumberOfEntriesToKeep = cacheConfig.RocksDbMemoizationStoreGarbageCollectionMaximumNumberOfEntriesToKeep, OnFailureDeleteExistingStoreAndRetry = true, LogsKeepLongTerm = true, }, }; return(memoConfig); } else { var memoConfig = new SQLiteMemoizationStoreConfiguration(cacheRootPath) { MaxRowCount = cacheConfig.MaxStrongFingerprints, SingleInstanceTimeoutSeconds = (int)cacheConfig.SingleInstanceTimeoutInSeconds }; memoConfig.Database.BackupDatabase = cacheConfig.BackupLKGCache; memoConfig.Database.VerifyIntegrityOnStartup = cacheConfig.CheckCacheIntegrityOnStartup; if (!string.IsNullOrEmpty(cacheConfig.SynchronizationMode)) { memoConfig.Database.SyncMode = (SynchronizationMode)Enum.Parse(typeof(SynchronizationMode), cacheConfig.SynchronizationMode, ignoreCase: true); } return(memoConfig); } }