diff --git a/discovery.php b/discovery.php index e56f104bf6..e3a7366dd3 100755 --- a/discovery.php +++ b/discovery.php @@ -105,6 +105,13 @@ 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'])) { discover_device($device, $options); diff --git a/includes/sql-schema/update.php b/includes/sql-schema/update.php index e3e5febd16..93fe7eb6bf 100644 --- a/includes/sql-schema/update.php +++ b/includes/sql-schema/update.php @@ -98,10 +98,6 @@ if (!dbGetLock('schema_update')) { register_shutdown_function('dbReleaseLock','schema_update'); -do { - sleep(1); -} while (@dbFetchCell('SELECT COUNT(*) FROM `devices` WHERE NOT IS_FREE_LOCK(CONCAT("polling.", device_id)) OR NOT IS_FREE_LOCK(CONCAT("queued.", device_id)) OR NOT IS_FREE_LOCK(CONCAT("discovering.", device_id))') > 0); - foreach ($filelist as $file) { list($filename,$extension) = explode('.', $file, 2); if ($filename > $db_rev) { @@ -171,3 +167,5 @@ if ($updating) { echo "-- Done\n"; } + +dbReleaseLock('schema_update'); diff --git a/poller.php b/poller.php index 57132457d7..0440997c32 100755 --- a/poller.php +++ b/poller.php @@ -100,6 +100,13 @@ 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";