예제 #1
0
        public ParsedSplit GetSplit(string splitName)
        {
            var key       = $"{RedisKeyPrefix}{splitKeyPrefix}{splitName}";
            var splitJson = _redisAdapter.Get(key);

            if (string.IsNullOrEmpty(splitJson))
            {
                return(null);
            }

            var split = JsonConvert.DeserializeObject <Split>(splitJson);

            return(_splitParser.Parse(split));
        }
        private void UpdateSplitsFromChangeFetcherResponse(List <Split> splitChanges)
        {
            var addedSplits   = new List <Split>();
            var removedSplits = new List <Split>();

            foreach (Split split in splitChanges)
            {
                //If not active --> Remove Split
                var isValidStatus = Enum.TryParse(split.status, out StatusEnum result);

                if (!isValidStatus || result != StatusEnum.ACTIVE)
                {
                    _splitCache.RemoveSplit(split.name);
                    removedSplits.Add(split);
                }
                else
                {
                    var isUpdated = _splitCache.AddOrUpdate(split.name, _splitParser.Parse(split));

                    if (!isUpdated)
                    {
                        //If not existing in _splits, its a new split
                        addedSplits.Add(split);
                    }
                }
            }

            if (addedSplits.Count() > 0)
            {
                var addedFeatureNames = addedSplits
                                        .Select(x => x.name)
                                        .ToList();

                if (_log.IsDebugEnabled)
                {
                    _log.Debug(string.Format("Added features: {0}", string.Join(" - ", addedFeatureNames)));
                }
            }

            if (removedSplits.Count() > 0)
            {
                var removedFeatureNames = removedSplits
                                          .Select(x => x.name)
                                          .ToList();

                if (_log.IsDebugEnabled)
                {
                    _log.Debug(string.Format("Deleted features: {0}", string.Join(" - ", removedFeatureNames)));
                }
            }
        }