From aa78432db386c427a0256402f3f71509d6775a47 Mon Sep 17 00:00:00 2001 From: Stanley Dimant Date: Sat, 4 May 2024 15:31:59 +0200 Subject: [PATCH] more queue fixes --- .../Services/RequestQueueService.cs | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/RequestQueueService.cs b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/RequestQueueService.cs index ac0b2da..0458e57 100644 --- a/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/RequestQueueService.cs +++ b/MareSynchronosServer/MareSynchronosStaticFilesServer/Services/RequestQueueService.cs @@ -2,6 +2,7 @@ using MareSynchronosShared.Services; using MareSynchronosStaticFilesServer.Utils; using System.Collections.Concurrent; +using System.Linq; using System.Timers; namespace MareSynchronosStaticFilesServer.Services; @@ -156,7 +157,8 @@ public class RequestQueueService : IHostedService while (true) { - if (_priorityQueue.TryDequeue(out var prioRequest)) + if (!_priorityQueue.All(u => _cachedFileProvider.AnyFilesDownloading(u.FileIds)) + && _priorityQueue.TryDequeue(out var prioRequest)) { if (prioRequest.IsCancelled) { @@ -164,13 +166,17 @@ public class RequestQueueService : IHostedService } if (_cachedFileProvider.AnyFilesDownloading(prioRequest.FileIds)) + { _priorityQueue.Enqueue(prioRequest); + continue; + } DequeueIntoSlot(prioRequest, i); break; } - if (_queue.TryDequeue(out var request)) + if (!_queue.All(u => _cachedFileProvider.AnyFilesDownloading(u.FileIds)) + && _queue.TryDequeue(out var request)) { if (request.IsCancelled) { @@ -178,7 +184,10 @@ public class RequestQueueService : IHostedService } if (_cachedFileProvider.AnyFilesDownloading(request.FileIds)) + { _queue.Enqueue(request); + continue; + } DequeueIntoSlot(request, i); break;