openHPI / codeocean

CodeOcean is an automated assessment tool for web-based coding exercises
BSD 3-Clause "New" or "Revised" License
64 stars 27 forks source link

Reserve runners for the whole duration of their use #2594

Open MrSerth opened 22 hours ago

MrSerth commented 22 hours ago

This commit changes how runners are reserved and released. Previously, a runner was reserved only for the actual time it was actively used and the aim was to reserve it for a time as short as possible. The previous mechanism worked, but had some drawbacks:

For example, a learner could start a submission scoring, which would perform (1) a file copy, (2) an execution of the first test file, (3) an execution of the second test file, etc. For each of these actions, the runner would be reserved and released. Now, it could happen that another run was triggered between the execution of both test files, causing issues with the remaining scoring.

In the refactored version, a runner is reserved once before initially copying files and only released after the last command finished. This ensures that no one can interrupt an execution started once, hopefully making it more robust (and faster, since less locks are required).