7.10 Errors

The code field of an error response MUST be one of these values. The manager MUST NOT emit any other code on this channel, and a submitter MUST treat a code it does not recognise as an unrecoverable error for that request (§7.11).

CodeMeaningCloses?
MALFORMED_REQUESTThe message is not a single well-formed JSON object. §7.4No
REQUEST_TOO_LARGEThe message exceeds the configured maximum, or was truncated. §7.3Yes
INVALID_COMMANDcommand is absent, not a string, or names no command.No
INVALID_ARGUMENTSA field is absent, malformed, or inconsistent with the attachments. §7.6, §7.9No
UNKNOWN_JOBjob_id names nothing the manager holds — it never existed, or its retention has elapsed. §7.7No
ACCESS_DENIEDThe access check against the job's descriptor denied the right. §7.8No
INVALID_STATEThe command is not valid for the job's state, or the manager is shutting down.No
QUOTA_EXCEEDEDThe submitter already holds its maximum of live jobs. §7.3No
BAD_TOKENThe attached token cannot be a job identity. §7.5No
INTERNAL_ERRORThe manager failed while executing the command.No

UNKNOWN_SERVICE, UNKNOWN_OPERATION and OPERATION_TIMEOUT are not emitted here: nothing on this channel names a service or an operation, and a wait has no timeout of its own to expire.

7.10.1 Distinctions a submitter can rely on #

UNKNOWN_JOB versus ACCESS_DENIED. A caller that may not query a job receives ACCESS_DENIED for an identifier that exists, and UNKNOWN_JOB for one that does not. This channel does not hide the existence of a job from a caller that can name it: identifiers are unguessable, and a caller that holds one was told it by something that had it.

BAD_TOKEN is about the token, never about the identity. It says the attached token is unusable — its level, its count, its rights — and never that the submitter may not act as the principal it names. That decision was the kernel's, made before the message arrived, and a submitter that could not convey an identity never reaches the manager with it.

QUOTA_EXCEEDED created nothing. No record, no event, no consumption. A submitter MAY retry once one of its live jobs ends.

INVALID_STATE during shutdown. Once the manager is shutting down it MUST reject submit with INVALID_STATE and MUST continue to answer status, wait, stop and signal; a submitter watching its jobs be stopped has a legitimate reason to keep looking, and a submitter that wants a job stopped sooner than the shutdown will manage has a legitimate reason to ask.

7.10.2 Codes are not extensible without a version #

The manager MUST NOT introduce a new code without the negotiation in §4.21, for the reason §4.10 gives: an unrecognised code silently turns a handled condition into an unhandled one.

Edit this page