Result::TaskRetries: Teach about requeue
[?]
Aug 26, 2021, 9:32 PM
LZF7KS2SAHYMTE5W7NXWSDXWIJXKHJGNWYKMERJESR4GMBHLF7VQCDependencies
Change contents
- edit in src/lib/Hydra/Schema/Result/TaskRetries.pm at line 108
use Hydra::Math qw(exponential_backoff); - replacement in src/lib/Hydra/Schema/Result/TaskRetries.pm at line 110
# You can replace this text with custom code or comments, and it will be preserved on regenerationsub requeue {my ($self) = @_;$self->update({attempts => $self->attempts + 1,retry_at => time() + exponential_backoff($self->attempts + 1),});} - file addition: Result[2.895]
- file addition: TaskRetries.t[0.210]
use strict;use warnings;use Setup;my %ctx = test_init();require Hydra::Schema;require Hydra::Model::DB;use Test2::V0;my $db = Hydra::Model::DB->new;hydra_setup($db);my $taskretries = $db->resultset('TaskRetries');subtest "requeue" => sub {my $task = $taskretries->create({channel => "bogus",pluginname => "bogus",payload => "bogus",attempts => 1,retry_at => time(),});$task->requeue();is($task->attempts, 2, "We should have stored a second retry");is($task->retry_at, within(time() + 4, 2), "Delayed two exponential backoff step");$task->requeue();is($task->attempts, 3, "We should have stored a third retry");is($task->retry_at, within(time() + 8, 2), "Delayed a third exponential backoff step");};done_testing;