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)); } }
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)); } }