Skip to content

Sync issue with multiple judgehosts #279

Description

@jason-huh
  1. Judgehost A, B are running well.
  2. Judgehost A is no longer able to run scripts (i.e. lack of disk space, abnormal termination) but Domserver still knows that it is alive. Hence, there occur lots of pending submissions assigned to A.
  3. The administrator is aware of the problem with judgehost A and stops it. Domserver does not send further submissions.
  4. Judgehost B, the only judgehost which can judge, judges them and the results are sent to DB.
  5. After fixed, judgehost A judges them and the results are sent to DB.

Then submission.php will look like the following

http://*.com/domjudge/jury/submission.php?id=107

  ID start max runtime judgehost result rejudging
  j107 18:56 0 s   wrong-answer  
→ j187 10:56 s ip-172---* compiler-error  

error: domjudge query error(value SELECT result FROM judging WHERE submitid = 107 AND valid = 1): Query returned too many rows(2)

SELECT * FROM judging WHERE submitid = 107 AND valid = 1

judgingidUnique ID cidContest ID submitidSubmission ID being judged starttimeTime judging started endtimeTime judging ended, null = still busy judgehostJudgehost that performed the judging resultResult string as defined in config.php verifiedResult verified by jury member? jury_memberName of jury member who verified this verify_commentOptional additional information provided by the ve… validOld judging is marked as invalid when rejudging output_compileOutput of the compiling the program seenWhether the team has seen this judging rejudgingidRejudging ID (if rejudge) prevjudgingidPrevious valid judging (if rejudge)
107 8 107 1502704590.673028000 1502704595.577489000 NULL wrong-answer 0 NULL NULL 1 [BLOB - 578 B] 0 NULL NULL
187 8 107 1502762175.915671000 1502762176.436800000 ip-172---* compiler-error 0 NULL NULL 1 [BLOB - 672 B] 0 NULL NULL

As you may see the valid field are both updated to 1.

This issue is totally regardless of the two issues I've just created before. Please note that the domjudge version is 5.1.2 and some sensitive information is marked with an asterisk.

Activity

  1. eldering commented on Aug 26, 2017

    @eldering
    Member

    Ah, this has also been fixed in current development master branch. Now when a judgedaemon is restarted after a crash (or currently more often: an internal error it reported), any previously running judging is canceled, and will be picked up anew.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions