[backend/core] Fix edge case in GetOrCreateSystemUserAsync

This commit is contained in:
Laura Hausmann 2024-06-21 20:13:24 +02:00
parent 6386601e3e
commit dd3ea49367
No known key found for this signature in database
GPG key ID: D044E84C5BE01605

View file

@ -46,7 +46,12 @@ public class SystemUserService(ILogger<SystemUserService> logger, DatabaseContex
private async Task<User> GetOrCreateSystemUserAsync(string username)
{
var user = await cache.FetchAsync($"systemUser:{username}", TimeSpan.FromHours(24), async () =>
var user = db.ChangeTracker
.Entries<User>()
.FirstOrDefault(p => p.Entity.UsernameLower == username.ToLowerInvariant())
?.Entity;
user ??= await cache.FetchAsync($"systemUser:{username}", TimeSpan.FromHours(24), async () =>
{
using (await KeyedLocker.LockAsync(username.ToLowerInvariant()))
{