code tidy and create tmpdir if not exists

This commit is contained in:
Oliver Gorwits
2013-01-02 16:28:24 +00:00
parent d7f4d2db5d
commit 244033449d
3 changed files with 14 additions and 18 deletions

View File

@@ -17,27 +17,18 @@ use MCE;
use Role::Tiny; use Role::Tiny;
use Path::Class 'dir'; use Path::Class 'dir';
my $tmp = dir($ENV{HOME}, 'tmp');
mkdir $tmp if ! -d $tmp;
my $mce = MCE->new( my $mce = MCE->new(
tmp_dir => dir($ENV{HOME}, 'tmp'), tmp_dir => $tmp,
spawn_delay => 0.15, spawn_delay => 0.15,
job_delay => 0.15, job_delay => 0.15,
user_func => \&call_worker_body, user_func => sub { $_[0]->worker_body },
on_post_exit => \&restart_worker, on_post_exit => \&restart_worker,
user_tasks => build_tasks_list(), user_tasks => build_tasks_list(),
)->run(); )->run();
sub call_worker_body {
my ($self) = @_;
$self->worker_body;
}
sub restart_worker {
my ($self, $e) = @_;
reset_jobs($e->{wid});
$self->restart_worker($e->{wid});
}
sub build_tasks_list { sub build_tasks_list {
my $tasks = [{ my $tasks = [{
max_workers => 1, max_workers => 1,
@@ -73,3 +64,9 @@ sub worker_factory {
$self->worker_begin if $self->can('worker_begin'); $self->worker_begin if $self->can('worker_begin');
}; };
} }
sub restart_worker {
my ($self, $e) = @_;
reset_jobs($e->{wid});
$self->restart_worker($e->{wid});
}

View File

@@ -2,7 +2,6 @@ package App::Netdisco::Daemon::Queue;
use Dancer qw/:moose :syntax :script/; use Dancer qw/:moose :syntax :script/;
use Dancer::Plugin::DBIC 'schema'; use Dancer::Plugin::DBIC 'schema';
use Try::Tiny;
use base 'Exporter'; use base 'Exporter';
our @EXPORT = (); our @EXPORT = ();

View File

@@ -53,7 +53,7 @@ sub worker_body {
next unless $self->lock_job($job); next unless $self->lock_job($job);
my $local_job = $job->get_columns; my $local_job = $job->get_columns;
$local_job->{role} = $role_map->{$local_job->{action}}; $local_job->{role} = $role_map->{$job->action};
# copy job to local queue # copy job to local queue
$self->do('add_jobs', [$local_job]); $self->do('add_jobs', [$local_job]);
@@ -79,8 +79,8 @@ sub capacity_for {
my $role = $role_map->{$job->action}; my $role = $role_map->{$job->action};
my $setting = $setting_map->{$role}; my $setting = $setting_map->{$role};
my $current = schema('netdisco')->resultset('Admin') my $current = schema('daemon')->resultset('Admin')
->search({role => $role, status => "queued-$fqdn"})->count; ->search({role => $role})->count;
return ($current < setting($setting)); return ($current < setting($setting));
} }