From 259a21b2734094dcd160ede0d72143e0e30b508a Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sun, 23 Jun 2024 00:54:34 +0200 Subject: [PATCH] [backend/database] Fix possible stall / race condition on first startup in EntityFrameworkCoreXmlRepositoryAsync --- Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs b/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs index aec3dc56..82ef9b8d 100644 --- a/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs +++ b/Iceshrimp.Backend/Core/Extensions/ServiceExtensions.cs @@ -161,7 +161,7 @@ public static class ServiceExtensions { var config = configuration.GetSection("Database").Get() ?? throw new Exception("Failed to initialize database: Failed to load configuration"); - + var dataSource = DatabaseContext.GetDataSource(config); services.AddDbContext(options => { DatabaseContext.Configure(options, dataSource, config); }); services.AddKeyedDatabaseContext("cache"); @@ -376,14 +376,14 @@ file sealed class EntityFrameworkCoreXmlRepositoryAsync : IXmlReposito public void StoreElement(XElement element, string friendlyName) { - using var scope = _services.CreateScope(); - var requiredService = scope.ServiceProvider.GetRequiredService(); + using var scope = _services.CreateAsyncScope(); + using var requiredService = scope.ServiceProvider.GetRequiredService(); requiredService.DataProtectionKeys.Add(new DataProtectionKey { FriendlyName = friendlyName, Xml = element.ToString(SaveOptions.DisableFormatting) }); - requiredService.SaveChangesAsync(); + requiredService.SaveChangesAsync().Wait(); } }