fix bug with internal actions overriding job actions
This commit is contained in:
@@ -36,23 +36,38 @@ sub load_workers {
|
||||
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
|
||||
my %workers = ( %{ vars->{'workers'}->{$action} || {} },
|
||||
%{ vars->{'workers'}->{'internal'} || {} } );
|
||||
my $driverless_main = 0;
|
||||
# use DDP; p vars{'workers'}; p %workers;
|
||||
|
||||
foreach my $phase (qw/check early main user store late/) {
|
||||
my $pname = "workers_${phase}";
|
||||
my @wset = ();
|
||||
|
||||
foreach my $namespace (sort keys %{ $workers{$phase} }) {
|
||||
foreach my $namespace (sort keys %{ $workers->{$phase} }) {
|
||||
foreach my $priority (sort {$b <=> $a}
|
||||
keys %{ $workers{$phase}->{$namespace} }) {
|
||||
keys %{ $workers->{$phase}->{$namespace} }) {
|
||||
|
||||
++$driverless_main if $phase eq 'main'
|
||||
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