Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Minion for openSUSE:Factory 
checked in at 2021-03-10 08:57:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Minion (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Minion.new.2378 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Minion"

Wed Mar 10 08:57:31 2021 rev:65 rq:878032 version:10.17

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Minion/perl-Minion.changes  2021-02-17 
18:13:34.058040133 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Minion.new.2378/perl-Minion.changes        
2021-03-10 08:58:43.870980387 +0100
@@ -1,0 +2,14 @@
+Sun Mar  7 03:07:20 UTC 2021 - Tina M??ller <timueller+p...@suse.de>
+
+- updated to 10.17
+   see /usr/share/doc/packages/perl-Minion/Changes
+
+  10.17  2021-03-05
+    - Added support for high priority fast lane.
+    - Added each method to Minion::Iterator.
+    - Added min_priority option to dequeue methods in Minion::Worker and 
Minion::Backend::Pg.
+    - Added spare and spare_min_priority options to run method in 
Minion::Worker.
+    - Added -s and -S options to worker command.
+    - Added --retry-failed and --remove-failed options to job command.
+
+-------------------------------------------------------------------

Old:
----
  Minion-10.16.tar.gz

New:
----
  Minion-10.17.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Minion.spec ++++++
--- /var/tmp/diff_new_pack.5evMEJ/_old  2021-03-10 08:58:44.266980796 +0100
+++ /var/tmp/diff_new_pack.5evMEJ/_new  2021-03-10 08:58:44.270980800 +0100
@@ -18,7 +18,7 @@
 
 %define cpan_name Minion
 Name:           perl-Minion
-Version:        10.16
+Version:        10.17
 Release:        0
 Summary:        Job queue
 License:        Artistic-2.0
@@ -34,10 +34,10 @@
 
 %description
 Minion is a high performance job queue for the Perl programming language,
-with support for multiple named queues, priorities, delayed jobs, job
-dependencies, job progress, job results, retries with backoff, rate
-limiting, unique jobs, expiring jobs, statistics, distributed workers,
-parallel processing, autoscaling, remote control, at
+with support for multiple named queues, priorities, high priority fast
+lane, delayed jobs, job dependencies, job progress, job results, retries
+with backoff, rate limiting, unique jobs, expiring jobs, statistics,
+distributed workers, parallel processing, autoscaling, remote control, at
 https://mojolicious.org admin ui, resource leak protection and multiple
 backends (such as at https://www.postgresql.org).
 

++++++ Minion-10.16.tar.gz -> Minion-10.17.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/Changes new/Minion-10.17/Changes
--- old/Minion-10.16/Changes    2021-02-16 10:59:43.000000000 +0100
+++ new/Minion-10.17/Changes    2021-03-06 03:08:22.000000000 +0100
@@ -1,4 +1,12 @@
 
+10.17  2021-03-05
+  - Added support for high priority fast lane.
+  - Added each method to Minion::Iterator.
+  - Added min_priority option to dequeue methods in Minion::Worker and 
Minion::Backend::Pg.
+  - Added spare and spare_min_priority options to run method in Minion::Worker.
+  - Added -s and -S options to worker command.
+  - Added --retry-failed and --remove-failed options to job command.
+
 10.16  2021-02-16
   - Fixed Mojolicious 9.0 compatibility.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/META.json new/Minion-10.17/META.json
--- old/Minion-10.16/META.json  2021-02-16 11:00:31.000000000 +0100
+++ new/Minion-10.17/META.json  2021-03-06 16:04:33.000000000 +0100
@@ -4,7 +4,7 @@
       "Sebastian Riedel <s...@cpan.org>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "ExtUtils::MakeMaker version 7.58, CPAN::Meta::Converter 
version 2.150010",
+   "generated_by" : "ExtUtils::MakeMaker version 7.60, CPAN::Meta::Converter 
version 2.150010",
    "license" : [
       "artistic_2"
    ],
@@ -57,6 +57,6 @@
          "web" : "https://webchat.freenode.net/#mojo";
       }
    },
-   "version" : "10.16",
+   "version" : "10.17",
    "x_serialization_backend" : "JSON::PP version 4.06"
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/META.yml new/Minion-10.17/META.yml
--- old/Minion-10.16/META.yml   2021-02-16 11:00:31.000000000 +0100
+++ new/Minion-10.17/META.yml   2021-03-06 16:04:33.000000000 +0100
@@ -7,7 +7,7 @@
 configure_requires:
   ExtUtils::MakeMaker: '0'
 dynamic_config: 0
