Event-ExecFlow
view release on metacpan or search on metacpan
lib/Event/ExecFlow/Job/Group.pm view on Meta::CPAN
die "Job '$job_name' not member of group '".$self->get_name."'";
}
sub execute {
my $self = shift;
my %par = @_;
my ($skip) = $par{'skip'};
$skip = "" if ! defined $skip;
my $blocked_job;
while ( 1 ) {
if ( $self->get_cancelled
|| $self->all_jobs_finished
|| ( $self->get_error_message &&
$self->get_stop_on_failure ) ) {
$self->execution_finished;
if ( $self->get_scheduler &&
$self->get_scheduler->is_exclusive ) {
$self->get_scheduler->run;
}
return;
}
return if $self->get_scheduler &&
$self->get_scheduler->is_exclusive;
my $job = $self->get_next_job(blocked=>$blocked_job);
next if defined $job && "$job" eq "$skip";
if ( !$job ) {
$self->try_reschedule_jobs(skip => $skip);
last;
}
if ( $self->get_scheduler ) {
my $state = $self->get_scheduler->schedule_job($job);
return if $state eq 'sched-blocked';
if ( $state eq 'job-blocked' ) {
$blocked_job = $job;
next;
}
die "Illegal scheduler state '$state'"
unless $state eq 'ok';
}
$self->start_child_job($job);
last if !$self->get_parallel;
}
lib/Event/ExecFlow/Job/Group.pm view on Meta::CPAN
}
sub get_first_job {
my $self = shift;
return $self->get_jobs->[0];
}
sub get_next_job {
my $self = shift;
my %par = @_;
my ($blocked) = $par{'blocked'};
$blocked = "" if ! defined $blocked;
my $next_job;
foreach my $job ( @{$self->get_jobs} ) {
next if defined $job && "$job" eq "$blocked";
$Event::ExecFlow::DEBUG && print "Group(".$self->get_info.")->get_next_job: check ".$job->get_info."=>".$job->get_state."\n";
if ( $job->get_state eq 'waiting' &&
$self->dependencies_ok($job) ) {
$next_job = $job;
last;
}
}
$Event::ExecFlow::DEBUG && print "Group(".$self->get_info.")->get_next_job=".
($next_job ? $next_job->get_info : "NOJOB")."\n";
lib/Event/ExecFlow/Scheduler/SimpleMax.pm view on Meta::CPAN
cnt => 0,
}, $class;
}
sub schedule_job {
my $self = shift;
my ($job) = @_;
my $state;
if ( $self->get_cnt >= $self->get_max ) {
$state = 'sched-blocked';
}
elsif ( $job->get_type ne 'group' ) {
++$self->{cnt};
$state = 'ok';
}
else {
$state = 'ok';
}
return $state;
( run in 0.420 second using v1.01-cache-2.11-cpan-49f99fa48dc )