Types of Errors
This page lists information about errors that can occur when executing jobs.
For a description of the errors returned by the HTTP API, see Protocols in the API specification. For a description of the errors returned by API bindings, see API bindings documentation.
The following table enumerates the possible categories of failure reasons that may occur (reported in the failureReason of a job's describe hash and visible in the monitor tab on the website).
Failure Reason Name
Example Failure Message and Explanation
AppError
This error is reported by an executable, either through the local file job_error.json, or via a native exception. The failure message is given by the executable.
This error is reported by an executable, either through the local file job_error.json, or via an exception or exiting with a nonzero exit code. The failure message is given by the executable.
AuthError
"The job can no longer be run because a launching authentication token has been revoked or expired"
"The total job spending exceeded the cost limit" This error indicates that job has been terminated due to exceeding the cost limit.
"The total spending limit is exceeded, please contact [email protected]" This error indicates that job has been terminated due to exceeding the total spending limit.
"<Other job ID> was a job dependency but failed" This occurs if a job depends on a failed job in another job tree
This occurs if there is an error encountered while attempting to run the executable on a worker in the cloud.
"You have one or more incomplete uploads" E-mail notifications if your previous data upload attempts got interrupted and will require your attention.
"There was an error parsing the job's inputs, or one of its dependencies cannot be fulfilled" In general, the message will mention the input field affected and the reason there was a failure.
"The system encountered an internal error" This error indicates that something unexpected happened while processing your job, and you will not be charged
"<Other job ID> failed because of <other job's failure reason>: <other job's failure message>" Once a job fails, it triggers this failure reason for all other jobs in the same job tree that have not yet entered a terminal state
"The job timeout <timeout_value> has been exceeded while executing <entry_point_name>" In general, the message will mention the entry point at which the timeout was exceeded.
"There was an error parsing the job's outputs, or one of its dependencies cannot be fulfilled" In general, the message will mention the output field affected and the reason there was a failure.
"The machine running the job became unresponsive" If the cloud worker running the job does not respond for a few minutes, the job fails.

Error details

AppError

Job billed to user: yes
This error type indicates that an app (or applet) recognized an expected error condition (for example, input data that the app is incompatible with). The error should be accompanied by an error message indicating what went wrong and, possibly, corrective action that the user may take to change application input

AppInternalError

Job billed to user: yes
This error type indicates that an app (or applet) encountered an unexpected error condition which may require debugging. Extra debug information may be available in the job log.

AuthError

Job billed to user: no
This error type indicates that the authentication token used for the job is invalid. This may happen if the job has been scheduled more than 30 days ago (DNAnexus jobs are limited to a runtime of 30 days and usually start immediately; however, if the job is waiting for unsatisfied dependencies such as an open file object, it may continue waiting indefinitely).

CostLimitExceeded

Job billed to user: yes
This error type indicates that the job was terminated because its accumulated charge exceeded the cost limit for this job.

SpendingLimitExceeded

Job billed to user: yes
This error type indicates that the job was terminated because the total spending limit of the billing org is exceeded.

DependencyUnsatisfiable

Job billed to user: yes
This error type is reported when a job depends on the output of another job in a different execution tree, and the other job fails.

ExecutionError

Job billed to user: no
This error type is reported when a failure happens in the DNAnexus Execution Environment. Normally, this is not the application's fault, but the error may also occur because the application improperly specified its package dependencies in the runSpec.execDepends field of its app metadata.
Error string
Failed while installing execDepends
Notes
This error may happen when the runSpec.execDepends field of your dxapp.json application metadata file contains an invalid package name. Workaround: Check your dxapp.json for correctness of the execDepends field.

Incomplete Uploads

Partially uploaded file(s) billed to user: Yes (until they are either removed by the user manually or by the system automatically after some time.
Occasionally, you may get notified of an incomplete upload. This condition is most likely caused by:
  • An interruption outside DNAnexus' control, such as:
    • a network issue
    • power outage
    • computer crash
  • Upload window being closed while an upload was in progress.
How is the incomplete data presented in the platform? Within your account, the partially uploaded data appears in the "open state" but is not usable until fully uploaded.
Can I recover from an incomplete upload? The web site and the upload agent will continue where the interrupted upload left off by re-launching the upload processes. However, you must select the exact same file from identical location and same target location.
How does the tool upload method used relate to this issue? The upload may have been triggered in any platform tool including the web UI, the Upload Agent tool, dx-toolkit in a CLI, or programmable binding method (e.g. dxpy).
Am I charged for the partial data? You are charged for storing data on DNAnexus servers regardless of its completeness. For best cost savings, either finish your upload (see "Can I recover from an incomplete upload?" above) or delete the partial upload from the system.
Why did my partial upload get deleted? In order to save you money on data you can't use, the DNAnexus systems will automatically delete incomplete uploads after a number of days. We'll warn you several days before removal to give you the opportunity to take action if you choose.

InputError

Job billed to user: yes
An InputError or OutputError may occur for the following reasons:
  • Input/Output specification mismatch: these errors only occur if an executable has specified an input or output spec
    • the value provided for a particular input/output field does not match the class specified (e.g. "int", "record", "array:file"); see Job Input and Output for details on the expected syntax
    • the value provided for a particular input/output field does not match the type specification (e.g. "Reads")
    • a referenced data object cannot be found
    The following errors are thrown only as OutputErrors because the analogous input errors are thrown at the time of the API call that creates the origin or master job:
    • a required output field is missing
    • an extra output field has been provided
  • Object state error: the job is an origin or master job, and it has a data object that would be cloned for output that is still in the open state, but it and all of its descendant jobs have all finished running and so there is no thread of execution that can close the object
  • Syntax errors
  • Resolution errors
    • a job-based object reference refers to a field that is not present in the output of the specified job
    • a job-based object reference refers to a job that has failed and therefore cannot be resolved
    • a job-based object reference refers to a job that the job that has finished running does not have permission to describe

JMInternalError

Job billed to user: no
This error type is reported when a failure happens in the DNAnexus Job Manager. Under normal circumstances, the job will be automatically restarted.

JobTimeoutExceeded

Job billed to user: yes
This error type indicates that an app (or applet) exceeded the maximum time it was allowed to run, as specified in the runSpec.timeoutPolicy field of its app metadata.

JobTreeFailure

Job billed to user: yes

OutputError

Job billed to user: yes
See details in InputError

UnresponsiveWorker

Job billed to user: no
This error type is reported when a worker executing the job fails. Under normal circumstances, the job will be automatically restarted.