public override async Task ConfigUpdatedAsync(BucketConfig config)
        {
            if (config.Name == Name && (BucketConfig == null || config.Rev > BucketConfig.Rev))
            {
                Logger.LogDebug("Processing cluster map for rev#{revision} on {bucketName} - old rev#{oldRevision}", config.Rev, Name, BucketConfig?.Rev);
                Logger.LogDebug(JsonConvert.SerializeObject(BucketConfig));
                BucketConfig = config;
                if (BucketConfig.VBucketMapChanged)
                {
                    Logger.LogDebug(LoggingEvents.ConfigEvent, "Updating VB key mapper for rev#{revision} on {bucketName}", config.Rev, Name);
                    KeyMapper = await _vBucketKeyMapperFactory.CreateAsync(BucketConfig).ConfigureAwait(false);
                }

                if (BucketConfig.ClusterNodesChanged)
                {
                    Logger.LogDebug(LoggingEvents.ConfigEvent, "Updating cluster nodes for rev#{revision} on {bucketName}", config.Rev, Name);
                    await Context.ProcessClusterMapAsync(this, BucketConfig).ConfigureAwait(false);

                    var nodes = Context.GetNodes(Name);

                    //update the local nodes collection
                    lock (Nodes)
                    {
                        Nodes.Clear();
                        foreach (var clusterNode in nodes)
                        {
                            Nodes.Add(clusterNode);
                        }
                    }
                }
            }
            Logger.LogDebug("Current revision for {bucketName} is rev#{revision}", Name, BucketConfig?.Rev);
        }
        public override async Task ConfigUpdatedAsync(BucketConfig config)
        {
            if (config.Name == Name && (BucketConfig == null || config.Rev > BucketConfig.Rev))
            {
                BucketConfig = config;
                if (BucketConfig.VBucketMapChanged)
                {
                    KeyMapper = await _vBucketKeyMapperFactory.CreateAsync(BucketConfig).ConfigureAwait(false);
                }

                if (BucketConfig.ClusterNodesChanged)
                {
                    await Context.ProcessClusterMapAsync(this, BucketConfig).ConfigureAwait(false);

                    var nodes = Context.GetNodes(Name);

                    //update the local nodes collection
                    lock (Nodes)
                    {
                        Nodes.Clear();
                        foreach (var clusterNode in nodes)
                        {
                            Nodes.Add(clusterNode);
                        }
                    }
                }
            }
        }
        public override async Task ConfigUpdatedAsync(BucketConfig config)
        {
            if (config.Name == Name && (BucketConfig == null || config.Rev > BucketConfig.Rev))
            {
                BucketConfig = config;

                if (BucketConfig.VBucketMapChanged)
                {
                    KeyMapper = await _vBucketKeyMapperFactory.CreateAsync(BucketConfig).ConfigureAwait(false);
                }

                if (BucketConfig.ClusterNodesChanged)
                {
                    await Context.ProcessClusterMapAsync(this, BucketConfig).ConfigureAwait(false);
                }
            }
        }