$arr['inform'] = ((x($arr,'inform')) ? trim($arr['inform']) : '');
$arr['file'] = ((x($arr,'file')) ? trim($arr['file']) : '');
+
+ if (($arr['author-link'] == "") AND ($arr['owner-link'] == "")) {
+ $trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);
+ foreach ($trace AS $func)
+ $function[] = $func["function"];
+
+ $function = implode(", ", $function);
+ logger("Both author-link and owner-link are empty. Called by: ".$function, LOGGER_DEBUG);
+ }
+
if ($arr['plink'] == "") {
$a = get_app();
$arr['plink'] = $a->get_baseurl().'/display/'.urlencode($arr['guid']);
unset($db_host, $db_user, $db_pass, $db_data);
};
+ if (poller_max_connections_reached())
+ return;
+
$load = current_load();
if($load) {
$maxsysload = intval(get_config('system','maxloadavg'));
}
+/**
+ * @brief Checks if the number of database connections has reached a critical limit.
+ *
+ * @return bool Are more than 3/4 of the maximum connections used?
+ */
+function poller_max_connections_reached() {
+ $r = q("SHOW VARIABLES WHERE `variable_name` = 'max_connections'");
+ if (!$r)
+ return false;
+
+ $max = intval($r[0]["Value"]);
+ if ($max == 0)
+ return false;
+
+ $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'");
+ if (!$r)
+ return false;
+
+ $connected = intval($r[0]["Value"]);
+ if ($connected == 0)
+ return false;
+
+ $level = $connected / $max;
+
+ logger("Connection usage: ".$connected."/".$max, LOGGER_DEBUG);
+
+ if ($level < (3/4))
+ return false;
+
+ logger("Maximum level (3/4) of connections reached: ".$connected."/".$max);
+ return true;
+
+}
+
/**
* @brief fix the queue entry if the worker process died
*