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,
                },
            });
        }
예제 #2
0
        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);
            }
        }