| 1 | = Job status summary = |
| 2 | |
| 3 | Jobs can fail in various ways. |
| 4 | Here's a summary of what ends up in the server DB |
| 5 | (in all cases, result.outcome is RESULT_OUTCOME_CLIENT_ERROR (3). |
| 6 | |
| 7 | || '''what happened''' || '''result.exit_status''' || '''<message> in result.stderr_out''' || |
| 8 | || app crashed || status returned by OS || "process got signal N" or similar || |
| 9 | || app called exit(N), N nonzero || N || "[OS error string] - exit code %d (0x%x) " or similar || |
| 10 | || app aborted by client, too much time || ERR_RSC_LIMIT_EXCEEDED (-177) || "Maximum elapsed time exceeded" || |
| 11 | || app aborted by client, too much disk || ERR_RSC_LIMIT_EXCEEDED (-177) || "Maximum disk usage exceeded" || |
| 12 | || app aborted by client, too much RAM || ERR_RSC_LIMIT_EXCEEDED (-177) || "Maximum memory exceeded" || |
| 13 | || abort requested by scheduler || ERR_ABORTED_BY_PROJECT (-221) || "aborted by project - no longer usable" || |
| 14 | || abort if not started requested by scheduler || ERR_ABORTED_BY_PROJECT (-221) || || |
| 15 | || too many exit(0)s || ERR_TOO_MANY_EXITS (-226) || "too many exit(0)s" || |
| 16 | || abort requested by user || ERR_ABORTED_VIA_GUI (-197) || || |
| 17 | || input file download failed || ERR_RESULT_DOWNLOAD (-186) || "WU download error: %s" or similar || |
| 18 | || output file upload failed || ERR_RESULT_UPLOAD (-187) || description of failed uploads || |
| 19 | || client exiting, config.abort_jobs_on_exit || ERR_ABORTED_ON_EXIT || "aborting on client exit" || |
| 20 | || scheduler acked active job || EXIT_ABORTED_BY_CLIENT (194) || "Got ack for job that's still active" || |
| 21 | || app launch failed || ERR_RESULT_START (-185) || "couldn't start %s: %d" || |