So supervisor goes ahead and starts 2 judgehosts, domjudge-contributor-0 and domjudge-contributor-1.
This configuration is unsuitable for running domjudge in single core machines. In a single core machine, if a judging is routed to domjudge-contributor-1, the daemon id 1 is eventually sent to rungard.c in the cpuset option. runguard.c performs a check to ensure cpuset >= 0 && cpuset < nproc, and crashes the judgehost with Running compile.sh caused an error/crash: /domjudge/bin/runguard: processor ID 1 given as cpuset, but only 1 cores configured.
Subsequent judgings will succeed since the judgehost gets disabled, but I was thoroughly confused.
I'm unfamiliar with how supervisor works, but ideally numprocs would be templated in from somewhere that caps it to the actual number of cores on the host.
judgedaemon.conf
contains:https://github.com/DOMjudge/domjudge-packaging/blob/c566fa91ca5018fccd43f15a1b4b80db9f5125e4/docker-contributor/supervisor/judgedaemon.conf#L3-L3
So supervisor goes ahead and starts 2 judgehosts,
domjudge-contributor-0
anddomjudge-contributor-1
.This configuration is unsuitable for running domjudge in single core machines. In a single core machine, if a judging is routed to
domjudge-contributor-1
, the daemon id 1 is eventually sent torungard.c
in the cpuset option.runguard.c
performs a check to ensurecpuset >= 0 && cpuset < nproc
, and crashes the judgehost withRunning compile.sh caused an error/crash: /domjudge/bin/runguard: processor ID 1 given as cpuset, but only 1 cores configured
.Subsequent judgings will succeed since the judgehost gets disabled, but I was thoroughly confused.
I'm unfamiliar with how supervisor works, but ideally
numprocs
would be templated in from somewhere that caps it to the actual number of cores on the host.