public async Task <IDisposable> SubscribeAsync(IPartitionObserver <T> observer) { if (!this.observers.Contains(observer)) { this.observers.Add(observer); foreach (var lease in this.partitionManager.currentlyOwnedShards.Values) { try { await observer.OnPartitionAcquiredAsync(lease); } catch (Exception ex) { // Eat any exceptions during notification of observers AnalyticsEventSource.Log.PartitionManagerError( partitionManager.accountName, partitionManager.taskHub, partitionManager.workerName, lease.PartitionId, ex, Utils.ExtensionVersion); } } } return(new Unsubscriber(this.observers, observer)); }
public async Task <IDisposable> SubscribeAsync(IPartitionObserver <T> observer) { if (!this.observers.Contains(observer)) { this.observers.Add(observer); foreach (var lease in this.partitionManager.currentlyOwnedPartitions.Values) { try { await observer.OnPartitionAcquiredAsync(lease); } catch (Exception ex) { // Eat any exceptions during notification of observers TraceLog.Exception(ex); } } } return(new Unsubscriber(this.observers, observer)); }