only take one job at a time per worker
This commit is contained in:
@@ -20,31 +20,30 @@ sub worker_body {
|
||||
|
||||
while (1) {
|
||||
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) {
|
||||
next unless defined $job;
|
||||
$job = schema('daemon')->dclone( $job );
|
||||
my $target = $self->munge_action($job->action);
|
||||
my $job = $self->{queue}->dequeue(1);
|
||||
next unless defined $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");
|
||||
};
|
||||
$job = schema('daemon')->dclone( $job ); # TODO stop using DBIC
|
||||
my $target = $self->munge_action($job->action);
|
||||
|
||||
$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 type (required)
|
||||
|
||||
=head2 wid (required, default 0)
|
||||
|
||||
=head2 entered
|
||||
|
||||
=head2 started
|
||||
|
||||
Reference in New Issue
Block a user