Don't create lock files if the process is called from the poller via the worker

This commit is contained in:
Michael Vogel 2016-03-08 00:20:06 +01:00
parent fa652ad1bc
commit ec9c9f0be7
8 changed files with 141 additions and 113 deletions

View File

@ -40,15 +40,33 @@ function cron_run(&$argv, &$argc){
load_config('config'); load_config('config');
load_config('system'); load_config('system');
$maxsysload = intval(get_config('system','maxloadavg')); // Don't check this stuff if the function is called by the poller
if($maxsysload < 1) if (App::callstack() != "poller_run") {
$maxsysload = 50; $maxsysload = intval(get_config('system','maxloadavg'));
if($maxsysload < 1)
$maxsysload = 50;
$load = current_load(); $load = current_load();
if($load) { if($load) {
if(intval($load) > $maxsysload) { if(intval($load) > $maxsysload) {
logger('system: load ' . $load . ' too high. cron deferred to next scheduled run.'); logger('system: load '.$load.' too high. cron deferred to next scheduled run.');
return; return;
}
}
$lockpath = get_lockpath();
if ($lockpath != '') {
$pidfile = new pidfile($lockpath, 'cron');
if($pidfile->is_already_running()) {
logger("cron: Already running");
if ($pidfile->running_time() > 9*60) {
$pidfile->kill();
logger("cron: killed stale process");
// Calling a new instance
proc_run('php','include/cron.php');
}
exit;
}
} }
} }
@ -66,23 +84,6 @@ function cron_run(&$argv, &$argc){
} }
} }
$lockpath = get_lockpath();
if ($lockpath != '') {
$pidfile = new pidfile($lockpath, 'cron');
if($pidfile->is_already_running()) {
logger("cron: Already running");
if ($pidfile->running_time() > 9*60) {
$pidfile->kill();
logger("cron: killed stale process");
// Calling a new instance
proc_run('php','include/cron.php');
}
exit;
}
}
$a->set_baseurl(get_config('system','url')); $a->set_baseurl(get_config('system','url'));
load_hooks(); load_hooks();

View File

@ -24,15 +24,33 @@ function cronhooks_run(&$argv, &$argc){
load_config('config'); load_config('config');
load_config('system'); load_config('system');
$maxsysload = intval(get_config('system','maxloadavg')); // Don't check this stuff if the function is called by the poller
if($maxsysload < 1) if (App::callstack() != "poller_run") {
$maxsysload = 50; $maxsysload = intval(get_config('system','maxloadavg'));
if($maxsysload < 1)
$maxsysload = 50;
$load = current_load(); $load = current_load();
if($load) { if($load) {
if(intval($load) > $maxsysload) { if(intval($load) > $maxsysload) {
logger('system: load ' . $load . ' too high. Cronhooks deferred to next scheduled run.'); logger('system: load ' . $load . ' too high. Cronhooks deferred to next scheduled run.');
return; return;
}
}
$lockpath = get_lockpath();
if ($lockpath != '') {
$pidfile = new pidfile($lockpath, 'cronhooks');
if($pidfile->is_already_running()) {
logger("cronhooks: Already running");
if ($pidfile->running_time() > 19*60) {
$pidfile->kill();
logger("cronhooks: killed stale process");
// Calling a new instance
proc_run('php','include/cronhooks.php');
}
exit;
}
} }
} }
@ -50,21 +68,6 @@ function cronhooks_run(&$argv, &$argc){
} }
} }
$lockpath = get_lockpath();
if ($lockpath != '') {
$pidfile = new pidfile($lockpath, 'cronhooks');
if($pidfile->is_already_running()) {
logger("cronhooks: Already running");
if ($pidfile->running_time() > 19*60) {
$pidfile->kill();
logger("cronhooks: killed stale process");
// Calling a new instance
proc_run('php','include/cronhooks.php');
}
exit;
}
}
$a->set_baseurl(get_config('system','url')); $a->set_baseurl(get_config('system','url'));
load_hooks(); load_hooks();

View File

