/// <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)); }
/// <inheritdoc /> public Task <IContentLocationStore> CreateAsync(MachineLocation localMachineLocation, ILocalContentStore localContentStore) { IContentLocationStore contentLocationStore = null; if (Configuration.HasReadOrWriteMode(ContentLocationMode.Redis)) { var redisDatabaseAdapter = CreateDatabase(RedisDatabaseFactoryForContent, "RedisDatabaseFactoryForContent"); var machineLocationRedisDatabaseAdapter = CreateDatabase(RedisDatabaseFactoryForMachineLocations, "RedisDatabaseFactoryForMachineLocations"); contentLocationStore = new RedisContentLocationStore( redisDatabaseAdapter, machineLocationRedisDatabaseAdapter, Clock, _contentHashBumpTime, localMachineLocation.Data, Configuration); } if (Configuration.HasReadOrWriteMode(ContentLocationMode.LocalLocationStore)) { var localLocationStore = _lazyLocalLocationStore.Value; contentLocationStore = new TransitioningContentLocationStore(Configuration, (RedisContentLocationStore)contentLocationStore, localLocationStore, localMachineLocation, localContentStore); } return(Task.FromResult(contentLocationStore)); }
/// <nodoc /> public TransitioningContentLocationStore( RedisContentLocationStoreConfiguration configuration, RedisContentLocationStore redisContentLocationStore, LocalLocationStore localLocationStore) { Contract.Requires(configuration != null); _configuration = configuration; _localLocationStore = localLocationStore; _redisContentLocationStore = redisContentLocationStore; Contract.Assert(!_configuration.HasReadOrWriteMode(ContentLocationMode.Redis) || _redisContentLocationStore != null); Contract.Assert(!_configuration.HasReadOrWriteMode(ContentLocationMode.LocalLocationStore) || _localLocationStore != null); }
public async Task <IContentLocationStore> CreateAsync(MachineLocation machineLocation) { var connection = MockRedisDatabaseFactory.CreateConnection(RedisDatabase); RedisDatabaseAdapter = RedisDatabaseAdapter ?? new RedisDatabaseAdapter(await RedisDatabaseFactory.CreateAsync(new EnvironmentConnectionStringProvider("TestConnectionString"), connection), RedisContentLocationStoreFactory.DefaultKeySpace); var machineLocationConnection = MockRedisDatabaseFactory.CreateConnection(MachineLocationRedisDatabase); MachineRedisDatabaseAdapter = MachineRedisDatabaseAdapter ?? new RedisDatabaseAdapter(await RedisDatabaseFactory.CreateAsync(new EnvironmentConnectionStringProvider("TestConnectionString"), machineLocationConnection), RedisContentLocationStoreFactory.DefaultKeySpace); IContentLocationStore store = new RedisContentLocationStore( RedisDatabaseAdapter, MachineRedisDatabaseAdapter, _mockClock, BumpTime, machineLocation.Data, _configuration); var redisStore = (RedisContentLocationStore)store; redisStore.DisableReplica = true; return(store); }