Beispiel #1
0
        private Task <BoolResult> CreateDistributedMemoizationStoreAsync(OperationContext context)
        {
            return(context.PerformOperationAsync(Tracer, async() =>
            {
                if (!_distributedContentStore.TryGetLocalLocationStore(out var localLocationStore))
                {
                    return new BoolResult("LocalLocationStore not available");
                }

                var memoizationStoreConfiguration = localLocationStore.Configuration as RedisMemoizationStoreConfiguration;
                if (memoizationStoreConfiguration == null)
                {
                    return new BoolResult($"LocalLocationStore.Configuration should be of type 'RedisMemoizationStoreConfiguration' but was {localLocationStore.Configuration.GetType()}");
                }

                var redisStore = (RedisGlobalStore)localLocationStore.GlobalStore;

                MemoizationStore = new DatabaseMemoizationStore(
                    new DistributedMemoizationDatabase(
                        localLocationStore,
                        new RedisMemoizationDatabase(
                            redisStore.RaidedRedis,
                            localLocationStore.EventStore.Clock,
                            memoizationStoreConfiguration.LocationEntryExpiry,
                            memoizationStoreConfiguration.MemoizationOperationTimeout,
                            memoizationStoreConfiguration.MemoizationSlowOperationCancellationTimeout)));

                return await MemoizationStore.StartupAsync(context);
            }));
Beispiel #2
0
        private Task <BoolResult> CreateDistributedMemoizationStoreAsync(OperationContext context)
        {
            return(context.PerformOperationAsync(Tracer, async() =>
            {
                if (!_distributedContentStore.TryGetLocalLocationStore(out var localLocationStore))
                {
                    return new BoolResult("LocalLocationStore not available");
                }

                var redisStore = (RedisGlobalStore)localLocationStore.GlobalStore;

                MemoizationStore = new DatabaseMemoizationStore(new DistributedMemoizationDatabase(
                                                                    localLocationStore,
                                                                    new RedisMemoizationDatabase(redisStore.RedisDatabase, localLocationStore.EventStore.Clock, localLocationStore.Configuration.LocationEntryExpiry)));

                return await MemoizationStore.StartupAsync(context);
            }));
Beispiel #3
0
        private Task <BoolResult> CreateDistributedMemoizationStoreAsync(OperationContext context)
        {
            return(context.PerformOperationAsync(base.Tracer, async() =>
            {
                MemoizationDatabase getGlobalMemoizationDatabase()
                {
                    if (_contentLocationStoreServices.Configuration.UseMemoizationContentMetadataStore)
                    {
                        return new MetadataStoreMemoizationDatabase(_contentLocationStoreServices.GlobalCacheStore.Instance);
                    }
                    else
                    {
                        var redisStore = _contentLocationStoreServices.RedisGlobalStore.Instance;
                        return new RedisMemoizationDatabase(redisStore.RaidedRedis, _contentLocationStoreServices.Configuration.Memoization);
                    }
                }

                MemoizationStore = new DatabaseMemoizationStore(
                    new DistributedMemoizationDatabase(
                        _contentLocationStoreServices.LocalLocationStore.Instance,
                        getGlobalMemoizationDatabase()));

                return await MemoizationStore.StartupAsync(context);
            }));