-generated_by: 'ExtUtils::MakeMaker version 7.58, CPAN::Meta::Converter version 
2.150010'
+generated_by: 'ExtUtils::MakeMaker version 7.60, CPAN::Meta::Converter version 
2.150010'
 license: artistic_2
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -29,5 +29,5 @@
   homepage: https://mojolicious.org
   license: http://www.opensource.org/licenses/artistic-license-2.0
   repository: https://github.com/mojolicious/minion.git
-version: '10.16'
+version: '10.17'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.018'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/README.md new/Minion-10.17/README.md
--- old/Minion-10.16/README.md  2020-08-01 00:57:23.000000000 +0200
+++ new/Minion-10.17/README.md  2021-03-05 17:35:43.000000000 +0100
@@ -4,9 +4,9 @@
 
![Screenshot](https://raw.github.com/mojolicious/minion/master/examples/admin.png?raw=true)
 
   A high performance job queue for the Perl programming language, with support 
for multiple named queues, priorities,
-  delayed jobs, job dependencies, job progress, job results, retries with 
backoff, rate limiting, unique jobs, expiring
-  jobs, statistics, distributed workers, parallel processing, autoscaling, 
remote control,
-  [Mojolicious](https://mojolicious.org) admin ui, resource leak protection 
and multiple backends (such as
+  high priority fast lane, delayed jobs, job dependencies, job progress, job 
results, retries with backoff, rate
+  limiting, unique jobs, expiring jobs, statistics, distributed workers, 
parallel processing, autoscaling, remote
+  control, [Mojolicious](https://mojolicious.org) admin ui, resource leak 
protection and multiple backends (such as
   [PostgreSQL](https://www.postgresql.org)).
 
   Job queues allow you to process time and/or computationally intensive tasks 
in background processes, outside of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion/Backend/Pg.pm 
new/Minion-10.17/lib/Minion/Backend/Pg.pm
--- old/Minion-10.16/lib/Minion/Backend/Pg.pm   2021-01-17 15:58:56.000000000 
+0100
+++ new/Minion-10.17/lib/Minion/Backend/Pg.pm   2021-03-06 02:06:07.000000000 
+0100
@@ -269,13 +269,14 @@
           SELECT 1 FROM minion_jobs WHERE id = ANY (j.parents) AND (
             state = 'active' OR (state = 'failed' AND NOT j.lax)
             OR (state = 'inactive' AND (expires IS NULL OR expires > NOW())))
-        )) AND queue = ANY (?) AND state = 'inactive' AND task = ANY (?) AND 
(EXPIRES IS NULL OR expires > NOW())
+        )) AND priority >= COALESCE(?, priority) AND queue = ANY (?) AND state 
= 'inactive' AND task = ANY (?)
+          AND (EXPIRES IS NULL OR expires > NOW())
         ORDER BY priority DESC, id
         LIMIT 1
         FOR UPDATE SKIP LOCKED
       )
-      RETURNING id, args, retries, task}, $id, $options->{id}, 
$options->{queues} || ['default'],
-    [keys %{$self->minion->tasks}]
+      RETURNING id, args, retries, task}, $id, $options->{id}, 
$options->{min_priority},
+    $options->{queues} || ['default'], [keys %{$self->minion->tasks}]
   )->expand->hash;
 }
 
@@ -352,6 +353,12 @@
 
 Dequeue a specific job.
 
+=item min_priority
+
+  min_priority => 3
+
+Do not dequeue jobs with a lower priority.
+
 =item queues
 
   queues => ['important']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion/Backend.pm 
new/Minion-10.17/lib/Minion/Backend.pm
--- old/Minion-10.16/lib/Minion/Backend.pm      2021-01-17 15:58:55.000000000 
+0100
+++ new/Minion-10.17/lib/Minion/Backend.pm      2021-03-04 18:45:08.000000000 
+0100
@@ -119,6 +119,12 @@
 
 Dequeue a specific job.
 
