From aa365464459bccabd8ff147788e19e07ff1ab39b Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Tue, 30 Dec 2025 16:06:12 +0000 Subject: [PATCH] fix: Throttle scheduler status logs to every 15 seconds MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add throttling to high-frequency scheduler status logs: - "Scheduler waiting: Total=X, Queued=X, Executing=X, Completed=X" - "Pending modules: ..." - "Executing modules: ..." These messages previously fired every scheduler loop iteration (~100ms), causing significant log spam in CI. Now they only log once every 15 seconds. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/ModularPipelines/Engine/ModuleScheduler.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/ModularPipelines/Engine/ModuleScheduler.cs b/src/ModularPipelines/Engine/ModuleScheduler.cs index 558aff6a26..7b054ab186 100644 --- a/src/ModularPipelines/Engine/ModuleScheduler.cs +++ b/src/ModularPipelines/Engine/ModuleScheduler.cs @@ -35,8 +35,11 @@ internal class ModuleScheduler : IModuleScheduler private readonly CancellationTokenSource _disposalCancellationTokenSource; private readonly ReaderWriterLockSlim _stateLock = new ReaderWriterLockSlim(LockRecursionPolicy.NoRecursion); + private static readonly TimeSpan StatusLogInterval = TimeSpan.FromSeconds(15); + private bool _schedulerCompleted; private bool _isDisposed; + private DateTimeOffset _lastStatusLogTime; public ModuleScheduler( ILogger logger, @@ -326,6 +329,14 @@ private bool ShouldExitScheduler(int queuedCount) private void LogSchedulerWaitingState() { + var now = _timeProvider.GetUtcNow(); + if (now - _lastStatusLogTime < StatusLogInterval) + { + return; + } + + _lastStatusLogTime = now; + var stats = _stateQueries.GetStatistics(); _logger.LogDebug( "Scheduler waiting: Total={Total}, Queued={Queued}, Executing={Executing}, Completed={Completed}, Pending={Pending}",