From: Michael Date: Sun, 11 Jun 2017 07:49:34 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/develop' into 1706-worker-even-faster X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=06815f1a38409e45b0c5e5184c081f964ec89e47;p=friendica.git Merge remote-tracking branch 'upstream/develop' into 1706-worker-even-faster Conflicts: include/poller.php --- 06815f1a38409e45b0c5e5184c081f964ec89e47 diff --cc include/poller.php index a1266d62c9,cc8edce656..8784931d3c --- a/include/poller.php +++ b/include/poller.php @@@ -487,41 -442,40 +487,41 @@@ function poller_too_much_workers($entri $slope = $maxworkers / pow($maxsysload, $exponent); $queues = ceil($slope * pow(max(0, $maxsysload - $load), $exponent)); - // Create a list of queue entries grouped by their priority - $listitem = array(); + if (Config::get('system', 'worker_debug')) { + // Create a list of queue entries grouped by their priority + $listitem = array(); - // Adding all processes with no workerqueue entry - $processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` WHERE NOT EXISTS (SELECT id FROM `workerqueue` WHERE `workerqueue`.`pid` = `process`.`pid`)"); - if ($process = dba::fetch($processes)) { - $listitem[0] = "0:".$process["running"]; - } - dba::close($processes); - - // Now adding all processes with workerqueue entries - $entries = dba::p("SELECT COUNT(*) AS `entries`, `priority` FROM `workerqueue` GROUP BY `priority`"); - while ($entry = dba::fetch($entries)) { - $processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` INNER JOIN `workerqueue` ON `workerqueue`.`pid` = `process`.`pid` WHERE `priority` = ?", $entry["priority"]); + // Adding all processes with no workerqueue entry + $processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` WHERE NOT EXISTS (SELECT id FROM `workerqueue` WHERE `workerqueue`.`pid` = `process`.`pid`)"); if ($process = dba::fetch($processes)) { - $listitem[$entry["priority"]] = $entry["priority"].":".$process["running"]."/".$entry["entries"]; + $listitem[0] = "0:".$process["running"]; } dba::close($processes); - } - dba::close($entries); - $processlist = ' ('.implode(', ', $listitem).')'; - $s = q("SELECT COUNT(*) AS `total` FROM `workerqueue` WHERE `executed` <= '%s'", dbesc(NULL_DATE)); - $entries = $s[0]["total"]; + // Now adding all processes with workerqueue entries + $entries = dba::p("SELECT COUNT(*) AS `entries`, `priority` FROM `workerqueue` GROUP BY `priority`"); + while ($entry = dba::fetch($entries)) { + $processes = dba::p("SELECT COUNT(*) AS `running` FROM `process` INNER JOIN `workerqueue` ON `workerqueue`.`pid` = `process`.`pid` WHERE `priority` = ?", $entry["priority"]); + if ($process = dba::fetch($processes)) { + $listitem[$entry["priority"]] = $entry["priority"].":".$process["running"]."/".$entry["entries"]; + } + dba::close($processes); + } + dba::close($entries); + $processlist = ' ('.implode(', ', $listitem).')'; + } + if (is_null($entries)) { + $entries = poller_total_entries(); + } - if (Config::get("system", "worker_fastlane", false) AND ($queues > 0) AND ($entries > 0) AND ($active >= $queues)) { + if (Config::get("system", "worker_fastlane", false) && ($queues > 0) && ($entries > 0) && ($active >= $queues)) { - $s = q("SELECT `priority` FROM `workerqueue` WHERE `executed` <= '%s' ORDER BY `priority` LIMIT 1", dbesc(NULL_DATE)); - $top_priority = $s[0]["priority"]; - - $s = q("SELECT `id` FROM `workerqueue` WHERE `priority` <= %d AND `executed` > '%s' LIMIT 1", - intval($top_priority), dbesc(NULL_DATE)); - $high_running = dbm::is_result($s); - + if (is_null($top_priority)) { + $top_priority = poller_highest_priority(); + } + if (is_null($high_running)) { + $high_running = poller_process_with_priority_active($top_priority); + } - if (!$high_running AND ($top_priority > PRIORITY_UNDEFINED) AND ($top_priority < PRIORITY_NEGLIGIBLE)) { + if (!$high_running && ($top_priority > PRIORITY_UNDEFINED) && ($top_priority < PRIORITY_NEGLIGIBLE)) { logger("There are jobs with priority ".$top_priority." waiting but none is executed. Open a fastlane.", LOGGER_DEBUG); $queues = $active + 1; }