+=item min_priority
+
+  min_priority => 3
+
+Do not dequeue jobs with a lower priority.
+
 =item queues
 
   queues => ['important']
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion/Command/minion/job.pm 
new/Minion-10.17/lib/Minion/Command/minion/job.pm
--- old/Minion-10.16/lib/Minion/Command/minion/job.pm   2021-01-17 
15:58:56.000000000 +0100
+++ new/Minion-10.17/lib/Minion/Command/minion/job.pm   2021-03-06 
03:20:26.000000000 +0100
@@ -28,7 +28,9 @@
     'p|priority=i'  => \$options->{priority},
     'q|queue=s'     => sub { push @{$options->{queues}}, $options->{queue} = 
$_[1] },
     'R|retry'       => \my $retry,
+    'retry-failed'  => \my $retry_failed,
     'remove'        => \my $remove,
+    'remove-failed' => \my $remove_failed,
     'S|state=s'     => sub { push @{$options->{states}}, $_[1] },
     's|stats'       => \my $stats,
     'T|tasks'       => \my $tasks,
@@ -53,6 +55,10 @@
   # List tasks
   return print tablify [map { [$_, $minion->class_for_task($_)] } keys 
%{$minion->tasks}] if $tasks;
 
+  # Iterate through failed jobs
+  return $minion->jobs({states => ['failed']})->each(sub { 
$minion->job($_->{id})->remove }) if $remove_failed;
+  return $minion->jobs({states => ['failed']})->each(sub { 
$minion->job($_->{id})->retry })  if $retry_failed;
+
   # Locks
   return $minion->unlock($unlock)                                            
if $unlock;
   return $self->_list_locks($offset, $limit, @args ? {names => \@args} : ()) 
if $locks;
@@ -128,6 +134,7 @@
     ./myapp.pl minion job -e 'foo' -n '{"test":123}'
     ./myapp.pl minion job -R -d 10 -E 300 10023
     ./myapp.pl minion job --remove 10023
+    ./myapp.pl minion job --retry-failed
     ./myapp.pl minion job -n '["test"]'
     ./myapp.pl minion job -L
     ./myapp.pl minion job -L some_lock some_other_lock
@@ -168,7 +175,9 @@
     -q, --queue <name>          Queue to put new job in, defaults to "default",
                                 or list only jobs in these queues
     -R, --retry                 Retry job
+        --retry-failed          Retry all failed jobs at once
         --remove                Remove job
+        --remove-failed         Remove all failed jobs at once
     -S, --state <name>          List only jobs in these states
     -s, --stats                 Show queue statistics
     -T, --tasks                 List available tasks
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion/Command/minion/worker.pm 
new/Minion-10.17/lib/Minion/Command/minion/worker.pm
--- old/Minion-10.16/lib/Minion/Command/minion/worker.pm        2021-01-17 
15:58:56.000000000 +0100
+++ new/Minion-10.17/lib/Minion/Command/minion/worker.pm        2021-03-05 
18:00:20.000000000 +0100
@@ -17,7 +17,9 @@
     'I|heartbeat-interval=i' => \$status->{heartbeat_interval},
     'j|jobs=i'               => \$status->{jobs},
     'q|queue=s'              => \my @queues,
-    'R|repair-interval=i'    => \$status->{repair_interval};
+    'R|repair-interval=i'    => \$status->{repair_interval},
+    's|spare=i'              => \$status->{spare},
+    'S|spare-min-priority=i' => \$status->{spare_min_priority};
   $status->{queues} = \@queues if @queues;
 
   my $log = $self->app->log;
@@ -60,7 +62,8 @@
                                          MOJO_HOME or auto-detection
     -I, --heartbeat-interval <seconds>   Heartbeat interval, defaults to 300
     -j, --jobs <number>                  Maximum number of jobs to perform
-                                         parallel in forked worker processes,
+                                         parallel in forked worker processes
+                                         (not including spare processes),
                                          defaults to 4
     -m, --mode <name>                    Operating mode for your application,
                                          defaults to the value of
@@ -71,6 +74,11 @@
                                          value can be subtracted randomly to
                                          make sure not all workers repair at 
the
                                          same time, defaults to 21600 (6 hours)
