From 8d14b048217e17068f20a378b8af74c9de9e71ec Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Fri, 21 Jun 2024 17:20:12 +0200 Subject: [PATCH] [backend/core] Attach user entity to database change tracker in GetOrCreateSystemUserAsync This prevents erroneous insert attempts when the data comes from the cache instead of the database. --- Iceshrimp.Backend/Core/Services/SystemUserService.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Iceshrimp.Backend/Core/Services/SystemUserService.cs b/Iceshrimp.Backend/Core/Services/SystemUserService.cs index c64b3875..d42782dd 100644 --- a/Iceshrimp.Backend/Core/Services/SystemUserService.cs +++ b/Iceshrimp.Backend/Core/Services/SystemUserService.cs @@ -46,7 +46,7 @@ public class SystemUserService(ILogger logger, DatabaseContex private async Task GetOrCreateSystemUserAsync(string username) { - return await cache.FetchAsync($"systemUser:{username}", TimeSpan.FromHours(24), async () => + var user = await cache.FetchAsync($"systemUser:{username}", TimeSpan.FromHours(24), async () => { using (await KeyedLocker.LockAsync(username.ToLowerInvariant())) { @@ -56,6 +56,9 @@ public class SystemUserService(ILogger logger, DatabaseContex await CreateSystemUserAsync(username); } }); + + db.Attach(user); + return user; } private async Task CreateSystemUserAsync(string username)