@ -25,15 +25,18 @@ function discover_poco_run(&$argv, &$argc){
load_config('config'); load_config('config');
load_config('system'); load_config('system');
$maxsysload = intval(get_config('system','maxloadavg')); // Don't check this stuff if the function is called by the poller
if($maxsysload < 1) if (App::callstack() != "poller_run") {
$maxsysload = 50; $maxsysload = intval(get_config('system','maxloadavg'));
if($maxsysload < 1)
$maxsysload = 50;
$load = current_load(); $load = current_load();
if($load) { if($load) {
if(intval($load) > $maxsysload) { if(intval($load) > $maxsysload) {
logger('system: load ' . $load . ' too high. discover_poco deferred to next scheduled run.'); logger('system: load '.$load.' too high. discover_poco deferred to next scheduled run.');
return; return;
}
} }
} }
@ -50,19 +53,22 @@ function discover_poco_run(&$argv, &$argc){
} else } else
die("Unknown or missing parameter ".$argv[1]."\n"); die("Unknown or missing parameter ".$argv[1]."\n");
$lockpath = get_lockpath(); // Don't check this stuff if the function is called by the poller
if ($lockpath != '') { if (App::callstack() != "poller_run") {
$pidfile = new pidfile($lockpath, 'discover_poco'.$mode.urlencode($search)); $lockpath = get_lockpath();
if($pidfile->is_already_running()) { if ($lockpath != '') {
logger("discover_poco: Already running"); $pidfile = new pidfile($lockpath, 'discover_poco'.$mode.urlencode($search));
if ($pidfile->running_time() > 19*60) { if($pidfile->is_already_running()) {
$pidfile->kill(); logger("discover_poco: Already running");
logger("discover_poco: killed stale process"); if ($pidfile->running_time() > 19*60) {
// Calling a new instance $pidfile->kill();
if ($mode == 0) logger("discover_poco: killed stale process");
proc_run('php','include/discover_poco.php'); // Calling a new instance
if ($mode == 0)
proc_run('php','include/discover_poco.php');
}
exit;
} }
exit;
} }
} }

View File

@ -60,16 +60,19 @@ function onepoll_run(&$argv, &$argc){
return; return;
} }
$lockpath = get_lockpath(); // Don't check this stuff if the function is called by the poller
if ($lockpath != '') { if (App::callstack() != "poller_run") {
$pidfile = new pidfile($lockpath, 'onepoll'.$contact_id); $lockpath = get_lockpath();
if ($pidfile->is_already_running()) { if ($lockpath != '') {
logger("onepoll: Already running for contact ".$contact_id); $pidfile = new pidfile($lockpath, 'onepoll'.$contact_id);
if ($pidfile->running_time() > 9*60) { if ($pidfile->is_already_running()) {
$pidfile->kill(); logger("onepoll: Already running for contact ".$contact_id);
logger("killed stale process"); if ($pidfile->running_time() > 9*60) {
$pidfile->kill();
logger("killed stale process");
}
exit;
} }
exit;
} }
} }

View File