+    -s, --spare <number>                 Number of spare worker processes to
+                                         reserve for high priority jobs,
+                                         defaults to 1
+    -S, --spare-min-priority <number>    Minimum priority of jobs to use spare
+                                         worker processes for, defaults to 1
 
 =head1 DESCRIPTION
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion/Iterator.pm 
new/Minion-10.17/lib/Minion/Iterator.pm
--- old/Minion-10.16/lib/Minion/Iterator.pm     2021-01-17 15:58:56.000000000 
+0100
+++ new/Minion-10.17/lib/Minion/Iterator.pm     2021-03-06 03:00:38.000000000 
+0100
@@ -4,6 +4,11 @@
 has fetch => 10;
 has [qw(minion options)];
 
+sub each {
+  my ($self, $cb) = @_;
+  while ($_ = $self->next) { $cb->($_) }
+}
+
 sub next { shift @{shift->_fetch(0)->{results}} }
 
 sub total { shift->_fetch(1)->{total} }
@@ -73,6 +78,13 @@
 
 L<Minion::Iterator> inherits all methods from L<Mojo::Base> and implements the 
following new ones.
 
+=head2 each
+
+  $iter->each(sub {...});
+
+Evaluate callback for each element in collection. The element will be the 
first argument passed to the callback, and is
+also available as C<$_>.
+
 =head2 next
 
   my $value = $iter->next;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion/Worker.pm 
new/Minion-10.17/lib/Minion/Worker.pm
--- old/Minion-10.16/lib/Minion/Worker.pm       2021-01-17 15:58:55.000000000 
+0100
+++ new/Minion-10.17/lib/Minion/Worker.pm       2021-03-05 18:00:07.000000000 
+0100
@@ -60,6 +60,8 @@
   $status->{performed}       //= 0;
   $status->{repair_interval} //= 21600;
   $status->{repair_interval} -= int rand $status->{repair_interval} / 2;
+  $status->{spare}              //= 1;
+  $status->{spare_min_priority} //= 1;
 
   # Reset event loop
   Mojo::IOLoop->reset;
@@ -119,11 +121,13 @@
   @$jobs = map { $_->is_finished && ++$status->{performed} ? () : $_ } @$jobs;
 
   # Job limit has been reached or worker is stopping
-  return $self->emit('busy') if $status->{jobs} <= @$jobs || $self->{finished};
+  my @extra;
+  if    ($self->{finished} || ($status->{jobs} + $status->{spare}) <= @$jobs) 
{ return $self->emit('busy') }
+  elsif ($status->{jobs} <= @$jobs) { @extra = (min_priority => 
$status->{spare_min_priority}) }
 
   # Try to get more jobs
   my ($max, $queues) = @{$status}{qw(dequeue_timeout queues)};
-  my $job = $self->emit('wait')->dequeue($max => {queues => $queues});
+  my $job = $self->emit('wait')->dequeue($max => {queues => $queues, @extra});
   push @$jobs, $job->start if $job;
 }
 
@@ -277,6 +281,12 @@
 
 Dequeue a specific job.
 
+=item min_priority
+
+  min_priority => 3
+
+Do not dequeue jobs with a lower priority.
+
 =item queues
 
   queues => ['important']
@@ -389,7 +399,7 @@
 
   jobs => 12
 
-Maximum number of jobs to perform parallel in forked worker processes, 
defaults to C<4>.
+Maximum number of jobs to perform parallel in forked worker processes (not 
including spare processes), defaults to C<4>.
 
 =item queues
 
@@ -404,6 +414,18 @@
 Repair interval, up to half of this value can be subtracted randomly to make 
sure not all workers repair at the same
 time, defaults to C<21600> (6 hours).
 
+=item spare
+
+  spare => 2
+
+Number of spare worker processes to reserve for high priority jobs, defaults 
to C<1>.
+
+=item spare_min_priority
+
+  spare_min_priority => 7
+
+Minimum priority of jobs to use spare worker processes for, defaults to C<1>.
+
 =back
 
 These remote control L</"commands"> are currently available:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/lib/Minion.pm 
new/Minion-10.17/lib/Minion.pm
--- old/Minion-10.16/lib/Minion.pm      2021-01-29 18:05:37.000000000 +0100
+++ new/Minion-10.17/lib/Minion.pm      2021-03-06 02:06:07.000000000 +0100
@@ -20,7 +20,7 @@
 has [qw(remove_after stuck_after)] => 172800;
 has tasks                          => sub { {} };
 
