From 05e754662e3f0159406d0dab8ed2d3daa4b0a9b2 Mon Sep 17 00:00:00 2001 From: Marusyk Date: Thu, 29 Mar 2018 17:16:29 +0300 Subject: [PATCH] Ordering. Fixed async/await misuses --- .../Commands/CreateOrderCommandHandler.cs | 8 ++++---- ...edToAwaitingValidationDomainEventHandler.cs | 4 ++-- ...derStatusChangedToPaidDomainEventHandler.cs | 4 ++-- ...regateWhenOrderStartedDomainEventHandler.cs | 2 +- ...hangedToStockConfirmedDomainEventHandler.cs | 4 ++-- .../OrderingIntegrationEventService.cs | 4 ++-- .../Application/Queries/OrderQueries.cs | 8 ++++---- .../Infrastructure/OrderingContextSeed.cs | 18 +++++++++--------- .../MediatorExtension.cs | 4 ++-- 9 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs b/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs index c63f262fa..e49ae068b 100644 --- a/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/Commands/CreateOrderCommandHandler.cs @@ -24,7 +24,7 @@ _mediator = mediator ?? throw new ArgumentNullException(nameof(mediator)); } - public async Task Handle(CreateOrderCommand message, CancellationToken cancellationToken) + public Task Handle(CreateOrderCommand message, CancellationToken cancellationToken) { // Add/Update the Buyer AggregateRoot // DDD patterns comment: Add child entities and value-objects through the Order Aggregate-Root @@ -40,8 +40,8 @@ _orderRepository.Add(order); - return await _orderRepository.UnitOfWork - .SaveEntitiesAsync(); + return _orderRepository.UnitOfWork + .SaveEntitiesAsync(cancellationToken); } } @@ -55,7 +55,7 @@ protected override bool CreateResultForDuplicateRequest() { - return true; // Ignore duplicate requests for creating order. + return true; // Ignore duplicate requests for creating order. } } } diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs index a02d07232..d000ceecb 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderGracePeriodConfirmed/OrderStatusChangedToAwaitingValidationDomainEventHandler.cs @@ -27,7 +27,7 @@ _orderingIntegrationEventService = orderingIntegrationEventService; } - public async Task Handle(OrderStatusChangedToAwaitingValidationDomainEvent orderStatusChangedToAwaitingValidationDomainEvent, CancellationToken cancellationToken) + public Task Handle(OrderStatusChangedToAwaitingValidationDomainEvent orderStatusChangedToAwaitingValidationDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToAwaitingValidationDomainEvent)) .LogTrace($"Order with Id: {orderStatusChangedToAwaitingValidationDomainEvent.OrderId} has been successfully updated with " + @@ -38,7 +38,7 @@ var orderStatusChangedToAwaitingValidationIntegrationEvent = new OrderStatusChangedToAwaitingValidationIntegrationEvent( orderStatusChangedToAwaitingValidationDomainEvent.OrderId, orderStockList); - await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToAwaitingValidationIntegrationEvent); + return _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToAwaitingValidationIntegrationEvent); } } } \ No newline at end of file diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs index 071cd90fc..300afda72 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderPaid/OrderStatusChangedToPaidDomainEventHandler.cs @@ -27,7 +27,7 @@ _orderingIntegrationEventService = orderingIntegrationEventService; } - public async Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken) + public Task Handle(OrderStatusChangedToPaidDomainEvent orderStatusChangedToPaidDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToPaidDomainEventHandler)) .LogTrace($"Order with Id: {orderStatusChangedToPaidDomainEvent.OrderId} has been successfully updated with " + @@ -38,7 +38,7 @@ var orderStatusChangedToPaidIntegrationEvent = new OrderStatusChangedToPaidIntegrationEvent(orderStatusChangedToPaidDomainEvent.OrderId, orderStockList); - await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToPaidIntegrationEvent); + return _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToPaidIntegrationEvent); } } } \ No newline at end of file diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs index d222c574c..058194df1 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStartedEvent/ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler.cs @@ -45,7 +45,7 @@ namespace Ordering.API.Application.DomainEventHandlers.OrderStartedEvent var buyerUpdated = buyerOriginallyExisted ? _buyerRepository.Update(buyer) : _buyerRepository.Add(buyer); await _buyerRepository.UnitOfWork - .SaveEntitiesAsync(); + .SaveEntitiesAsync(cancellationToken); _logger.CreateLogger(nameof(ValidateOrAddBuyerAggregateWhenOrderStartedDomainEventHandler)).LogTrace($"Buyer {buyerUpdated.Id} and related payment method were validated or updated for orderId: {orderStartedEvent.Order.Id}."); } diff --git a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs index 3b24e43e6..e2cfaab06 100644 --- a/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs +++ b/src/Services/Ordering/Ordering.API/Application/DomainEventHandlers/OrderStockConfirmed/OrderStatusChangedToStockConfirmedDomainEventHandler.cs @@ -26,14 +26,14 @@ _orderingIntegrationEventService = orderingIntegrationEventService; } - public async Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken) + public Task Handle(OrderStatusChangedToStockConfirmedDomainEvent orderStatusChangedToStockConfirmedDomainEvent, CancellationToken cancellationToken) { _logger.CreateLogger(nameof(OrderStatusChangedToStockConfirmedDomainEventHandler)) .LogTrace($"Order with Id: {orderStatusChangedToStockConfirmedDomainEvent.OrderId} has been successfully updated with " + $"a status order id: {OrderStatus.StockConfirmed.Id}"); var orderStatusChangedToStockConfirmedIntegrationEvent = new OrderStatusChangedToStockConfirmedIntegrationEvent(orderStatusChangedToStockConfirmedDomainEvent.OrderId); - await _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToStockConfirmedIntegrationEvent); + return _orderingIntegrationEventService.PublishThroughEventBusAsync(orderStatusChangedToStockConfirmedIntegrationEvent); } } } \ No newline at end of file diff --git a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs index b3c0201b5..cdf1602a0 100644 --- a/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs +++ b/src/Services/Ordering/Ordering.API/Application/IntegrationEvents/OrderingIntegrationEventService.cs @@ -35,11 +35,11 @@ namespace Ordering.API.Application.IntegrationEvents await _eventLogService.MarkEventAsPublishedAsync(evt); } - private async Task SaveEventAndOrderingContextChangesAsync(IntegrationEvent evt) + private Task SaveEventAndOrderingContextChangesAsync(IntegrationEvent evt) { //Use of an EF Core resiliency strategy when using multiple DbContexts within an explicit BeginTransaction(): //See: https://docs.microsoft.com/en-us/ef/core/miscellaneous/connection-resiliency - await ResilientTransaction.New(_orderingContext) + return ResilientTransaction.New(_orderingContext) .ExecuteAsync(async () => { // Achieving atomicity between original ordering database operation and the IntegrationEventLog thanks to a local transaction await _orderingContext.SaveChangesAsync(); diff --git a/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs b/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs index 59cc8a823..ed78bf033 100644 --- a/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs +++ b/src/Services/Ordering/Ordering.API/Application/Queries/OrderQueries.cs @@ -9,7 +9,7 @@ public class OrderQueries :IOrderQueries { - private string _connectionString = string.Empty; + private readonly string _connectionString = string.Empty; public OrderQueries(string constr) { @@ -21,7 +21,7 @@ { using (var connection = new SqlConnection(_connectionString)) { - connection.Open(); + await connection.OpenAsync(); var result = await connection.QueryAsync( @"select o.[Id] as ordernumber,o.OrderDate as date, o.Description as description, @@ -46,7 +46,7 @@ { using (var connection = new SqlConnection(_connectionString)) { - connection.Open(); + await connection.OpenAsync(); return await connection.QueryAsync(@"SELECT o.[Id] as ordernumber,o.[OrderDate] as [date],os.[Name] as [status],SUM(oi.units*oi.unitprice) as total FROM [ordering].[Orders] o @@ -61,7 +61,7 @@ { using (var connection = new SqlConnection(_connectionString)) { - connection.Open(); + await connection.OpenAsync(); return await connection.QueryAsync("SELECT * FROM ordering.cardtypes"); } diff --git a/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs b/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs index 53c53f052..9fc4bbe7b 100644 --- a/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs +++ b/src/Services/Ordering/Ordering.API/Infrastructure/OrderingContextSeed.cs @@ -20,15 +20,15 @@ public class OrderingContextSeed { - public async Task SeedAsync(OrderingContext context, IHostingEnvironment env,IOptions settings, ILogger logger) + public Task SeedAsync(OrderingContext context, IHostingEnvironment env,IOptions settings, ILogger logger) { var policy = CreatePolicy(logger, nameof(OrderingContextSeed)); - await policy.ExecuteAsync(async () => + return policy.ExecuteAsync(async () => { var useCustomizationData = settings.Value - .UseCustomizationData; + .UseCustomizationData; var contentRootPath = env.ContentRootPath; @@ -39,18 +39,18 @@ if (!context.CardTypes.Any()) { - context.CardTypes.AddRange(useCustomizationData - ? GetCardTypesFromFile(contentRootPath, logger) - : GetPredefinedCardTypes()); + await context.CardTypes.AddRangeAsync(useCustomizationData + ? GetCardTypesFromFile(contentRootPath, logger) + : GetPredefinedCardTypes()); await context.SaveChangesAsync(); } if (!context.OrderStatus.Any()) { - context.OrderStatus.AddRange(useCustomizationData - ? GetOrderStatusFromFile(contentRootPath, logger) - : GetPredefinedOrderStatus()); + await context.OrderStatus.AddRangeAsync(useCustomizationData + ? GetOrderStatusFromFile(contentRootPath, logger) + : GetPredefinedOrderStatus()); } await context.SaveChangesAsync(); diff --git a/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs b/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs index 82a7235a2..2d1bd7d13 100644 --- a/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs +++ b/src/Services/Ordering/Ordering.Infrastructure/MediatorExtension.cs @@ -8,7 +8,7 @@ namespace Ordering.Infrastructure { static class MediatorExtension { - public static async Task DispatchDomainEventsAsync(this IMediator mediator, OrderingContext ctx) + public static Task DispatchDomainEventsAsync(this IMediator mediator, OrderingContext ctx) { var domainEntities = ctx.ChangeTracker .Entries() @@ -26,7 +26,7 @@ namespace Ordering.Infrastructure await mediator.Publish(domainEvent); }); - await Task.WhenAll(tasks); + return Task.WhenAll(tasks); } } }