From 3db37d1e0a73fc96d4e9493b3bd8f65717eac15f Mon Sep 17 00:00:00 2001 From: da3dsoul Date: Tue, 12 Mar 2024 09:23:05 -0400 Subject: [PATCH] Fix Log Messages. Fix Cache for Queue Items --- Shoko.CLI/Program.cs | 6 ++-- .../API/v3/Controllers/QueueController.cs | 28 ++++++++++++------- .../Scheduling/ThreadPooledJobStore.cs | 4 ++- 3 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Shoko.CLI/Program.cs b/Shoko.CLI/Program.cs index 3e5c74927..b33b6681b 100644 --- a/Shoko.CLI/Program.cs +++ b/Shoko.CLI/Program.cs @@ -68,7 +68,7 @@ private static void QueueStateEventHandlerOnQueueItemAdded(object? sender, Queue foreach (var addedItem in e.AddedItems) { - _logger.LogTrace("Job Added: {Type} | {Details}", addedItem.JobType ?? addedItem.Key, GetDetails(addedItem.Details)); + _logger.LogTrace("Job Added: {Type} | {Details}", addedItem.Title, GetDetails(addedItem.Details)); } _logger.LogTrace("Waiting: {Waiting} | Blocked: {Blocked} | Executing: {Executing}/{Pool} | Total: {Total}", e.WaitingJobsCount, @@ -81,7 +81,7 @@ private static void ExecutingJobsStateEventHandlerOnExecutingJobsChanged(object? { foreach (var addedItem in e.AddedItems) { - _logger.LogTrace("Job Started: {Type} | {Details}", addedItem.JobType ?? addedItem.Title, GetDetails(addedItem.Details)); + _logger.LogTrace("Job Started: {Type} | {Details}", addedItem.Title, GetDetails(addedItem.Details)); } } @@ -89,7 +89,7 @@ private static void ExecutingJobsStateEventHandlerOnExecutingJobsChanged(object? { foreach (var removedItem in e.RemovedItems) { - _logger.LogTrace("Job Completed: {Type} | {Details}", removedItem.JobType, GetDetails(removedItem.Details)); + _logger.LogTrace("Job Completed: {Type} | {Details}", removedItem.Title, GetDetails(removedItem.Details)); } } diff --git a/Shoko.Server/API/v3/Controllers/QueueController.cs b/Shoko.Server/API/v3/Controllers/QueueController.cs index f057aa688..fcada1bc6 100644 --- a/Shoko.Server/API/v3/Controllers/QueueController.cs +++ b/Shoko.Server/API/v3/Controllers/QueueController.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -121,19 +122,26 @@ public async Task Clear() ? _queueHandler.WaitingCount + _queueHandler.BlockedCount + _queueHandler.GetExecutingJobs().Length : _queueHandler.WaitingCount + _queueHandler.GetExecutingJobs().Length; + var offset = (page - 1) * pageSize; // simplified from (page - 1) * pageSize + pageSize if (page * pageSize <= _settingsProvider.GetSettings().Quartz.WaitingCacheSize) - return new ListResult(total, _queueHandler.GetWaitingJobs().Select(a => new Queue.QueueItem - { - Key = a.Key, - Type = a.JobType, - Title = a.Title, - Details = a.Details, - IsRunning = a.Running, - IsBlocked = a.Blocked - }).ToList()); + { + var results = _queueHandler.GetExecutingJobs().Skip(offset).Take(pageSize).ToList(); + if (pageSize - results.Count > 0) + results.AddRange(_queueHandler.GetWaitingJobs().Skip(offset - results.Count).Take(pageSize - results.Count)); + return new ListResult(total, results.Select(a => + new Queue.QueueItem + { + Key = a.Key, + Type = a.JobType, + Title = a.Title, + Details = a.Details, + IsRunning = a.Running, + IsBlocked = a.Blocked + }).ToList()); + } - return new ListResult(total, (await _queueHandler.GetJobs(pageSize, (page - 1) * pageSize, !showAll)) + return new ListResult(total, (await _queueHandler.GetJobs(pageSize, offset, !showAll)) .Select(a => new Queue.QueueItem { Key = a.Key, diff --git a/Shoko.Server/Scheduling/ThreadPooledJobStore.cs b/Shoko.Server/Scheduling/ThreadPooledJobStore.cs index e1701294a..07b54913d 100644 --- a/Shoko.Server/Scheduling/ThreadPooledJobStore.cs +++ b/Shoko.Server/Scheduling/ThreadPooledJobStore.cs @@ -479,7 +479,9 @@ public Task> GetJobs(int maxCount, int offset, bool excludeBlock } } - var jobs = await Delegate.SelectJobs(conn, _typeLoadHelper, maxCount - result.Count, offset, NoLaterThan, NoEarlierThan, types, excludeBlocked, + if (maxCount - result.Count <= 0) return result; + + var jobs = await Delegate.SelectJobs(conn, _typeLoadHelper, maxCount - result.Count, Math.Max(offset - result.Count, 0), NoLaterThan, NoEarlierThan, types, excludeBlocked, cancellationToken); result.AddRange(jobs.Select(a => {