Skip to content

Commit e470fde

Browse files
author
Marius Burkard
committed
Remote API: monitor_jobqueue_count returning wrong count in multiserver setup, fixes #5382
1 parent fbbedfa commit e470fde

File tree

1 file changed

+2
-3
lines changed

1 file changed

+2
-3
lines changed

interface/lib/classes/remote.d/monitor.inc.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public function monitor_jobqueue_count($session_id, $server_id = 0)
3939

4040
if(!$this->checkPerm($session_id, 'monitor_jobqueue_count')) {
4141
throw new SoapFault('permission_denied', 'You do not have the permissions to access this function.');
42-
return false;
4342
}
4443

4544
$server_id = intval($server_id);
@@ -48,15 +47,15 @@ public function monitor_jobqueue_count($session_id, $server_id = 0)
4847
$servers = $app->db->queryAllRecords("SELECT server_id, updated FROM server");
4948
$sql = 'SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE ';
5049
foreach($servers as $sv) {
51-
$sql .= " (datalog_id > ".$sv['updated']." AND server_id = ".$sv['server_id'].") OR ";
50+
$sql .= " (datalog_id > ".$sv['updated']." AND server_id IN (0,".$sv['server_id'].")) OR ";
5251
}
5352
$sql = substr($sql, 0, -4);
5453
$tmp = $app->db->queryOneRecord($sql);
5554
return $tmp['jobqueue_count'];
5655

5756
} else {
5857
$server = $app->db->queryOneRecord("SELECT updated FROM server WHERE server_id = ?",$server_id);
59-
$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ?',$server['updated']);
58+
$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ? AND server_id IN ?',$server['updated'], array(0, $server_id));
6059
return $tmp['jobqueue_count'];
6160
}
6261
}

0 commit comments

Comments
 (0)