/// <inheritdoc /> public Task <IContentLocationStore> CreateAsync(MachineLocation localMachineLocation) { IContentLocationStore contentLocationStore = null; if (Configuration.HasReadOrWriteMode(ContentLocationMode.Redis)) { var redisDatabaseAdapter = CreateDatabase(RedisDatabaseFactoryForContent); var machineLocationRedisDatabaseAdapter = CreateDatabase(RedisDatabaseFactoryForMachineLocations); contentLocationStore = new RedisContentLocationStore( redisDatabaseAdapter, machineLocationRedisDatabaseAdapter, Clock, _contentHashBumpTime, localMachineLocation.Data, Configuration); } if (Configuration.HasReadOrWriteMode(ContentLocationMode.LocalLocationStore)) { Contract.Assert(RedisDatabaseFactoryForRedisGlobalStore != null); var redisDatabaseForGlobalStore = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStore); var secondaryRedisDatabaseForGlobalStore = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStoreSecondary, optional: true); IGlobalLocationStore globalStore = new RedisGlobalStore(Clock, Configuration, localMachineLocation, redisDatabaseForGlobalStore, secondaryRedisDatabaseForGlobalStore); var localLocationStore = new LocalLocationStore(Clock, globalStore, Configuration); contentLocationStore = new TransitioningContentLocationStore(Configuration, (RedisContentLocationStore)contentLocationStore, localLocationStore, Clock); } return(Task.FromResult(contentLocationStore)); }
protected virtual IGlobalLocationStore CreateRedisGlobalStore() { var redisDatabaseForGlobalStore = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStore, "primaryRedisDatabase"); var secondaryRedisDatabaseForGlobalStore = CreateDatabase( RedisDatabaseFactoryForRedisGlobalStoreSecondary, "secondaryRedisDatabase", optional: true); RedisDatabaseAdapter?redisBlobDatabase; RedisDatabaseAdapter?secondaryRedisBlobDatabase; if (Configuration.UseSeparateConnectionForRedisBlobs) { // To prevent blob opoerations from blocking other operations, create a separate connections for them. redisBlobDatabase = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStore, "primaryRedisBlobDatabase"); secondaryRedisBlobDatabase = CreateDatabase( RedisDatabaseFactoryForRedisGlobalStoreSecondary, "secondaryRedisBlobDatabase", optional: true); } else { redisBlobDatabase = redisDatabaseForGlobalStore; secondaryRedisBlobDatabase = secondaryRedisDatabaseForGlobalStore; } IGlobalLocationStore globalStore = new RedisGlobalStore(Clock, Configuration, redisDatabaseForGlobalStore, secondaryRedisDatabaseForGlobalStore, redisBlobDatabase, secondaryRedisBlobDatabase); return(globalStore); }
private LocalLocationStore CreateLocalLocationStore() { Contract.Assert(RedisDatabaseFactoryForRedisGlobalStore != null); var redisDatabaseForGlobalStore = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStore, "primaryRedisDatabase"); var secondaryRedisDatabaseForGlobalStore = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStoreSecondary, "secondaryRedisDatabase", optional: true); IGlobalLocationStore globalStore = new RedisGlobalStore(Clock, Configuration, redisDatabaseForGlobalStore, secondaryRedisDatabaseForGlobalStore); var localLocationStore = new LocalLocationStore(Clock, globalStore, Configuration, _copier); return(localLocationStore); }
protected virtual IGlobalLocationStore CreateRedisGlobalStore() { var redisDatabaseForGlobalStore = CreateDatabase(RedisDatabaseFactoryForRedisGlobalStore, "primaryRedisDatabase"); var secondaryRedisDatabaseForGlobalStore = CreateDatabase( RedisDatabaseFactoryForRedisGlobalStoreSecondary, "secondaryRedisDatabase", optional: true); IGlobalLocationStore globalStore = new RedisGlobalStore(Clock, Configuration, redisDatabaseForGlobalStore, secondaryRedisDatabaseForGlobalStore); return(globalStore); }
protected virtual IContentMetadataStore CreateContentMetadataStore(RedisGlobalStore redisStore) { if ((Configuration.ContentMetadataStoreModeFlags & ContentMetadataStoreModeFlags.Distributed) != 0) { var distributedStore = CreateDistributedContentMetadataStore(redisStore); if ((Configuration.ContentMetadataStoreModeFlags & ContentMetadataStoreModeFlags.Redis) == 0) { return(distributedStore); } return(new TransitioningContentMetadataStore(Configuration, redisStore, distributedStore)); } else { return(redisStore); } }
protected virtual IContentMetadataStore CreateDistributedContentMetadataStore(RedisGlobalStore redisStore) { if (Configuration.MetadataStore is MemoryContentMetadataStoreConfiguration memoryConfig) { return(memoryConfig.Store); } else if (Configuration.MetadataStore is ClientContentMetadataStoreConfiguration clientConfig) { return(new ClientContentMetadataStore( redisStore, new GrpcMasterClientFactory <IContentMetadataService>(redisStore, clientConfig), clientConfig)); } else { return(redisStore); } }