thread safety for background service

This commit is contained in:
henry 2025-05-16 20:36:53 -04:00
parent c12a6465f9
commit a6980252c0
3 changed files with 16 additions and 4 deletions

View File

@ -17,7 +17,7 @@ namespace AccessQueueService.Services
var cleanupIntervalMillis = _config.GetValue<int>("AccessQueue:CleanupIntervalSeconds") * 1000;
while (!stoppingToken.IsCancellationRequested)
{
_accessService.DeleteExpiredTickets();
await _accessService.DeleteExpiredTickets();
await Task.Delay(cleanupIntervalMillis, stoppingToken);
}
}

View File

@ -1,4 +1,5 @@
using AccessQueueService.Data;
using System.Threading.Tasks;
using AccessQueueService.Data;
using AccessQueueService.Models;
namespace AccessQueueService.Services
@ -106,6 +107,17 @@ namespace AccessQueueService.Services
}
}
public int DeleteExpiredTickets() => _accessQueueRepo.DeleteExpiredTickets();
public async Task<int> DeleteExpiredTickets()
{
await _queueLock.WaitAsync();
try
{
return _accessQueueRepo.DeleteExpiredTickets();
}
finally
{
_queueLock.Release();
}
}
}
}

View File

@ -6,6 +6,6 @@ namespace AccessQueueService.Services
{
public Task<AccessResponse> RequestAccess(string userId);
public Task<bool> RevokeAccess(string userId);
public int DeleteExpiredTickets();
public Task<int> DeleteExpiredTickets();
}
}