commit perl-Minion for openSUSE:Factory
Hello community, here is the log from the commit of package perl-Minion for openSUSE:Factory checked in at 2019-08-09 16:55:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Minion (Old) and /work/SRC/openSUSE:Factory/.perl-Minion.new.9556 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "perl-Minion" Fri Aug 9 16:55:04 2019 rev:49 rq:721974 version:9.12 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Minion/perl-Minion.changes 2019-07-17 14:27:17.683338494 +0200 +++ /work/SRC/openSUSE:Factory/.perl-Minion.new.9556/perl-Minion.changes 2019-08-09 16:55:06.169443983 +0200 @@ -1,0 +2,13 @@ +Tue Aug 6 05:14:10 UTC 2019 - Stephan Kulow <coolo@suse.com> + +- updated to 9.12 + see /usr/share/doc/packages/perl-Minion/Changes + + 9.12 2019-08-04 + - Added EXPERIMENTAL notes option to list_jobs method in Minion::Backend and + Minion::Backend::Pg. + - Added -n option to job command. + - Improved note methods in Minion::Job, Minion::Backend and + Minion::Backend::Pg to allow for fields to be removed. + +------------------------------------------------------------------- Old: ---- Minion-9.11.tar.gz New: ---- Minion-9.12.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Minion.spec ++++++ --- /var/tmp/diff_new_pack.KhiGVG/_old 2019-08-09 16:55:07.001443783 +0200 +++ /var/tmp/diff_new_pack.KhiGVG/_new 2019-08-09 16:55:07.005443782 +0200 @@ -17,7 +17,7 @@ Name: perl-Minion -Version: 9.11 +Version: 9.12 Release: 0 %define cpan_name Minion Summary: Job queue ++++++ Minion-9.11.tar.gz -> Minion-9.12.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/Changes new/Minion-9.12/Changes --- old/Minion-9.11/Changes 2019-07-08 13:58:20.000000000 +0200 +++ new/Minion-9.12/Changes 2019-08-05 00:27:04.000000000 +0200 @@ -1,4 +1,11 @@ +9.12 2019-08-04 + - Added EXPERIMENTAL notes option to list_jobs method in Minion::Backend and + Minion::Backend::Pg. + - Added -n option to job command. + - Improved note methods in Minion::Job, Minion::Backend and + Minion::Backend::Pg to allow for fields to be removed. + 9.11 2019-07-08 - Added time field to list_jobs method in Minion::Backend::Pg. - Added time field to info method in Minion::Job. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/MANIFEST new/Minion-9.12/MANIFEST --- old/Minion-9.11/MANIFEST 2019-07-08 13:59:57.000000000 +0200 +++ new/Minion-9.12/MANIFEST 2019-08-05 11:49:53.000000000 +0200 @@ -13,6 +13,7 @@ lib/Minion.pm lib/Minion/Backend.pm lib/Minion/Backend/Pg.pm +lib/Minion/Backend/resources/migrations/pg.sql lib/Minion/Command/minion.pm lib/Minion/Command/minion/job.pm lib/Minion/Command/minion/worker.pm diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/META.json new/Minion-9.12/META.json --- old/Minion-9.11/META.json 2019-07-08 13:59:57.000000000 +0200 +++ new/Minion-9.12/META.json 2019-08-05 11:49:53.000000000 +0200 @@ -54,6 +54,6 @@ }, "x_IRC" : "irc://irc.freenode.net/#mojo" }, - "version" : "9.11", + "version" : "9.12", "x_serialization_backend" : "JSON::PP version 4.04" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/META.yml new/Minion-9.12/META.yml --- old/Minion-9.11/META.yml 2019-07-08 13:59:56.000000000 +0200 +++ new/Minion-9.12/META.yml 2019-08-05 11:49:53.000000000 +0200 @@ -27,5 +27,5 @@ homepage: https://mojolicious.org license: http://www.opensource.org/licenses/artistic-license-2.0 repository: https://github.com/mojolicious/minion.git -version: '9.11' +version: '9.12' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion/Backend/Pg.pm new/Minion-9.12/lib/Minion/Backend/Pg.pm --- old/Minion-9.11/lib/Minion/Backend/Pg.pm 2019-07-08 13:58:20.000000000 +0200 +++ new/Minion-9.12/lib/Minion/Backend/Pg.pm 2019-08-05 11:48:01.000000000 +0200 @@ -2,6 +2,7 @@ use Mojo::Base 'Minion::Backend'; use Carp 'croak'; +use Mojo::File 'path'; use Mojo::IOLoop; use Mojo::Pg 4.0; use Sys::Hostname 'hostname'; @@ -88,10 +89,11 @@ extract(epoch from started) as started, state, task, extract(epoch from now()) as time, count(*) over() as total, worker from minion_jobs as j - where (id = any ($1) or $1 is null) and (queue = any ($2) or $2 is null) - and (state = any ($3) or $3 is null) and (task = any ($4) or $4 is null) + where (id = any ($1) or $1 is null) and (notes \? any ($2) or $2 is null) + and (queue = any ($3) or $3 is null) and (state = any ($4) or $4 is null) + and (task = any ($5) or $5 is null) order by id desc - limit $5 offset $6', @$options{qw(ids queues states tasks)}, $limit, + limit $6 offset $7', @$options{qw(ids notes queues states tasks)}, $limit, $offset )->expand->hashes->to_array; @@ -140,7 +142,9 @@ if $db->dbh->{pg_server_version} < 90500; $db->disconnect; - $self->pg->auto_migrate(1)->migrations->name('minion')->from_data; + my $schema + = path(__FILE__)->dirname->child('resources', 'migrations', 'pg.sql'); + $self->pg->auto_migrate(1)->migrations->name('minion')->from_file($schema); return $self; } @@ -148,8 +152,10 @@ sub note { my ($self, $id, $merge) = @_; return !!$self->pg->db->query( - 'update minion_jobs set notes = notes || ? where id = ?', - {json => $merge}, $id)->rows; + 'update minion_jobs set notes = jsonb_strip_nulls(notes || ?) where id = ?', + {json => $merge}, + $id + )->rows; } sub receive { @@ -537,6 +543,13 @@ List only jobs with these ids. +=item notes + + notes => ['foo', 'bar'] + +List only jobs with one of these notes. Note that this option is EXPERIMENTAL +and might change without warning! + =item queues queues => ['important', 'unimportant'] @@ -828,7 +841,8 @@ my $bool = $backend->note($job_id, {mojo => 'rocks', minion => 'too'}); -Change one or more metadata fields for a job. +Change one or more metadata fields for a job. Setting a value to C<undef> will +remove the field. =head2 receive @@ -1011,135 +1025,3 @@ L<Minion>, L<Mojolicious::Guides>, L<https://mojolicious.org>. =cut - -__DATA__ - -@@ minion --- 1 up -create table if not exists minion_jobs ( - id bigserial not null primary key, - args json not null, - created timestamp with time zone not null, - delayed timestamp with time zone not null, - finished timestamp with time zone, - priority int not null, - result json, - retried timestamp with time zone, - retries int not null, - started timestamp with time zone, - state text not null, - task text not null, - worker bigint -); -create table if not exists minion_workers ( - id bigserial not null primary key, - host text not null, - pid int not null, - started timestamp with time zone not null -); - --- 1 down -drop table if exists minion_jobs; -drop table if exists minion_workers; - --- 2 up -alter table minion_jobs alter column created set default now(); -alter table minion_jobs alter column state set default 'inactive'; -alter table minion_jobs alter column retries set default 0; -alter table minion_workers add column - notified timestamp with time zone not null default now(); -alter table minion_workers alter column started set default now(); - --- 4 up -alter table minion_jobs add column queue text not null default 'default'; - --- 5 up -alter table minion_jobs add column attempts int not null default 1; - --- 7 up -create type minion_state as enum ('inactive', 'active', 'failed', 'finished'); -alter table minion_jobs alter column state set default 'inactive'::minion_state; -alter table minion_jobs - alter column state type minion_state using state::minion_state; -alter table minion_jobs alter column args type jsonb using args::jsonb; -alter table minion_jobs alter column result type jsonb using result::jsonb; - --- 7 down -alter table minion_jobs alter column state type text using state; -alter table minion_jobs alter column state set default 'inactive'; -drop type if exists minion_state; - --- 8 up -alter table minion_jobs add constraint args check(jsonb_typeof(args) = 'array'); - --- 9 up -create or replace function minion_jobs_notify_workers() returns trigger as $$ - begin - if new.delayed <= now() then - notify "minion.job"; - end if; - return null; - end; -$$ language plpgsql; -set client_min_messages to warning; -drop trigger if exists minion_jobs_insert_trigger on minion_jobs; -drop trigger if exists minion_jobs_notify_workers_trigger on minion_jobs; -set client_min_messages to notice; -create trigger minion_jobs_notify_workers_trigger - after insert or update of retries on minion_jobs - for each row execute procedure minion_jobs_notify_workers(); - --- 9 down -drop trigger if exists minion_jobs_notify_workers_trigger on minion_jobs; -drop function if exists minion_jobs_notify_workers(); - --- 10 up -alter table minion_jobs add column parents bigint[] not null default '{}'; - --- 11 up -create index on minion_jobs (state, priority desc, id); - --- 12 up -alter table minion_workers add column inbox jsonb - check(jsonb_typeof(inbox) = 'array') not null default '[]'; - --- 15 up -alter table minion_workers add column status jsonb - check(jsonb_typeof(status) = 'object') not null default '{}'; - --- 16 up -create index on minion_jobs using gin (parents); -create table if not exists minion_locks ( - id bigserial not null primary key, - name text not null, - expires timestamp with time zone not null -); - --- 16 down -drop table if exists minion_locks; - --- 17 up -alter table minion_jobs add column notes jsonb - check(jsonb_typeof(notes) = 'object') not null default '{}'; -alter table minion_locks set unlogged; -create index on minion_locks (name, expires); - --- 18 up -create or replace function minion_lock(text, int, int) returns bool as $$ -declare - new_expires timestamp with time zone = now() + (interval '1 second' * $2); -begin - lock table minion_locks in exclusive mode; - delete from minion_locks where expires < now(); - if (select count(*) >= $3 from minion_locks where name = $1) then - return false; - end if; - if new_expires > now() then - insert into minion_locks (name, expires) values ($1, new_expires); - end if; - return true; -end; -$$ language plpgsql; - --- 18 down -drop function if exists minion_lock(text, int, int); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion/Backend/resources/migrations/pg.sql new/Minion-9.12/lib/Minion/Backend/resources/migrations/pg.sql --- old/Minion-9.11/lib/Minion/Backend/resources/migrations/pg.sql 1970-01-01 01:00:00.000000000 +0100 +++ new/Minion-9.12/lib/Minion/Backend/resources/migrations/pg.sql 2019-08-05 11:46:54.000000000 +0200 @@ -0,0 +1,136 @@ +-- +-- These are the migrations for the PostgreSQL Minion backend. They are only +-- used for upgrades to the latest version. Downgrades may be used to clean up +-- the database, but they do not have to work with old versions of Minion. +-- +-- 1 up +create table if not exists minion_jobs ( + id bigserial not null primary key, + args json not null, + created timestamp with time zone not null, + delayed timestamp with time zone not null, + finished timestamp with time zone, + priority int not null, + result json, + retried timestamp with time zone, + retries int not null, + started timestamp with time zone, + state text not null, + task text not null, + worker bigint +); +create table if not exists minion_workers ( + id bigserial not null primary key, + host text not null, + pid int not null, + started timestamp with time zone not null +); + +-- 1 down +drop table if exists minion_jobs; +drop table if exists minion_workers; + +-- 2 up +alter table minion_jobs alter column created set default now(); +alter table minion_jobs alter column state set default 'inactive'; +alter table minion_jobs alter column retries set default 0; +alter table minion_workers add column + notified timestamp with time zone not null default now(); +alter table minion_workers alter column started set default now(); + +-- 4 up +alter table minion_jobs add column queue text not null default 'default'; + +-- 5 up +alter table minion_jobs add column attempts int not null default 1; + +-- 7 up +create type minion_state as enum ('inactive', 'active', 'failed', 'finished'); +alter table minion_jobs alter column state set default 'inactive'::minion_state; +alter table minion_jobs + alter column state type minion_state using state::minion_state; +alter table minion_jobs alter column args type jsonb using args::jsonb; +alter table minion_jobs alter column result type jsonb using result::jsonb; + +-- 7 down +alter table minion_jobs alter column state type text using state; +alter table minion_jobs alter column state set default 'inactive'; +drop type if exists minion_state; + +-- 8 up +alter table minion_jobs add constraint args check(jsonb_typeof(args) = 'array'); + +-- 9 up +create or replace function minion_jobs_notify_workers() returns trigger as $$ + begin + if new.delayed <= now() then + notify "minion.job"; + end if; + return null; + end; +$$ language plpgsql; +set client_min_messages to warning; +drop trigger if exists minion_jobs_insert_trigger on minion_jobs; +drop trigger if exists minion_jobs_notify_workers_trigger on minion_jobs; +set client_min_messages to notice; +create trigger minion_jobs_notify_workers_trigger + after insert or update of retries on minion_jobs + for each row execute procedure minion_jobs_notify_workers(); + +-- 9 down +drop trigger if exists minion_jobs_notify_workers_trigger on minion_jobs; +drop function if exists minion_jobs_notify_workers(); + +-- 10 up +alter table minion_jobs add column parents bigint[] not null default '{}'; + +-- 11 up +create index on minion_jobs (state, priority desc, id); + +-- 12 up +alter table minion_workers add column inbox jsonb + check(jsonb_typeof(inbox) = 'array') not null default '[]'; + +-- 15 up +alter table minion_workers add column status jsonb + check(jsonb_typeof(status) = 'object') not null default '{}'; + +-- 16 up +create index on minion_jobs using gin (parents); +create table if not exists minion_locks ( + id bigserial not null primary key, + name text not null, + expires timestamp with time zone not null +); + +-- 16 down +drop table if exists minion_locks; + +-- 17 up +alter table minion_jobs add column notes jsonb + check(jsonb_typeof(notes) = 'object') not null default '{}'; +alter table minion_locks set unlogged; +create index on minion_locks (name, expires); + +-- 18 up +create or replace function minion_lock(text, int, int) returns bool as $$ +declare + new_expires timestamp with time zone = now() + (interval '1 second' * $2); +begin + lock table minion_locks in exclusive mode; + delete from minion_locks where expires < now(); + if (select count(*) >= $3 from minion_locks where name = $1) then + return false; + end if; + if new_expires > now() then + insert into minion_locks (name, expires) values ($1, new_expires); + end if; + return true; +end; +$$ language plpgsql; + +-- 18 down +drop function if exists minion_lock(text, int, int); + +-- 19 up +create index on minion_jobs using gin (notes); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion/Backend.pm new/Minion-9.12/lib/Minion/Backend.pm --- old/Minion-9.11/lib/Minion/Backend.pm 2019-07-08 13:58:20.000000000 +0200 +++ new/Minion-9.12/lib/Minion/Backend.pm 2019-08-05 00:22:22.000000000 +0200 @@ -278,6 +278,13 @@ List only jobs with these ids. +=item notes + + notes => ['foo', 'bar'] + +List only jobs with one of these notes. Note that this option is EXPERIMENTAL +and might change without warning! + =item queues queues => ['important', 'unimportant'] @@ -565,8 +572,8 @@ my $bool = $backend->note($job_id, {mojo => 'rocks', minion => 'too'}); -Change one or more metadata fields for a job. Meant to be overloaded in a -subclass. +Change one or more metadata fields for a job. Setting a value to C<undef> +will remove the field. Meant to be overloaded in a subclass. =head2 receive diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion/Command/minion/job.pm new/Minion-9.12/lib/Minion/Command/minion/job.pm --- old/Minion-9.11/lib/Minion/Command/minion/job.pm 2019-05-31 21:45:13.000000000 +0200 +++ new/Minion-9.12/lib/Minion/Command/minion/job.pm 2019-08-04 23:39:45.000000000 +0200 @@ -21,6 +21,7 @@ 'H|history' => \my $history, 'L|locks' => \my $locks, 'l|limit=i' => \(my $limit = 100), + 'n|notes=s' => sub { $opts->{notes} = decode_json($_[1]) }, 'o|offset=i' => \(my $offset = 0), 'P|parent=s' => sub { push @{$opts->{parents}}, $_[1] }, 'p|priority=i' => \$opts->{priority}, @@ -120,8 +121,10 @@ ./myapp.pl minion job -q important -t foo -t bar -S inactive ./myapp.pl minion job -e foo -a '[23, "bar"]' ./myapp.pl minion job -e foo -P 10023 -P 10024 -p 5 -q important + ./myapp.pl minion job -e 'foo' -n '{"test":123}' ./myapp.pl minion job -R -d 10 10023 ./myapp.pl minion job --remove 10023 + ./myapp.pl minion job -n '["test"]' ./myapp.pl minion job -L ./myapp.pl minion job -L some_lock some_other_lock ./myapp.pl minion job -b jobs -a '[12]' @@ -150,6 +153,8 @@ -m, --mode <name> Operating mode for your application, defaults to the value of MOJO_MODE/PLACK_ENV or "development" + --n, notes <JSON> Notes in JSON format for new job or list only + jobs with one of these notes -o, --offset <number> Number of jobs/workers to skip when listing them, defaults to 0 -P, --parent <id> One or more jobs the new job depends on diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion/Job.pm new/Minion-9.12/lib/Minion/Job.pm --- old/Minion-9.11/lib/Minion/Job.pm 2019-07-08 13:58:20.000000000 +0200 +++ new/Minion-9.12/lib/Minion/Job.pm 2019-08-05 00:26:21.000000000 +0200 @@ -262,7 +262,8 @@ my $err = $job->execute; Perform job in this process and return C<undef> if the task was successful or an -exception otherwise. +exception otherwise. Note that this method should only be used to implement +custom workers. # Perform job in foreground if (my $err = $job->execute) { $job->fail($err) } @@ -419,22 +420,25 @@ my $bool = $job->is_finished; -Check if job performed with L</"start"> is finished. +Check if job performed with L</"start"> is finished. Note that this method +should only be used to implement custom workers. =head2 kill $job->kill('INT'); -Send a signal to job performed with L</"start">. +Send a signal to job performed with L</"start">. Note that this method should +only be used to implement custom workers. =head2 note my $bool = $job->note(mojo => 'rocks', minion => 'too'); -Change one or more metadata fields for this job. The new values will get -serialized by L<Minion/"backend"> (often with L<Mojo::JSON>), so you shouldn't -send objects and be careful with binary data, nested data structures with hash -and array references are fine though. +Change one or more metadata fields for this job. Setting a value to C<undef> +will remove the field. The new values will get serialized by L<Minion/"backend"> +(often with L<Mojo::JSON>), so you shouldn't send objects and be careful with +binary data, nested data structures with hash and array references are fine +though. # Share progress information $job->note(progress => 95); @@ -446,13 +450,15 @@ $job->perform; -Perform job in new process and wait for it to finish. +Perform job in new process and wait for it to finish. Note that this method +should only be used to implement custom workers. =head2 pid my $pid = $job->pid; -Process id of the process spawned by L</"start"> if available. +Process id of the process spawned by L</"start"> if available. Note that this +method should only be used to implement custom workers. =head2 remove @@ -508,7 +514,8 @@ $job = $job->start; -Perform job in new process, but do not wait for it to finish. +Perform job in new process, but do not wait for it to finish. Note that this +method should only be used to implement custom workers. # Perform two jobs concurrently $job1->start; @@ -521,7 +528,8 @@ $job->stop; -Stop job performed with L</"start"> immediately. +Stop job performed with L</"start"> immediately. Note that this method should +only be used to implement custom workers. =head1 SEE ALSO diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion/Worker.pm new/Minion-9.12/lib/Minion/Worker.pm --- old/Minion-9.11/lib/Minion/Worker.pm 2019-05-31 21:45:12.000000000 +0200 +++ new/Minion-9.12/lib/Minion/Worker.pm 2019-08-04 23:35:24.000000000 +0200 @@ -382,7 +382,7 @@ $worker->run; -Run worker and wait for L</"SIGNALS">. +Run worker and wait for L</"WORKER SIGNALS">. These L</"status"> options are currently available: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/lib/Minion.pm new/Minion-9.12/lib/Minion.pm --- old/Minion-9.11/lib/Minion.pm 2019-07-08 13:58:20.000000000 +0200 +++ new/Minion-9.12/lib/Minion.pm 2019-08-04 23:24:47.000000000 +0200 @@ -22,7 +22,7 @@ has remove_after => 172800; has tasks => sub { {} }; -our $VERSION = '9.11'; +our $VERSION = '9.12'; sub add_task { ($_[0]->tasks->{$_[1]} = $_[2]) and return $_[0] } @@ -808,7 +808,8 @@ my $worker = $minion->worker; -Build L<Minion::Worker> object. +Build L<Minion::Worker> object. Note that this method should only be used to +implement custom workers. # Use the standard worker with all its features my $worker = $minion->worker; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-9.11/t/pg.t new/Minion-9.12/t/pg.t --- old/Minion-9.11/t/pg.t 2019-07-08 13:58:20.000000000 +0200 +++ new/Minion-9.12/t/pg.t 2019-08-05 00:24:36.000000000 +0200 @@ -24,11 +24,11 @@ isa_ok $worker->minion->app, 'Mojolicious', 'has default application'; # Migrate up and down -is $minion->backend->pg->migrations->active, 18, 'active version is 18'; +is $minion->backend->pg->migrations->active, 19, 'active version is 19'; is $minion->backend->pg->migrations->migrate(0)->active, 0, 'active version is 0'; -is $minion->backend->pg->migrations->migrate->active, 18, - 'active version is 18'; +is $minion->backend->pg->migrations->migrate->active, 19, + 'active version is 19'; # Register and unregister $worker->register; @@ -422,6 +422,11 @@ is $batch->[2]{queue}, 'default', 'right queue'; is $batch->[3]{queue}, 'default', 'right queue'; ok !$batch->[4], 'no more results'; +$id2 = $minion->enqueue('test' => [] => {notes => {is_test => 1}}); +$batch = $minion->backend->list_jobs(0, 10, {notes => ['is_test']})->{jobs}; +is $batch->[0]{task}, 'test', 'right task'; +ok !$batch->[4], 'no more results'; +ok $minion->job($id2)->remove, 'job removed'; $batch = $minion->backend->list_jobs(0, 10, {queues => ['does_not_exist']})->{jobs}; is_deeply $batch, [], 'no results'; @@ -711,6 +716,9 @@ }; is_deeply $job->info->{notes}, $notes, 'right metadata'; is_deeply $job->info->{result}, [{23 => 'testtesttest'}], 'right structure'; +ok $job->note(yada => undef, bar => undef), 'removed metadata'; +$notes = {foo => [4, 5, 6], baz => 'yada'}; +is_deeply $job->info->{notes}, $notes, 'right metadata'; $worker->unregister; # Perform job in a running event loop
participants (1)
-
root