Skip to content

Commit

Permalink
Expose the Lock ID on the locks page
Browse files Browse the repository at this point in the history
  • Loading branch information
stuartskelton committed Mar 19, 2024
1 parent 0bf0031 commit 183b7ba
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 1 deletion.
8 changes: 7 additions & 1 deletion lib/Minion/Backend/Pg.pm
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ sub list_locks {
my ($self, $offset, $limit, $options) = @_;

my $locks = $self->pg->db->query(
'SELECT name, EXTRACT(EPOCH FROM expires) AS expires, COUNT(*) OVER() AS total FROM minion_locks
'SELECT id, name, EXTRACT(EPOCH FROM expires) AS expires, COUNT(*) OVER() AS total FROM minion_locks
WHERE expires > NOW() AND (name = ANY ($1) OR $1 IS NULL)
ORDER BY id DESC LIMIT $2 OFFSET $3', $options->{names}, $limit, $offset
)->hashes->to_array;
Expand Down Expand Up @@ -721,6 +721,12 @@ These fields are currently available:
=over 2
=item id
id => 1
Lock id.
=item expires
expires => 784111777
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
<thead>
<tr>
<th><input class="checkall" data-check="name" type="checkbox"></th>
<th>Lock ID</th>
<th>Name</th>
<th>Expires</th>
</tr>
Expand All @@ -37,6 +38,9 @@
<td>
<input type="checkbox" name="name" value="<%= $lock->{name} %>">
</td>
<td id="lock_id">
<%= $lock->{id} %>
</td>
<td>
<a href="<%= url_for->query({name => $lock->{name}}) %>">
<%= $lock->{name} %>
Expand Down
4 changes: 4 additions & 0 deletions t/pg_admin.t
Original file line number Diff line number Diff line change
Expand Up @@ -56,10 +56,14 @@ subtest 'Workers' => sub {

subtest 'Locks' => sub {
$t->app->minion->lock('foo', 3600);
$t->get_ok('/minion/stats')->status_is(200)->json_is('/active_locks' => 1);
$t->app->minion->lock('bar', 3600);
$t->get_ok('/minion/stats')->status_is(200)->json_is('/active_locks' => 2);
$t->ua->max_redirects(5);
$t->get_ok('/minion/locks')->status_is(200)->text_like('tbody td a' => qr/bar/);
$t->get_ok('/minion/locks')->status_is(200)->text_like('tbody td#lock_id' => qr/2/);
$t->get_ok('/minion/locks?name=foo')->status_is(200)->text_like('tbody td a' => qr/foo/);
$t->get_ok('/minion/locks?name=foo')->status_is(200)->text_like('tbody td#lock_id' => qr/1/);
$t->post_ok('/minion/locks?_method=DELETE&name=bar')->status_is(200)->text_like('tbody td a' => qr/foo/)
->text_like('.alert-success', qr/All selected named locks released/);
is $t->tx->previous->res->code, 302, 'right status';
Expand Down

0 comments on commit 183b7ba

Please sign in to comment.