bug fixes

This commit is contained in:
Oliver Gorwits
2013-01-02 12:28:56 +00:00
parent 61a3542834
commit 9e1bc7d6d7
2 changed files with 4 additions and 27 deletions

View File

@@ -28,7 +28,7 @@ my $mce = MCE->new(
sub call_worker_body {
my ($self) = @_;
$self->worker_body if $self->can('worker_body');
$self->worker_body;
}
sub restart_worker {
@@ -67,30 +67,7 @@ sub worker_factory {
my $role = shift;
return sub {
my $self = shift;
with "App::Netdisco::Daemon::Worker::$role";
Role::Tiny->apply_roles_to_object($self, "App::Netdisco::Daemon::Worker::$role");
$self->worker_begin if $self->can('worker_begin');
};
}
sub interruptible_sleep {
my ($period) = @_;
my $hires = 0;
if ($period * 1000 != int($period * 1000)) {
$hires = 1;
require Time::HiRes;
import Time::HiRes qw(time sleep);
}
my $t = time;
while (time - $t < $period) {
if ($hires) {
my $p = (time - $t < 1)
? time - $t
: 1;
sleep($p);
} else {
sleep(1);
}
}
}

View File

@@ -39,7 +39,7 @@ sub worker_body {
# get all pending jobs
my $rs = schema('netdisco')->resultset('Admin')
->search({wid => 0});
->search({status => 'queued'});
while (1) {
while (my $job = $rs->next) {
@@ -64,7 +64,7 @@ sub worker_body {
# TODO also check for stale jobs in Netdisco DB
interruptible_sleep( setting('daemon_sleep_time') || 5 );
sleep( setting('daemon_sleep_time') || 5 );
}
}