internal override void ConfigUpdated(object sender, BucketConfigEventArgs e) { if (e.Config.Name == Name && (BucketConfig == null || e.Config.Rev > BucketConfig.Rev)) { BucketConfig = e.Config; if (BucketConfig.VBucketMapChanged) { KeyMapper = _vBucketKeyMapperFactory.Create(BucketConfig); } if (BucketConfig.ClusterNodesChanged) { Task.Run(async() => await Context.ProcessClusterMapAsync(this, BucketConfig)).GetAwaiter().GetResult(); } } }
public override async Task ConfigUpdatedAsync(BucketConfig newConfig) { if (newConfig.Name == Name && newConfig.IsNewerThan(CurrentConfig)) { if (Logger.IsEnabled(LogLevel.Debug)) { Logger.LogDebug("Processing cluster map for rev#{revision} on {bucketName} - old rev#{oldRevision}", newConfig.Rev, Name, CurrentConfig?.Rev); Logger.LogDebug(JsonSerializer.Serialize(CurrentConfig, InternalSerializationContext.Default.BucketConfig !)); } CurrentConfig = newConfig; if (CurrentConfig.VBucketMapChanged) { Logger.LogDebug(LoggingEvents.ConfigEvent, "Updating VB key mapper for rev#{revision} on {bucketName}", newConfig.Rev, Name); KeyMapper = _vBucketKeyMapperFactory.Create(CurrentConfig); } if (CurrentConfig.ClusterNodesChanged) { Logger.LogDebug(LoggingEvents.ConfigEvent, "Updating cluster nodes for rev#{revision} on {bucketName}", newConfig.Rev, Name); await Context.ProcessClusterMapAsync(this, CurrentConfig).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, CurrentConfig?.Rev); }