-our $VERSION = '10.16';
+our $VERSION = '10.17';
 
 sub add_task {
   my ($self, $name, $task) = @_;
@@ -217,9 +217,9 @@
 =end html
 
 L<Minion> is a high performance job queue for the Perl programming language, 
with support for multiple named queues,
-priorities, delayed jobs, job dependencies, job progress, job results, retries 
with backoff, rate limiting, unique
-jobs, expiring jobs, statistics, distributed workers, parallel processing, 
autoscaling, remote control,
-L<Mojolicious|https://mojolicious.org> admin ui, resource leak protection and 
multiple backends (such as
+priorities, high priority fast lane, delayed jobs, job dependencies, job 
progress, job results, retries with backoff,
+rate limiting, unique jobs, expiring jobs, statistics, distributed workers, 
parallel processing, autoscaling, remote
+control, L<Mojolicious|https://mojolicious.org> admin ui, resource leak 
protection and multiple backends (such as
 L<PostgreSQL|https://www.postgresql.org>).
 
 Job queues allow you to process time and/or computationally intensive tasks in 
background processes, outside of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/t/pg.t new/Minion-10.17/t/pg.t
--- old/Minion-10.16/t/pg.t     2021-01-29 18:05:38.000000000 +0100
+++ new/Minion-10.17/t/pg.t     2021-03-06 02:57:37.000000000 +0100
@@ -545,6 +545,10 @@
   is $jobs->next,  undef, 'no more results';
   is $jobs->total, 4,     'four jobs';
 
+  my @tasks;
+  $minion->jobs->each(sub { push @tasks, [shift->{task}, $_->{task}] });
+  is_deeply \@tasks, [['add', 'add'], ['fail', 'fail'], ['fail', 'fail'], 
['fail', 'fail']], 'right structure';
+
   $jobs = $minion->jobs->fetch(2);
   is $jobs->options->{before}, undef,  'no before';
   is $jobs->next->{task},      'add',  'right task';
@@ -688,6 +692,28 @@
   is $job->info->{retries},  2, 'job has been retried twice';
   is $job->info->{priority}, 0, 'low priority';
   ok $job->finish, 'job finished';
+
+  $id = $minion->enqueue(add => [2, 6], {priority => 2});
+  ok !$worker->dequeue(0, {min_priority => 5});
+  ok !$worker->dequeue(0, {min_priority => 3});
+  ok $job = $worker->dequeue(0, {min_priority => 2});
+  is $job->id, $id, 'right id';
+  is $job->info->{priority}, 2, 'expected priority';
+  ok $job->finish, 'job finished';
+  $minion->enqueue(add => [2, 8], {priority => 0});
+  $minion->enqueue(add => [2, 7], {priority => 5});
+  $minion->enqueue(add => [2, 8], {priority => -2});
+  ok !$worker->dequeue(0, {min_priority => 6});
+  ok $job = $worker->dequeue(0, {min_priority => 0});
+  is $job->info->{priority}, 5, 'expected priority';
+  ok $job->finish, 'job finished';
+  ok $job = $worker->dequeue(0, {min_priority => 0});
+  is $job->info->{priority}, 0, 'expected priority';
+  ok $job->finish, 'job finished';
+  ok !$worker->dequeue(0, {min_priority => 0});
+  ok $job = $worker->dequeue(0, {min_priority => -10});
+  is $job->info->{priority}, -2, 'expected priority';
+  ok $job->finish, 'job finished';
   $worker->unregister;
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Minion-10.16/t/pg_worker.t 
new/Minion-10.17/t/pg_worker.t
--- old/Minion-10.16/t/pg_worker.t      2021-01-29 18:05:39.000000000 +0100
+++ new/Minion-10.17/t/pg_worker.t      2021-03-05 17:27:53.000000000 +0100
@@ -91,6 +91,8 @@
   is_deeply $status->{queues},      ['default'], 'right structure';
   is $status->{performed},          1, 'right value';
   ok $status->{repair_interval},    'has a value';
+  is $status->{spare},              1, 'right value';
+  is $status->{spare_min_priority}, 1, 'right value';
 };
 
 # Clean up once we are done

Reply via email to