From 445d26bb318e99e5d8746573cb40d2e7ca8e9607 Mon Sep 17 00:00:00 2001 From: Oliver Gorwits Date: Fri, 14 Nov 2014 21:44:48 +0000 Subject: [PATCH] fix worker restart to happen once per hour per day --- Netdisco/Changes | 2 +- Netdisco/lib/App/Netdisco/Daemon/Worker/Common.pm | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Netdisco/Changes b/Netdisco/Changes index e1e39f3a..a5c60637 100644 --- a/Netdisco/Changes +++ b/Netdisco/Changes @@ -1,4 +1,4 @@ -2.029013_001 - 2014-11-13 +2.029013_002 - 2014-11-14 [ENHANCEMENTS] diff --git a/Netdisco/lib/App/Netdisco/Daemon/Worker/Common.pm b/Netdisco/lib/App/Netdisco/Daemon/Worker/Common.pm index ff232cc7..4b217d2c 100644 --- a/Netdisco/lib/App/Netdisco/Daemon/Worker/Common.pm +++ b/Netdisco/lib/App/Netdisco/Daemon/Worker/Common.pm @@ -10,6 +10,8 @@ use namespace::clean; use App::Netdisco::JobQueue qw/jq_defer jq_complete/; +sub worker_begin { (shift)->{started} = time } + sub worker_body { my $self = shift; my $wid = $self->wid; @@ -42,7 +44,8 @@ sub worker_body { # restart worker once a day. # relies on the worker seeing a job at least every hour. 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"); } }