only take one job at a time per worker
This commit is contained in:
@@ -20,31 +20,30 @@ sub worker_body {
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
prctl sprintf 'netdisco-daemon: worker #%s %s: idle', $wid, lc($type);
|
prctl sprintf 'netdisco-daemon: worker #%s %s: idle', $wid, lc($type);
|
||||||
my $jobs = [ $self->{queue}->dequeue(1) ]; # FIXME multiple take, take type, thaw
|
|
||||||
|
|
||||||
foreach my $job (@$jobs) {
|
my $job = $self->{queue}->dequeue(1);
|
||||||
next unless defined $job;
|
next unless defined $job;
|
||||||
$job = schema('daemon')->dclone( $job );
|
|
||||||
my $target = $self->munge_action($job->action);
|
|
||||||
|
|
||||||
try {
|
$job = schema('daemon')->dclone( $job ); # TODO stop using DBIC
|
||||||
$job->started(scalar localtime);
|
my $target = $self->munge_action($job->action);
|
||||||
prctl sprintf 'netdisco-daemon: worker #%s %s: working on #%s: %s',
|
|
||||||
$wid, lc($type), $job->id, $job->summary;
|
|
||||||
info sprintf "$tag (%s): starting %s job(%s) at %s",
|
|
||||||
$wid, $target, $job->id, $job->started;
|
|
||||||
my ($status, $log) = $self->$target($job);
|
|
||||||
$job->status($status);
|
|
||||||
$job->log($log);
|
|
||||||
}
|
|
||||||
catch {
|
|
||||||
$job->status('error');
|
|
||||||
$job->log("error running job: $_");
|
|
||||||
$self->sendto('stderr', $job->log ."\n");
|
|
||||||
};
|
|
||||||
|
|
||||||
$self->close_job($job);
|
try {
|
||||||
|
$job->started(scalar localtime);
|
||||||
|
prctl sprintf 'netdisco-daemon: worker #%s %s: working on #%s: %s',
|
||||||
|
$wid, lc($type), $job->id, $job->summary;
|
||||||
|
info sprintf "$tag (%s): starting %s job(%s) at %s",
|
||||||
|
$wid, $target, $job->id, $job->started;
|
||||||
|
my ($status, $log) = $self->$target($job);
|
||||||
|
$job->status($status);
|
||||||
|
$job->log($log);
|
||||||
}
|
}
|
||||||
|
catch {
|
||||||
|
$job->status('error');
|
||||||
|
$job->log("error running job: $_");
|
||||||
|
$self->sendto('stderr', $job->log ."\n");
|
||||||
|
};
|
||||||
|
|
||||||
|
$self->close_job($job);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -101,10 +101,6 @@ jobs from the queue.
|
|||||||
|
|
||||||
=head2 id (auto)
|
=head2 id (auto)
|
||||||
|
|
||||||
=head2 type (required)
|
|
||||||
|
|
||||||
=head2 wid (required, default 0)
|
|
||||||
|
|
||||||
=head2 entered
|
=head2 entered
|
||||||
|
|
||||||
=head2 started
|
=head2 started
|
||||||
|
|||||||
Reference in New Issue
Block a user