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; var cleanupIntervalMillis = _config.GetValue<int>("AccessQueue:CleanupIntervalSeconds") * 1000;
while (!stoppingToken.IsCancellationRequested) while (!stoppingToken.IsCancellationRequested)
{ {
_accessService.DeleteExpiredTickets(); await _accessService.DeleteExpiredTickets();
await Task.Delay(cleanupIntervalMillis, stoppingToken); await Task.Delay(cleanupIntervalMillis, stoppingToken);
} }
} }

View File

@ -1,4 +1,5 @@
using AccessQueueService.Data; using System.Threading.Tasks;
using AccessQueueService.Data;
using AccessQueueService.Models; using AccessQueueService.Models;
namespace AccessQueueService.Services 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<AccessResponse> RequestAccess(string userId);
public Task<bool> RevokeAccess(string userId); public Task<bool> RevokeAccess(string userId);
public int DeleteExpiredTickets(); public Task<int> DeleteExpiredTickets();
} }
} }