Ninjaclasher / dmoj-docker

Docker setup for the DMOJ: Modern Online Judge site.
41 stars 23 forks source link

Remote judge is connected but not judgeable #14

Closed behitek closed 1 year ago

behitek commented 1 year ago

Thank you for providing a Docker Compose version for effortless deployment. However, I am currently facing difficulties in deploying a remote judge. Despite my efforts to search for similar issues, I have been unable to find any. Therefore, I have created this issue to request your assistance.

I am using your docker-compose version to deploy the site and set up a docker version of judge on the same machine following the document of DMOJ at https://docs.dmoj.ca/#/judge/setting_up_a_judge and it works well by this command.

docker run --name "<judge_local>" \
-v <site_problem_path>:/problems \
--cap-add=SYS_PTRACE -d --restart=always \
dmoj/judge-tier3:latest \
run -p "9999" "localhost" "<judge1_id_here>" "<judge1_key_here>"

Because I run on the same machine with the site, so bridged address is localhost:9999. All my problems are manual manage by the judge.

--

For remote judging, I follow these steps:

The site /status/ show my new remote judge is online, and the docker logs <judge_remote> does not show any error.

/home/judge/.profile: line 31: /root/.cargo/env: No such file or directory
('0.0.0.0', 15001)
Self-testing executors
Self-testing ADA:    Success [0.002s, 2584 KB]   gnatmake 12.2.0
Self-testing AWK:    Success [0.003s, 1384 KB]   awk 1.3.4
Self-testing BF:     Success [0.002s, 984 KB]    opt 14.0.6, llc 14.0.6, ld_x64 2.40
Self-testing C:      Success [0.002s, 988 KB]    gcc 12
...
Self-testing TEXT:   Success [0.002s, 1640 KB]   cat 9.1
ERROR: ld.so: object '/tmp/tmpaesp1_w0/setbufsize.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
Self-testing TUR:    Success [0.002s, 2808 KB]   tprolog 
Self-testing V8JS:   Success [0.004s, 10900 KB]  v8dmoj 9.3.345.19
Self-testing ZIG:    Success [0.002s, 4 KB]      zig 0.6.0

Running live judge...
INFO 2023-07-20 09:01:48,936 20 packet Preparing to connect to [<site-public-ip>]:9999 as: <judge2_id_here>
INFO 2023-07-20 09:01:48,936 20 packet TLS not enabled.
INFO 2023-07-20 09:01:48,939 20 packet Opening connection to: [<site-public-ip>]:9999
INFO 2023-07-20 09:01:48,943 20 packet Starting handshake with: [<site-public-ip>]:9999
INFO 2023-07-20 09:01:48,944 20 packet Awaiting handshake response: [<site-public-ip>]:9999
INFO 2023-07-20 09:01:48,957 20 packet Judge "<judge2_id_here>" online: [<site-public-ip>]:9999
<end of file>

The bridged container doesn't show any log, the site shows remote judge is online, but no problem allows using the new judge even after restarting all containers.

behitek commented 1 year ago

I modified the sshfs command to:

sshfs -p 22 ubuntu@<site-public-ip>:<site_problem_path> <remote_judge_problems_path> -o ro -o allow_other

and now its work.