Hello community, here is the log from the commit of package perl-Minion for openSUSE:Factory checked in at 2019-12-24 14:30:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-Minion (Old) and /work/SRC/openSUSE:Factory/.perl-Minion.new.6675 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Minion" Tue Dec 24 14:30:15 2019 rev:53 rq:759026 version:10.02 Changes: -------- --- /work/SRC/openSUSE:Factory/perl-Minion/perl-Minion.changes 2019-12-17 16:54:42.497343159 +0100 +++ /work/SRC/openSUSE:Factory/.perl-Minion.new.6675/perl-Minion.changes 2019-12-24 14:30:22.606587757 +0100 @@ -1,0 +2,12 @@ +Sat Dec 21 03:09:18 UTC 2019 - <timueller+p...@suse.de> + +- updated to 10.02 + see /usr/share/doc/packages/perl-Minion/Changes + + 10.02 2019-12-20 + - Fixed QUIT signal in Minion::Worker. + - Fixed stop remote control command. + - Fixed a problem where Minion::Worker was unable to deal with immediately + restarted jobs. + +------------------------------------------------------------------- Old: ---- Minion-10.01.tar.gz New: ---- Minion-10.02.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-Minion.spec ++++++ --- /var/tmp/diff_new_pack.dvE70u/_old 2019-12-24 14:30:23.502588191 +0100 +++ /var/tmp/diff_new_pack.dvE70u/_new 2019-12-24 14:30:23.510588195 +0100 @@ -17,7 +17,7 @@ Name: perl-Minion -Version: 10.01 +Version: 10.02 Release: 0 %define cpan_name Minion Summary: Job queue ++++++ Minion-10.01.tar.gz -> Minion-10.02.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-10.01/Changes new/Minion-10.02/Changes --- old/Minion-10.01/Changes 2019-12-16 13:00:33.000000000 +0100 +++ new/Minion-10.02/Changes 2019-12-20 20:33:10.000000000 +0100 @@ -1,6 +1,12 @@ +10.02 2019-12-20 + - Fixed QUIT signal in Minion::Worker. + - Fixed stop remote control command. + - Fixed a problem where Minion::Worker was unable to deal with immediately + restarted jobs. + 10.01 2019-12-16 - - Fixed an unlock concurrency issue in Minion::Backend::Pg. + - Fixed an unlock concurrency issue in Minion::Backend::Pg. (andrii-suse) 10.0 2019-11-15 - Removed PostgreSQL migrations older than 2 years, that means you need to diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-10.01/META.json new/Minion-10.02/META.json --- old/Minion-10.01/META.json 2019-12-16 13:17:32.000000000 +0100 +++ new/Minion-10.02/META.json 2019-12-20 21:16:46.000000000 +0100 @@ -4,7 +4,7 @@ "Sebastian Riedel <s...@cpan.org>" ], "dynamic_config" : 0, - "generated_by" : "ExtUtils::MakeMaker version 7.38, CPAN::Meta::Converter version 2.150010", + "generated_by" : "ExtUtils::MakeMaker version 7.42, CPAN::Meta::Converter version 2.150010", "license" : [ "artistic_2" ], @@ -54,6 +54,6 @@ }, "x_IRC" : "irc://irc.freenode.net/#mojo" }, - "version" : "10.01", + "version" : "10.02", "x_serialization_backend" : "JSON::PP version 4.04" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-10.01/META.yml new/Minion-10.02/META.yml --- old/Minion-10.01/META.yml 2019-12-16 13:17:32.000000000 +0100 +++ new/Minion-10.02/META.yml 2019-12-20 21:16:46.000000000 +0100 @@ -7,7 +7,7 @@ configure_requires: ExtUtils::MakeMaker: '0' dynamic_config: 0 -generated_by: 'ExtUtils::MakeMaker version 7.38, CPAN::Meta::Converter version 2.150010' +generated_by: 'ExtUtils::MakeMaker version 7.42, CPAN::Meta::Converter version 2.150010' license: artistic_2 meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -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: '10.01' +version: '10.02' x_serialization_backend: 'CPAN::Meta::YAML version 0.018' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-10.01/lib/Minion/Worker.pm new/Minion-10.02/lib/Minion/Worker.pm --- old/Minion-10.01/lib/Minion/Worker.pm 2019-12-16 12:46:50.000000000 +0100 +++ new/Minion-10.02/lib/Minion/Worker.pm 2019-12-20 20:37:12.000000000 +0100 @@ -69,23 +69,20 @@ $status->{repair_interval} //= 21600; $status->{repair_interval} -= int rand $status->{repair_interval} / 2; - local $SIG{CHLD} = sub { }; - local $SIG{INT} = local $SIG{TERM} = sub { $self->{finished}++ }; - local $SIG{QUIT} - = sub { ++$self->{finished} and kill 'KILL', keys %{$self->{jobs}} }; + local $SIG{CHLD} = sub { }; + local $SIG{INT} = local $SIG{TERM} = sub { $self->{finished}++ }; + local $SIG{QUIT} = sub { + ++$self->{finished} and kill 'KILL', map { $_->pid } @{$self->{jobs}}; + }; # Remote control commands need to validate arguments carefully my $commands = $self->commands; - my $kill = sub { - return unless grep { ($_[1] // '') eq $_ } qw(INT KILL USR1 USR2); - $self->{jobs}{$_[2]}->kill($_[1]) if $self->{jobs}{$_[2] // ''}; - }; local $commands->{jobs} = sub { $status->{jobs} = $_[1] if ($_[1] // '') =~ /^\d+$/ }; - local $commands->{kill} = $kill; - local $commands->{stop} = sub { $kill->('KILL', $_[1]) }; + local $commands->{kill} = \&_kill; + local $commands->{stop} = sub { $self->_kill('KILL', $_[1]) }; - eval { $self->_work until $self->{finished} && !keys %{$self->{jobs}} }; + eval { $self->_work until $self->{finished} && !@{$self->{jobs}} }; my $err = $@; $self->unregister; croak $err if $err; @@ -97,6 +94,12 @@ return $self; } +sub _kill { + my ($self, $signal, $id) = (shift, shift // '', shift // ''); + return unless grep { $signal eq $_ } qw(INT KILL USR1 USR2); + $_->kill($signal) for grep { $_->id eq $id } @{$self->{jobs}}; +} + sub _work { my $self = shift; @@ -119,18 +122,16 @@ } # Check if jobs are finished - my $jobs = $self->{jobs} ||= {}; - $jobs->{$_}->is_finished and ++$status->{performed} and delete $jobs->{$_} - for keys %$jobs; + my $jobs = $self->{jobs} ||= []; + @$jobs = map { $_->is_finished && ++$status->{performed} ? () : $_ } @$jobs; # Job limit has been reached or worker is stopping - return $self->emit('busy') - if ($status->{jobs} <= keys %$jobs) || $self->{finished}; + return $self->emit('busy') if $status->{jobs} <= @$jobs || $self->{finished}; # Try to get more jobs my ($max, $queues) = @{$status}{qw(dequeue_timeout queues)}; my $job = $self->emit('wait')->dequeue($max => {queues => $queues}); - $jobs->{$job->id} = $job->start if $job; + push @$jobs, $job->start if $job; } 1; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/Minion-10.01/lib/Minion.pm new/Minion-10.02/lib/Minion.pm --- old/Minion-10.01/lib/Minion.pm 2019-12-16 12:46:50.000000000 +0100 +++ new/Minion-10.02/lib/Minion.pm 2019-12-20 01:56:53.000000000 +0100 @@ -22,7 +22,7 @@ has remove_after => 172800; has tasks => sub { {} }; -our $VERSION = '10.01'; +our $VERSION = '10.02'; sub add_task { ($_[0]->tasks->{$_[1]} = $_[2]) and return $_[0] } @@ -954,6 +954,8 @@ Andrey Khozov +Andrii Nikitin + Brian Medley Franz Skale