Skip to content

Remote API: monitor_jobqueue_count returning wrong count in multiserver setup

short description

I have two servers: S1 (master) and S2 (slave). When I make a change on S2, the number of pending tasks increases on S1 too. When the task is completed on S2, it still remains counted as incompleted on S1.

correct behaviour

The function monitor_jobqueue_count() in /interface/lib/classes/remote.d/monitor.inc.php should use the "server_id" parameter in SQL query, so it counts tasks for selected server only.

environment

Server OS: Debian

Server OS version: Buster (10)

ISPConfig version: 3.1dev

proposed fix

Replace

$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ?',$server['updated']);

with

$tmp = $app->db->queryOneRecord('SELECT count(datalog_id) as jobqueue_count FROM sys_datalog WHERE datalog_id > ? AND server_id = ?',$server['updated'],$server_id);
Edited by Radim Šulák