Scheduled Job Issues | Coolify

Scheduled Job Issues

Refresh
Shows failed executions, skipped jobs, and scheduler health.
{{-- Tab Buttons --}}
Failures ({{ $executions->count() }})
Scheduler Runs ({{ $managerRuns->count() }})
Skipped Jobs ({{ $skipTotalCount }})
{{-- Executions Tab --}}
{{-- Filters --}}
@forelse($executions as $execution) @empty @endforelse
Type Resource Server Started Duration Message
@php $typeLabel = match($execution['type']) { 'backup' => 'Backup', 'task' => 'Task', 'cleanup' => 'Cleanup', default => ucfirst($execution['type']), }; $typeBg = match($execution['type']) { 'backup' => 'bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300', 'task' => 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300', 'cleanup' => 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300', default => 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300', }; @endphp {{ $typeLabel }} {{ $execution['resource_name'] }} @if($execution['resource_type']) ({{ $execution['resource_type'] }}) @endif {{ $execution['server_name'] }} {{ $execution['created_at']->diffForHumans() }} {{ $execution['created_at']->format('M d H:i') }} @if($execution['finished_at'] && $execution['created_at']) {{ \Carbon\Carbon::parse($execution['created_at'])->diffInSeconds(\Carbon\Carbon::parse($execution['finished_at'])) }}s @elseif($execution['status'] === 'running') @else - @endif {{ \Illuminate\Support\Str::limit($execution['message'], 80) }}
No failures found for the selected filters.
{{-- Scheduler Runs Tab --}}
Shows when the ScheduledJobManager executed. Gaps indicate lock conflicts or missed runs.
@forelse($managerRuns as $run) @empty @endforelse
Time Event Duration Dispatched Skipped
{{ $run['timestamp'] }} {{ $run['message'] }} @if($run['duration_ms'] !== null) {{ $run['duration_ms'] }}ms @else - @endif {{ $run['dispatched'] ?? '-' }} @if(($run['skipped'] ?? 0) > 0) {{ $run['skipped'] }} @else {{ $run['skipped'] ?? '-' }} @endif
No scheduler run logs found. Logs appear after the ScheduledJobManager runs.
{{-- Skipped Jobs Tab --}}
Jobs that were not dispatched because conditions were not met.
@if($skipTotalCount > $skipDefaultTake)
Page {{ $skipCurrentPage }} of {{ ceil($skipTotalCount / $skipDefaultTake) }}
@endif
@forelse($skipLogs as $skip) @empty @endforelse
Time Type Resource Reason
{{ $skip['timestamp'] }} @php $skipTypeBg = match($skip['type']) { 'backup' => 'bg-blue-100 text-blue-800 dark:bg-blue-900/30 dark:text-blue-300', 'task' => 'bg-purple-100 text-purple-800 dark:bg-purple-900/30 dark:text-purple-300', 'docker_cleanup' => 'bg-orange-100 text-orange-800 dark:bg-orange-900/30 dark:text-orange-300', default => 'bg-gray-100 text-gray-800 dark:bg-gray-900/30 dark:text-gray-300', }; @endphp {{ ucfirst(str_replace('_', ' ', $skip['type'])) }} @if($skip['link'] ?? null) {{ $skip['resource_name'] }} @elseif($skip['resource_name'] ?? null) {{ $skip['resource_name'] }} @else {{ $skip['context']['task_name'] ?? $skip['context']['server_name'] ?? 'Deleted' }} @endif @php $reasonLabel = match($skip['reason']) { 'server_not_functional' => 'Server not functional', 'subscription_unpaid' => 'Subscription unpaid', 'database_deleted' => 'Database deleted', 'server_deleted' => 'Server deleted', 'resource_deleted' => 'Resource deleted', 'application_not_running' => 'Application not running', 'service_not_running' => 'Service not running', default => ucfirst(str_replace('_', ' ', $skip['reason'])), }; $reasonBg = match($skip['reason']) { 'server_not_functional', 'database_deleted', 'server_deleted', 'resource_deleted' => 'text-red-600 dark:text-red-400', 'subscription_unpaid' => 'text-warning', 'application_not_running', 'service_not_running' => 'text-orange-600 dark:text-orange-400', default => '', }; @endphp {{ $reasonLabel }}
No skipped jobs found. This means all scheduled jobs passed their conditions.