fix bug with internal actions overriding job actions
This commit is contained in:
@@ -36,23 +36,38 @@ sub load_workers {
|
|||||||
Module::Load::load $plugin;
|
Module::Load::load $plugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $workers = vars->{'workers'}->{$action} || {};
|
||||||
|
|
||||||
|
# need to merge in internal workers without overriding action workers
|
||||||
|
foreach my $phase (qw/check early main user store late/) {
|
||||||
|
next unless exists vars->{'workers'}->{'internal'}
|
||||||
|
and exists vars->{'workers'}->{'internal'}->{$phase};
|
||||||
|
my $internal = vars->{'workers'}->{'internal'};
|
||||||
|
|
||||||
|
foreach my $namespace (keys %{ $internal->{$phase} }) {
|
||||||
|
foreach my $priority (keys %{ $internal->{$phase}->{$namespace} }) {
|
||||||
|
push @{ $workers->{$phase}->{$namespace}->{$priority} },
|
||||||
|
@{ $internal->{$phase}->{$namespace}->{$priority} };
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# use DDP; my $x = vars{'workers'}; p $x; p $workers;
|
||||||
|
|
||||||
# now vars->{workers} is populated, we set the dispatch order
|
# now vars->{workers} is populated, we set the dispatch order
|
||||||
my %workers = ( %{ vars->{'workers'}->{$action} || {} },
|
|
||||||
%{ vars->{'workers'}->{'internal'} || {} } );
|
|
||||||
my $driverless_main = 0;
|
my $driverless_main = 0;
|
||||||
# use DDP; p vars{'workers'}; p %workers;
|
|
||||||
|
|
||||||
foreach my $phase (qw/check early main user store late/) {
|
foreach my $phase (qw/check early main user store late/) {
|
||||||
my $pname = "workers_${phase}";
|
my $pname = "workers_${phase}";
|
||||||
my @wset = ();
|
my @wset = ();
|
||||||
|
|
||||||
foreach my $namespace (sort keys %{ $workers{$phase} }) {
|
foreach my $namespace (sort keys %{ $workers->{$phase} }) {
|
||||||
foreach my $priority (sort {$b <=> $a}
|
foreach my $priority (sort {$b <=> $a}
|
||||||
keys %{ $workers{$phase}->{$namespace} }) {
|
keys %{ $workers->{$phase}->{$namespace} }) {
|
||||||
|
|
||||||
++$driverless_main if $phase eq 'main'
|
++$driverless_main if $phase eq 'main'
|
||||||
and ($priority == 0 or $priority == setting('driver_priority')->{'direct'});
|
and ($priority == 0 or $priority == setting('driver_priority')->{'direct'});
|
||||||
push @wset, @{ $workers{$phase}->{$namespace}->{$priority} };
|
push @wset, @{ $workers->{$phase}->{$namespace}->{$priority} };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user