fix worker restart to happen once per hour per day
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
2.029013_001 - 2014-11-13
|
2.029013_002 - 2014-11-14
|
||||||
|
|
||||||
[ENHANCEMENTS]
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ use namespace::clean;
|
|||||||
|
|
||||||
use App::Netdisco::JobQueue qw/jq_defer jq_complete/;
|
use App::Netdisco::JobQueue qw/jq_defer jq_complete/;
|
||||||
|
|
||||||
|
sub worker_begin { (shift)->{started} = time }
|
||||||
|
|
||||||
sub worker_body {
|
sub worker_body {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $wid = $self->wid;
|
my $wid = $self->wid;
|
||||||
@@ -42,7 +44,8 @@ sub worker_body {
|
|||||||
# restart worker once a day.
|
# restart worker once a day.
|
||||||
# relies on the worker seeing a job at least every hour.
|
# relies on the worker seeing a job at least every hour.
|
||||||
my $hour = [localtime()]->[2];
|
my $hour = [localtime()]->[2];
|
||||||
if ($wid and (($wid % 24) == $hour)) {
|
if ($wid and (time >= ($self->{started} + 86400))
|
||||||
|
and ($hour == ($wid % 24))) {
|
||||||
$self->exit(0, "recycling worker $wid");
|
$self->exit(0, "recycling worker $wid");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user