Submissions
Resolves #81 (closed)
Spec
This is mostly for the backend and handling of submissions/output. We should probably make a separate issue to drill down into the frontend aspects of this.
Site worker
-
Task for pushing submission to compute worker -
Task sends along a "per submission" API key -
Task for the run has some kind of time limit -
Task stores the ID so we can cancel it later -
Cancel task works
Compute worker
-
Limits time of submission -
Downloads actual submission content -
Sets env var in run docker for "per submission" API key -
Loads in simple python helper library named codalab
-
Ability to do codalab.email_participant("subject", "body")
-
Uploads submission result -
Uploads submission stdout, stderr -
Sets submission status throughout the run
Streaming output
-
Open socket to compute worker -
Create temp file /tmp/submissions/<task id>.output
(diff name?) -
Append socket data to the temp file -
[Codalab -> Compute worker] Reconnect socket on problem ??? -
[Codalab -> Participant] Reconnect on socket problem? (simple with websocket JS library, I believe) -
Frontend passed stream
Front end
-
Can upload submission -
Reconnecting websocket works -
Can see stream of submission data -
If they refresh, send the existing temp file data -
Actually pass a valid phase ID for the competition, from dropdown or something