private static MemoizationStoreConfiguration CreateInProcMemoizationStoreConfiguration(Config cacheConfig, AbsolutePath cacheRootPath) { if (cacheConfig.RoxisEnabled) { var roxisClientConfiguration = new Roxis.Client.RoxisClientConfiguration(); if (!string.IsNullOrEmpty(cacheConfig.RoxisMetadataStoreHost)) { roxisClientConfiguration.GrpcHost = cacheConfig.RoxisMetadataStoreHost; } if (cacheConfig.RoxisMetadataStorePort > 0) { roxisClientConfiguration.GrpcPort = cacheConfig.RoxisMetadataStorePort; } return(new RoxisMemoizationDatabaseConfiguration() { MetadataClientConfiguration = roxisClientConfiguration, }); } return(new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(cacheRootPath / "RocksDbMemoizationStore") { CleanOnInitialize = false, GarbageCollectionInterval = TimeSpan.FromSeconds(cacheConfig.RocksDbMemoizationStoreGarbageCollectionIntervalInSeconds), MetadataGarbageCollectionEnabled = true, MetadataGarbageCollectionMaximumNumberOfEntriesToKeep = cacheConfig.RocksDbMemoizationStoreGarbageCollectionMaximumNumberOfEntriesToKeep, OnFailureDeleteExistingStoreAndRetry = true, LogsKeepLongTerm = true, }, }); }
private static MemoizationStoreConfiguration CreateInProcMemoizationStoreConfiguration(Config cacheConfig, AbsolutePath cacheRootPath) { if (cacheConfig.UseRoxisMetadataStore) { var roxisClientConfiguration = new Roxis.Client.RoxisClientConfiguration(); if (!string.IsNullOrEmpty(cacheConfig.RoxisMetadataStoreHost)) { roxisClientConfiguration.GrpcHost = cacheConfig.RoxisMetadataStoreHost; } if (cacheConfig.RoxisMetadataStorePort > 0) { roxisClientConfiguration.GrpcPort = cacheConfig.RoxisMetadataStorePort; } return(new RoxisMemoizationDatabaseConfiguration() { MetadataClientConfiguration = roxisClientConfiguration, }); } if (cacheConfig.UseRocksDbMemoizationStore) { return(new RocksDbMemoizationStoreConfiguration() { Database = new RocksDbContentLocationDatabaseConfiguration(cacheRootPath / "RocksDbMemoizationStore") { CleanOnInitialize = false, GarbageCollectionInterval = TimeSpan.FromSeconds(cacheConfig.RocksDbMemoizationStoreGarbageCollectionIntervalInSeconds), MetadataGarbageCollectionEnabled = true, MetadataGarbageCollectionMaximumNumberOfEntriesToKeep = cacheConfig.RocksDbMemoizationStoreGarbageCollectionMaximumNumberOfEntriesToKeep, OnFailureDeleteExistingStoreAndRetry = true, LogsKeepLongTerm = true, }, }); } 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); } }