async Task InitializeStoresAsync() //throws InterruptedException, ExecutionException, ExceptionWithAction { // Make sure the lease store exists ILeaseManager leaseManager = this.host.LeaseManager; if (!await leaseManager.LeaseStoreExistsAsync().ConfigureAwait(false)) { await RetryAsync(() => leaseManager.CreateLeaseStoreIfNotExistsAsync(), null, "Failure creating lease store for this Event Hub, retrying", "Out of retries creating lease store for this Event Hub", EventProcessorHostActionStrings.CreatingLeaseStore, 5).ConfigureAwait(false); } // else // lease store already exists, no work needed var partitionIds = await this.GetPartitionIdsAsync().ConfigureAwait(false); // Now make sure the leases exist var createLeaseTasks = new List <Task>(); foreach (string id in partitionIds) { var subjectId = id; createLeaseTasks.Add(RetryAsync(() => leaseManager.CreateLeaseIfNotExistsAsync(subjectId), subjectId, $"Failure creating lease for partition {subjectId}, retrying", $"Out of retries creating lease for partition {subjectId}", EventProcessorHostActionStrings.CreatingLease, 5)); } await Task.WhenAll(createLeaseTasks).ConfigureAwait(false); // Make sure the checkpoint store exists ICheckpointManager checkpointManager = this.host.CheckpointManager; if (!await checkpointManager.CheckpointStoreExistsAsync().ConfigureAwait(false)) { await RetryAsync(() => checkpointManager.CreateCheckpointStoreIfNotExistsAsync(), null, "Failure creating checkpoint store for this Event Hub, retrying", "Out of retries creating checkpoint store for this Event Hub", EventProcessorHostActionStrings.CreatingCheckpointStore, 5).ConfigureAwait(false); } // else // checkpoint store already exists, no work needed // Now make sure the checkpoints exist var createCheckpointTasks = new List <Task>(); foreach (string id in partitionIds) { var subjectId = id; createCheckpointTasks.Add(RetryAsync(() => checkpointManager.CreateCheckpointIfNotExistsAsync(subjectId), subjectId, $"Failure creating checkpoint for partition {subjectId}, retrying", $"Out of retries creating checkpoint for partition {subjectId}", EventProcessorHostActionStrings.CreatingCheckpoint, 5)); } await Task.WhenAll(createCheckpointTasks).ConfigureAwait(false); }
async Task InitializeStoresAsync() //throws InterruptedException, ExecutionException, ExceptionWithAction { // Make sure the lease store exists ILeaseManager leaseManager = this.host.LeaseManager; if (!await leaseManager.LeaseStoreExistsAsync().ConfigureAwait(false)) { await RetryAsync(() => leaseManager.CreateLeaseStoreIfNotExistsAsync(), null, "Failure creating lease store for this Event Hub, retrying", "Out of retries creating lease store for this Event Hub", EventProcessorHostActionStrings.CreatingLeaseStore, 5).ConfigureAwait(false); } // else // lease store already exists, no work needed // Now make sure the leases exist foreach (string id in await this.GetPartitionIdsAsync().ConfigureAwait(false)) { await RetryAsync(() => leaseManager.CreateLeaseIfNotExistsAsync(id), id, "Failure creating lease for partition, retrying", "Out of retries creating lease for partition", EventProcessorHostActionStrings.CreatingLease, 5).ConfigureAwait(false); } // Make sure the checkpoint store exists ICheckpointManager checkpointManager = this.host.CheckpointManager; if (!await checkpointManager.CheckpointStoreExistsAsync().ConfigureAwait(false)) { await RetryAsync(() => checkpointManager.CreateCheckpointStoreIfNotExistsAsync(), null, "Failure creating checkpoint store for this Event Hub, retrying", "Out of retries creating checkpoint store for this Event Hub", EventProcessorHostActionStrings.CreatingCheckpointStore, 5).ConfigureAwait(false); } // else // checkpoint store already exists, no work needed // Now make sure the checkpoints exist foreach (string id in await this.GetPartitionIdsAsync().ConfigureAwait(false)) { await RetryAsync(() => checkpointManager.CreateCheckpointIfNotExistsAsync(id), id, "Failure creating checkpoint for partition, retrying", "Out of retries creating checkpoint blob for partition", EventProcessorHostActionStrings.CreatingCheckpoint, 5).ConfigureAwait(false); } }