mirror of
https://github.com/librenms/librenms.git
synced 2024-10-07 16:52:45 +00:00
Merge pull request #1836 from f0o/revert-1584
Revert all PHP-Based MySQL Locks introduced in #1584
This commit is contained in:
+1
-12
@@ -105,19 +105,8 @@ if ($config['distributed_poller'] === true) {
|
||||
$where .= ' AND poller_group IN('.$config['distributed_poller_group'].')';
|
||||
}
|
||||
|
||||
echo 'Checking for MySQL Locks:';
|
||||
while (!dbCheckLock('schema_update')) {
|
||||
echo '.';
|
||||
sleep(1);
|
||||
}
|
||||
echo PHP_EOL;
|
||||
|
||||
foreach (dbFetch("SELECT * FROM `devices` WHERE status = 1 AND disabled = 0 $where ORDER BY device_id DESC") as $device) {
|
||||
if (dbGetLock('discovering.' . $device['device_id'])) {
|
||||
register_shutdown_function('dbReleaseLock','discovering.'.$device['device_id']);
|
||||
discover_device($device, $options);
|
||||
dbReleaseLock('discovering.' . $device['device_id']);
|
||||
}
|
||||
discover_device($device, $options);
|
||||
}
|
||||
|
||||
$end = utime();
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
# Poller Service
|
||||
|
||||
# WARNING: THIS IS HIGHLY EXPERIMENTAL AND MAY NOT WORK
|
||||
|
||||
The Poller service is an alternative to polling and discovery cron jobs and provides support for distributed polling without memcache. It is multi-threaded and runs continuously discovering and polling devices with the oldest data attempting to honor the polling frequency configured in `config.php`. This service replaces all the required cron jobs except for `/opt/librenms/daily.sh` and `/opt/librenms/alerts.php`.
|
||||
|
||||
Configure the maximum number of threads for the service in `$config['poller_service_workers']`. Configure the minimum desired polling frequency in `$config['poller_service_poll_frequency']` and the minimum desired discovery frequency in `$config['poller_service_discover_frequency']`. The service will not poll or discover devices which have data newer than this this configured age in seconds. Configure how frequently the service will attempt to poll devices which are down in `$config['poller_service_down_retry']`.
|
||||
|
||||
@@ -59,36 +59,6 @@ function dbQuery($sql, $parameters=array()) {
|
||||
}//end dbQuery()
|
||||
|
||||
|
||||
/*
|
||||
* Aquire a lock on a string
|
||||
* */
|
||||
function dbGetLock($data, $timeout = 0) {
|
||||
$sql = 'SELECT GET_LOCK(\'' . $data . '\',' . $timeout . ')';
|
||||
$result = dbFetchCell($sql);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Check a lock on a string
|
||||
* */
|
||||
function dbCheckLock($data) {
|
||||
$sql = 'SELECT IS_FREE_LOCK(\'' . $data . '\')';
|
||||
$result = dbFetchCell($sql);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Release a lock on a string
|
||||
* */
|
||||
function dbReleaseLock($data) {
|
||||
$sql = 'SELECT RELEASE_LOCK(\'' . $data . '\')';
|
||||
$result = dbFetchCell($sql);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Passed an array and a table name, it attempts to insert the data into the table.
|
||||
* Check for boolean false to determine whether insert failed
|
||||
|
||||
@@ -59,35 +59,6 @@ function dbQuery($sql, $parameters=array()) {
|
||||
}//end dbQuery()
|
||||
|
||||
|
||||
/*
|
||||
* Aquire a lock on a string
|
||||
* */
|
||||
function dbGetLock($data, $timeout = 0) {
|
||||
$sql = 'SELECT GET_LOCK(\'' . $data . '\',' . $timeout . ')';
|
||||
$result = dbFetchCell($sql);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Check a lock on a string
|
||||
* */
|
||||
function dbCheckLock($data) {
|
||||
$sql = 'SELECT IS_FREE_LOCK(\'' . $data . '\')';
|
||||
$result = dbFetchCell($sql);
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Release a lock on a string
|
||||
* */
|
||||
function dbReleaseLock($data) {
|
||||
$sql = 'SELECT RELEASE_LOCK(\'' . $data . '\')';
|
||||
$result = dbFetchCell($sql);
|
||||
return $result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Passed an array and a table name, it attempts to insert the data into the table.
|
||||
* Check for boolean false to determine whether insert failed
|
||||
|
||||
@@ -91,13 +91,6 @@ if ($tmp[0] <= $db_rev) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!dbGetLock('schema_update')) {
|
||||
echo "Schema update already in progress. Exiting\n";
|
||||
exit(1);
|
||||
} //end if
|
||||
|
||||
register_shutdown_function('dbReleaseLock','schema_update');
|
||||
|
||||
foreach ($filelist as $file) {
|
||||
list($filename,$extension) = explode('.', $file, 2);
|
||||
if ($filename > $db_rev) {
|
||||
@@ -168,4 +161,3 @@ if ($updating) {
|
||||
echo "-- Done\n";
|
||||
}
|
||||
|
||||
dbReleaseLock('schema_update');
|
||||
|
||||
+3
-14
@@ -100,13 +100,6 @@ if (isset($options['r'])) {
|
||||
$config['norrd'] = true;
|
||||
}
|
||||
|
||||
echo 'Checking for MySQL Locks:';
|
||||
while (!dbCheckLock('schema_update')) {
|
||||
echo '.';
|
||||
sleep(1);
|
||||
}
|
||||
echo PHP_EOL;
|
||||
|
||||
rrdtool_pipe_open($rrd_process, $rrd_pipes);
|
||||
|
||||
echo "Starting polling run:\n\n";
|
||||
@@ -117,13 +110,9 @@ if (!isset($query)) {
|
||||
|
||||
foreach (dbFetch($query) as $device) {
|
||||
$device = dbFetchRow("SELECT * FROM `devices` WHERE `device_id` = '".$device['device_id']."'");
|
||||
if (dbGetLock('polling.' . $device['device_id'])) {
|
||||
register_shutdown_function('dbReleaseLock','polling.'.$device['device_id']);
|
||||
poll_device($device, $options);
|
||||
RunRules($device['device_id']);
|
||||
echo "\r\n";
|
||||
dbReleaseLock('polling.' . $device['device_id']);
|
||||
}
|
||||
poll_device($device, $options);
|
||||
RunRules($device['device_id']);
|
||||
echo "\r\n";
|
||||
$polled_devices++;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user