From 0ab791581014cde0b1c887a663de82f8f7c3410a Mon Sep 17 00:00:00 2001 From: Michael Date: Tue, 4 Jul 2017 05:01:06 +0000 Subject: [PATCH] Only kill the first stale process --- include/poller.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/poller.php b/include/poller.php index 50d883644d..4c0f665963 100644 --- a/include/poller.php +++ b/include/poller.php @@ -470,12 +470,12 @@ function poller_max_connections_reached() { * */ function poller_kill_stale_workers() { - $entries = dba::p("SELECT `pid`, `executed`, `priority`, `parameter` FROM `workerqueue` WHERE `executed` > ? AND NOT `done` AND `pid` != 0 ORDER BY `priority`, `created`", NULL_DATE); + $entries = dba::p("SELECT `id`, `pid`, `executed`, `priority`, `parameter` FROM `workerqueue` WHERE `executed` > ? AND NOT `done` AND `pid` != 0 ORDER BY `priority`, `created`", NULL_DATE); while ($entry = dba::fetch($entries)) { if (!posix_kill($entry["pid"], 0)) { dba::update('workerqueue', array('executed' => NULL_DATE, 'pid' => 0), - array('pid' => $entry["pid"], 'done' => false)); + array('id' => $entry["id"])); } else { // Kill long running processes // Check if the priority is in a valid range @@ -508,7 +508,7 @@ function poller_kill_stale_workers() { } dba::update('workerqueue', array('executed' => NULL_DATE, 'created' => datetime_convert(), 'priority' => $new_priority, 'pid' => 0), - array('pid' => $entry["pid"], 'done' => false)); + array('id' => $entry["id"])); } else { logger("Worker process ".$entry["pid"]." (".implode(" ", $argv).") now runs for ".round($duration)." of ".$max_duration." allowed minutes. That's okay.", LOGGER_DEBUG); }