/// <inheritdoc /> public RocksDbContentLocationDatabase(IClock clock, RocksDbContentLocationDatabaseConfiguration configuration, Func <IReadOnlyList <MachineId> > getInactiveMachines) : base(clock, configuration, getInactiveMachines) { Contract.Requires(configuration.FlushPreservePercentInMemory >= 0 && configuration.FlushPreservePercentInMemory <= 1); Contract.Requires(configuration.FlushDegreeOfParallelism > 0); Contract.Requires(configuration.MetadataGarbageCollectionMaximumNumberOfEntriesToKeep > 0); _configuration = configuration; _activeSlotFilePath = (_configuration.StoreLocation / ActiveStoreSlotFileName).ToString(); }
public RocksDbContentMetadataDatabase(IClock clock, RocksDbContentLocationDatabaseConfiguration configuration) : base(clock, configuration, () => Array.Empty <MachineId>()) { Contract.Requires(configuration.MetadataGarbageCollectionMaximumNumberOfEntriesToKeep > 0); _configuration = configuration; _activeSlotFilePath = (_configuration.StoreLocation / ActiveStoreSlotFileName).ToString(); // this is a hacky way to convince the compiler that the field is initialized. // Technically, the field is nullable, but keeping it as nullable causes more issues than giving us benefits. _keyValueStore = null !; }
/// <inheritdoc /> public RocksDbContentLocationDatabase(IClock clock, RocksDbContentLocationDatabaseConfiguration configuration, Func <IReadOnlyList <MachineId> > getInactiveMachines) : base(clock, configuration, getInactiveMachines) { Contract.Requires(configuration.FlushPreservePercentInMemory >= 0 && configuration.FlushPreservePercentInMemory <= 1); Contract.Requires(configuration.FlushDegreeOfParallelism > 0); Contract.Requires(configuration.MetadataGarbageCollectionMaximumNumberOfEntriesToKeep > 0); _configuration = configuration; _activeSlotFilePath = (_configuration.StoreLocation / ActiveStoreSlotFileName).ToString(); if (_configuration.LogsBackupPath != null) { _logManager = new RocksDbLogsManager(clock, new PassThroughFileSystem(), _configuration.LogsBackupPath, _configuration.LogsRetention); } }
public static RocksDbContentLocationDatabaseConfiguration FromDistributedContentSettings( DistributedContentSettings settings, AbsolutePath databasePath, AbsolutePath?logsBackupPath, bool logsKeepLongTerm) { var configuration = new RocksDbContentLocationDatabaseConfiguration(databasePath) { LogsKeepLongTerm = logsKeepLongTerm, UseContextualEntryOperationLogging = settings.UseContextualEntryDatabaseOperationLogging, TraceTouches = settings.TraceTouches, MetadataGarbageCollectionEnabled = settings.EnableDistributedCache, LogsBackupPath = logsBackupPath, }; ApplyIfNotNull(settings.ContentLocationDatabaseGcIntervalMinutes, v => configuration.GarbageCollectionInterval = TimeSpan.FromMinutes(v)); ApplyIfNotNull(settings.ContentLocationDatabaseGarbageCollectionConcurrent, v => configuration.GarbageCollectionConcurrent = v); ApplyEnumIfNotNull <MetadataGarbageCollectionStrategy>(settings.ContentLocationDatabaseMetadataGarbageCollectionStrategy, nameof(settings.ContentLocationDatabaseMetadataGarbageCollectionStrategy), v => configuration.MetadataGarbageCollectionStrategy = v); ApplyIfNotNull(settings.ContentLocationDatabaseMetadataGarbageCollectionMaximumSizeMb, v => configuration.MetadataGarbageCollectionMaximumSizeMb = v); ApplyIfNotNull(settings.MaximumNumberOfMetadataEntriesToStore, v => configuration.MetadataGarbageCollectionMaximumNumberOfEntriesToKeep = v); ApplyIfNotNull(settings.ContentLocationDatabaseOpenReadOnly, v => configuration.OpenReadOnly = v && !settings.IsMasterEligible); ApplyEnumIfNotNull <Compression>(settings.ContentLocationDatabaseCompression, v => configuration.Compression = v); if (settings.ContentLocationDatabaseLogsBackupEnabled) { configuration.LogsBackupPath = logsBackupPath; } ApplyIfNotNull(settings.ContentLocationDatabaseLogsBackupRetentionMinutes, v => configuration.LogsRetention = TimeSpan.FromMinutes(v)); ApplyIfNotNull(settings.ContentLocationDatabaseEnumerateSortedKeysFromStorageBufferSize, v => configuration.EnumerateSortedKeysFromStorageBufferSize = v); ApplyIfNotNull(settings.ContentLocationDatabaseEnumerateEntriesWithSortedKeysFromStorageBufferSize, v => configuration.EnumerateEntriesWithSortedKeysFromStorageBufferSize = v); return(configuration); }
public RocksDbContentMetadataStore( IClock clock, RocksDbContentLocationDatabaseConfiguration configuration) { _database = new RocksDbContentMetadataDatabase(clock, configuration); }
/// <inheritdoc /> public RocksDbContentLocationDatabase(IClock clock, RocksDbContentLocationDatabaseConfiguration configuration, Func <IReadOnlyList <MachineId> > getInactiveMachines) : base(clock, configuration, getInactiveMachines) { _configuration = configuration; _activeSlotFilePath = (_configuration.StoreLocation / ActiveStoreSlotFileName).ToString(); }