thread safety for background service
This commit is contained in:
parent
c12a6465f9
commit
a6980252c0
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue