Exemplo n.º 1
0
        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));
        }
Exemplo n.º 3
0
        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));
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 7
0
        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));
        }
Exemplo n.º 8
0
        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);
            }
        }