@ -954,16 +954,21 @@ function ostatus_completion($conversation_url, $uid, $item = array(), $self = ""
if (isset($single_conv->actor->url)) if (isset($single_conv->actor->url))
$actor = $single_conv->actor->url; $actor = $single_conv->actor->url;
$contact = q("SELECT `id`, `rel` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` != '%s'", $contact = q("SELECT `id`, `rel`, `network` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` != '%s'",
$uid, normalise_link($actor), NETWORK_STATUSNET); $uid, normalise_link($actor), NETWORK_STATUSNET);
if (count($contact)) { if (!$contact)
$contact = q("SELECT `id`, `rel`, `network` FROM `contact` WHERE `uid` = %d AND `alias` IN ('%s', '%s') AND `network` != '%s'",
$uid, $actor, normalise_link($actor), NETWORK_STATUSNET);
if ($contact) {
logger("Found contact for url ".$actor, LOGGER_DEBUG); logger("Found contact for url ".$actor, LOGGER_DEBUG);
$contact_id = $contact[0]["id"]; $contact_id = $contact[0]["id"];
$network = $contact[0]["network"];
$not_following = !in_array($contact[0]["rel"], array(CONTACT_IS_SHARING, CONTACT_IS_FRIEND)); $not_following = !in_array($contact[0]["rel"], array(CONTACT_IS_SHARING, CONTACT_IS_FRIEND));
} else { } else {
logger("No contact found for url ".$actor, LOGGER_DEBUG); logger("No contact found for user ".$uid." and url ".$actor, LOGGER_DEBUG);
// Adding a global contact // Adding a global contact
/// @TODO Use this data for the post /// @TODO Use this data for the post
@ -972,18 +977,19 @@ function ostatus_completion($conversation_url, $uid, $item = array(), $self = ""
logger("Global contact ".$global_contact_id." found for url ".$actor, LOGGER_DEBUG); logger("Global contact ".$global_contact_id." found for url ".$actor, LOGGER_DEBUG);
$contact_id = $parent["contact-id"]; $contact_id = $parent["contact-id"];
$network = NETWORK_OSTATUS;
$not_following = true; $not_following = true;
} }
// Do we only want to import threads that were started by our contacts? // Do we only want to import threads that were started by our contacts?
if ($not_following AND $new_parent AND get_config('system','ostatus_full_threads')) { if ($not_following AND $new_parent AND get_config('system','ostatus_full_threads')) {
logger("Don't import uri ".$first_id." because we don't follow the person ".$actor, LOGGER_DEBUG); logger("Don't import uri ".$first_id." because user ".$uid." doesn't follow the person ".$actor, LOGGER_DEBUG);
continue; continue;
} }
$arr = array(); $arr = array();
$arr["network"] = NETWORK_OSTATUS; $arr["network"] = $network;
$arr["uri"] = $single_conv->id; $arr["uri"] = $single_conv->id;
$arr["plink"] = $plink; $arr["plink"] = $plink;
$arr["uid"] = $uid; $arr["uid"] = $uid;

View File

@ -79,18 +79,21 @@ function pubsubpublish_run(&$argv, &$argc){
load_config('config'); load_config('config');
load_config('system'); load_config('system');
$lockpath = get_lockpath(); // Don't check this stuff if the function is called by the poller
if ($lockpath != '') { if (App::callstack() != "poller_run") {
$pidfile = new pidfile($lockpath, 'pubsubpublish'); $lockpath = get_lockpath();
if($pidfile->is_already_running()) { if ($lockpath != '') {
logger("Already running"); $pidfile = new pidfile($lockpath, 'pubsubpublish');
if ($pidfile->running_time() > 9*60) { if($pidfile->is_already_running()) {
$pidfile->kill(); logger("Already running");
logger("killed stale process"); if ($pidfile->running_time() > 9*60) {
// Calling a new instance $pidfile->kill();
proc_run('php',"include/pubsubpublish.php"); logger("killed stale process");
// Calling a new instance
proc_run('php',"include/pubsubpublish.php");
}
return;
} }
return;
} }
} }

View File

@ -28,18 +28,21 @@ function queue_run(&$argv, &$argc){
load_config('config'); load_config('config');
load_config('system'); load_config('system');
$lockpath = get_lockpath(); // Don't check this stuff if the function is called by the poller
if ($lockpath != '') { if (App::callstack() != "poller_run") {
$pidfile = new pidfile($lockpath, 'queue'); $lockpath = get_lockpath();
if($pidfile->is_already_running()) { if ($lockpath != '') {
logger("queue: Already running"); $pidfile = new pidfile($lockpath, 'queue');
if ($pidfile->running_time() > 9*60) { if($pidfile->is_already_running()) {
$pidfile->kill(); logger("queue: Already running");
logger("queue: killed stale process"); if ($pidfile->running_time() > 9*60) {
// Calling a new instance $pidfile->kill();
proc_run('php',"include/queue.php"); logger("queue: killed stale process");
// Calling a new instance
proc_run('php',"include/queue.php");
}
return;
} }
return;
} }
} }

View File

@ -37,16 +37,19 @@ function update_gcontact_run(&$argv, &$argc){
return; return;
} }
$lockpath = get_lockpath(); // Don't check this stuff if the function is called by the poller
if ($lockpath != '') { if (App::callstack() != "poller_run") {
$pidfile = new pidfile($lockpath, 'update_gcontact'.$contact_id); $lockpath = get_lockpath();
if ($pidfile->is_already_running()) { if ($lockpath != '') {
logger("update_gcontact: Already running for contact ".$contact_id); $pidfile = new pidfile($lockpath, 'update_gcontact'.$contact_id);
if ($pidfile->running_time() > 9*60) { if ($pidfile->is_already_running()) {
$pidfile->kill(); logger("update_gcontact: Already running for contact ".$contact_id);
logger("killed stale process"); if ($pidfile->running_time() > 9*60) {
$pidfile->kill();
logger("killed stale process");
}
exit;
} }
exit;
} }
} }