ResultSet::TaskRetries: teach about saving tasks
[?]
Aug 26, 2021, 9:32 PM
IBXWOZCLZYQCWXCSXZR3VHKWICB5LEGM7JHCRJKMFLJKE5DAPE5ACDependencies
- [2]
GMOI3OFSResultSet::TaskRetries: add get_seconds_to_next_retry
Change contents
- edit in src/lib/Hydra/Schema/ResultSet/TaskRetries.pm at line 8
use Hydra::Math qw(exponential_backoff); - edit in src/lib/Hydra/Schema/ResultSet/TaskRetries.pm at line 41
=head2 save_taskSave a failing L<Hydra::Task> in the database, with a retry scheduledfor a few seconds away.Arguments: - edit in src/lib/Hydra/Schema/ResultSet/TaskRetries.pm at line 49
=over 1=item C<$task>L<Hydra::Task> The failing task to retry.=back=cutsub save_task {my ($self, $task) = @_;return $self->create({channel => $task->{"event"}->{"channel_name"},pluginname => $task->{"plugin_name"},payload => $task->{"event"}->{"payload"},attempts => 1,retry_at => time() + exponential_backoff(1),});} - edit in t/Schema/ResultSet/TaskRetries.t at line 7
use Hydra::Event;use Hydra::Task; - edit in t/Schema/ResultSet/TaskRetries.t at line 45
};subtest "save_task" => sub {my $event = Hydra::Event->new_event("build_started", "1");my $task = Hydra::Task->new($event,"FooPluginName",);my $retry = $taskretries->save_task($task);is($retry->channel, "build_started", "Channel name should match");is($retry->pluginname, "FooPluginName", "Plugin name should match");is($retry->payload, "1", "Payload should match");is($retry->attempts, 1, "We've had one attempt");is($retry->retry_at, within(time() + 1, 2), "The retry at should be approximately one second away");