Grading follow-ups from PR #394

Abierto
#397 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@DarioDeSilva ya está trabajando en esto.

Desde el 27/10/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

A few small leftovers from the #394 review. None of them blocked the merge.

Timeout handling

  • upload_assignment_autograder still stores NULL when autograder_timeout is left out. upload_submission falls back to 300, but code_editor.py::submit_code uses the raw value, so editor submissions get no time limit at all. The fix is to store the default when the field is missing, or to resolve the timeout in one place that every grading path uses.
  • The timeout has no upper bound. A huge value fails the INTEGER column only after the image is built, and large valid values hold the assignment lock for that long. nginx cuts requests off at 300s anyway, so a cap of around 600 seems reasonable.

Grade script

  • If setpriv is missing from the image, or the autograder file is missing, the script exits 93. That gets recorded as a score-0 "Autograder Error" even though student code never ran. Exit codes 125/126/127 inside the script could map to a setup exit code instead.
  • A hang during reset or copy-in, or an exec-level 137 during setup, is still recorded against the student. This is rare and needs an infrastructure failure.
  • results.json and the autograder log have no size limit before they're read into backend memory.

Cleanup

  • Use KILLED_EXIT_CODE in the script and tests instead of a bare 137. Drop the unreachable GRADE_EXIT_TIMED_OUT entry from student_code_ran.
  • Add the submission id and partial stderr to the hung-exec warning.
  • The "Failed to prepare/cleanup container" messages now also cover Docker CLI errors. Reword them.

Stress test

  • test_submission_burst.py --cleanup deletes the assignment but leaves the generated students enrolled in the course.
Lenguaje dominante
Python
Estrellas
13
Forks
0
Merge medio
9 d 7 h
PR fusionados (30 d)
5

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de kiat/codeAssist

Todos los issues de kiat/codeAssist

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.