From 114f13179036cb3564e3a1e3bb3cbc7b940890ca Mon Sep 17 00:00:00 2001 From: Sai Asish Y Date: Wed, 22 Jul 2026 13:01:42 -0700 Subject: [PATCH] Fix uninitialized value warning for failed jobs without timestamps in admin UI Signed-off-by: Sai Asish Y --- .../Minion/resources/templates/minion/jobs.html.ep | 4 ++-- t/pg_admin.t | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/Mojolicious/Plugin/Minion/resources/templates/minion/jobs.html.ep b/lib/Mojolicious/Plugin/Minion/resources/templates/minion/jobs.html.ep index b8bade1a..80a13c62 100644 --- a/lib/Mojolicious/Plugin/Minion/resources/templates/minion/jobs.html.ep +++ b/lib/Mojolicious/Plugin/Minion/resources/templates/minion/jobs.html.ep @@ -130,8 +130,8 @@ inactive % } - % if (grep { $job->{state} eq $_ } qw(active finished failed)) { - % my $end = $job->{state} eq 'active' ? 'time' : 'finished'; + % my $end = $job->{state} eq 'active' ? 'time' : 'finished'; + % if ((grep { $job->{state} eq $_ } qw(active finished failed)) && defined $job->{started} && defined $job->{$end}) { % my $runtime = $job->{$end} - $job->{started}; <%= $runtime %> diff --git a/t/pg_admin.t b/t/pg_admin.t index 92259c5b..213d3254 100644 --- a/t/pg_admin.t +++ b/t/pg_admin.t @@ -59,6 +59,15 @@ subtest 'Jobs' => sub { ->text_unlike('tbody td a' => qr/$inactive/); }; +subtest 'Failed job without timestamps' => sub { + my $stuck = app->minion->enqueue('test'); + app->minion->backend->pg->db->query("UPDATE minion_jobs SET state = 'failed' WHERE id = ?", $stuck); + my @warnings; + local $SIG{__WARN__} = sub { push @warnings, $_[0] }; + $t->get_ok('/minion/jobs?state=failed')->status_is(200)->text_like('tbody td a' => qr/$stuck/); + is_deeply \@warnings, [], 'no uninitialized value warnings'; +}; + subtest 'Workers' => sub { $t->get_ok('/minion/workers')->status_is(200)->element_exists_not('tbody td a'); my $worker = app->minion->worker->register;