From 46db38c060cb8249b8308b345af718a34308b49c Mon Sep 17 00:00:00 2001 From: Dominik Jeske Date: Mon, 2 Jun 2025 12:10:43 +0200 Subject: [PATCH] Fix async code problems --- .../TenantedDbContextBuilderByConnectionString.cs | 4 ++-- .../TenantedDbContextBuilderByDbDataSource.cs | 3 +-- .../Wolverine.RDBMS/Polling/DatabaseBatcher.cs | 2 +- .../Transport/ExternalMessageTableListener.cs | 5 ++--- .../Transport/SqlServerQueueListener.cs | 11 ++++------- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByConnectionString.cs b/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByConnectionString.cs index 735f410b3..2eea6864f 100644 --- a/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByConnectionString.cs +++ b/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByConnectionString.cs @@ -65,8 +65,8 @@ public async ValueTask BuildAndEnrollAsync(MessageContext messaging, Cancella var dbContext = _constructor(builder.Options); var transaction = new MappedEnvelopeTransaction(dbContext, messaging); - // ReSharper disable once MethodHasAsyncOverload - messaging.EnlistInOutbox(transaction); + + await messaging.EnlistInOutboxAsync(transaction); return dbContext; } diff --git a/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByDbDataSource.cs b/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByDbDataSource.cs index e114f6653..4cd53b1f3 100644 --- a/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByDbDataSource.cs +++ b/src/Persistence/Wolverine.EntityFrameworkCore/Internals/TenantedDbContextBuilderByDbDataSource.cs @@ -67,8 +67,7 @@ public async ValueTask BuildAndEnrollAsync(MessageContext messaging, Cancella var dbContext = _constructor(builder.Options); var transaction = new MappedEnvelopeTransaction(dbContext, messaging); - // ReSharper disable once MethodHasAsyncOverload - messaging.EnlistInOutbox(transaction); + await messaging.EnlistInOutboxAsync(transaction); return dbContext; } diff --git a/src/Persistence/Wolverine.RDBMS/Polling/DatabaseBatcher.cs b/src/Persistence/Wolverine.RDBMS/Polling/DatabaseBatcher.cs index d967c383f..6b5822be4 100644 --- a/src/Persistence/Wolverine.RDBMS/Polling/DatabaseBatcher.cs +++ b/src/Persistence/Wolverine.RDBMS/Polling/DatabaseBatcher.cs @@ -80,7 +80,7 @@ public async Task DrainAsync() { try { - _internalCancellation.Cancel(); + await _internalCancellation.CancelAsync(); _batchingBlock.Complete(); await _batchingBlock.Completion; diff --git a/src/Persistence/Wolverine.RDBMS/Transport/ExternalMessageTableListener.cs b/src/Persistence/Wolverine.RDBMS/Transport/ExternalMessageTableListener.cs index b29fc2f25..fef5a6ef8 100644 --- a/src/Persistence/Wolverine.RDBMS/Transport/ExternalMessageTableListener.cs +++ b/src/Persistence/Wolverine.RDBMS/Transport/ExternalMessageTableListener.cs @@ -89,12 +89,11 @@ public ValueTask DeferAsync(Envelope envelope) return new ValueTask(); } - public ValueTask DisposeAsync() + public async ValueTask DisposeAsync() { - _cancellation.Cancel(); + await _cancellation.CancelAsync(); _task.SafeDispose(); - return ValueTask.CompletedTask; } public Uri Address { get; } diff --git a/src/Persistence/Wolverine.SqlServer/Transport/SqlServerQueueListener.cs b/src/Persistence/Wolverine.SqlServer/Transport/SqlServerQueueListener.cs index 0c596778e..517964092 100644 --- a/src/Persistence/Wolverine.SqlServer/Transport/SqlServerQueueListener.cs +++ b/src/Persistence/Wolverine.SqlServer/Transport/SqlServerQueueListener.cs @@ -39,20 +39,17 @@ public async ValueTask DeferAsync(Envelope envelope) await _queue.SendAsync(envelope, _cancellation.Token); } - public ValueTask DisposeAsync() + public async ValueTask DisposeAsync() { - _cancellation.Cancel(); + await _cancellation.CancelAsync(); _task.SafeDispose(); _scheduledTask.SafeDispose(); - return ValueTask.CompletedTask; } public Uri Address => _queue.Uri; - public ValueTask StopAsync() + public async ValueTask StopAsync() { - _cancellation.Cancel(); - - return ValueTask.CompletedTask; + await _cancellation.CancelAsync(); } private async Task lookForScheduledMessagesAsync()