From ed3780b2a75c58439a303dfaf5d04989f5061b1d Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Tue, 26 May 2026 13:51:22 +0200 Subject: [PATCH] fix(schedule): run stale multiplex cleanup on crons queue Dispatch CleanupStaleMultiplexedConnections through the crons queue and cover the scheduled job queue assignment with a feature test. --- app/Console/Kernel.php | 4 +++- tests/Feature/ScheduleOnOneServerTest.php | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 665553fcb..494e6d7b6 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -41,7 +41,9 @@ protected function schedule(Schedule $schedule): void $this->instanceTimezone = config('app.timezone'); } - $this->scheduleInstance->job(new CleanupStaleMultiplexedConnections)->hourly()->onOneServer(); + $this->scheduleInstance->job(new CleanupStaleMultiplexedConnections, crons_queue()) + ->hourly() + ->onOneServer(); $this->scheduleInstance->command('cleanup:redis --clear-locks')->daily(); $this->scheduleInstance->command('sanctum:prune-expired --hours=1')->hourly()->onOneServer(); $this->scheduleInstance->job(new ApiTokenExpirationWarningJob)->hourly()->onOneServer(); diff --git a/tests/Feature/ScheduleOnOneServerTest.php b/tests/Feature/ScheduleOnOneServerTest.php index 10758738c..b11017107 100644 --- a/tests/Feature/ScheduleOnOneServerTest.php +++ b/tests/Feature/ScheduleOnOneServerTest.php @@ -1,8 +1,10 @@ onOneServer)->toBeTrue(); }); +it('schedules CleanupStaleMultiplexedConnections on the crons queue', function () { + config(['constants.coolify.self_hosted' => false]); + Queue::fake(); + + $schedule = app(Schedule::class); + + $event = collect($schedule->events())->first( + fn ($e) => str_contains((string) $e->description, CleanupStaleMultiplexedConnections::class) + ); + + expect($event)->not->toBeNull(); + + $event->run(app()); + + Queue::assertPushedOn('crons', CleanupStaleMultiplexedConnections::class); +}); + it('schedules every production job with onOneServer', function () { $schedule = app(Schedule::class);