Пример #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));
            }
        }
Пример #2
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));
            }
        }
        protected override IMemoizationStore CreateStore(DisposableDirectory testDirectory)
        {
            var database      = GetDatabase(testDirectory);
            var configuration = new RoxisMemoizationDatabaseConfiguration();
            var client        = new LocalRoxisClient(database);

            return(new DatabaseMemoizationStore(new RoxisMemoizationDatabase(configuration, client, _clock)));
        }