| name | debugging-processes |
| description | Use when diagnosing failed, stuck, or misbehaving AiiDA processes or the daemon. |
Debugging processes and the daemon
Inspecting a single process
verdi process status <PK>
verdi process report <PK>
verdi process show <PK>
verdi node show <PK>
For a full provenance dump including input/output files:
verdi process dump <PK>
For CalcJobs specifically, jump to the remote working directory on the HPC (requires SSH access, which may not be available for sandboxed agents):
verdi calcjob gotocomputer <PK>
Inspecting the daemon
verdi status
verdi daemon logshow
verdi process repair
Common failure modes
- Process stuck in
waiting : usually means the daemon lost track of it after a crash or restart. Run verdi process repair to requeue.
- Process state inconsistent with node attributes : check whether
seal() has been called; only _updatable_attributes can change on a stored ProcessNode before sealing.
presto-marked test failures : these use an in-memory SqliteTempBackend, so the bug is in the code, not in service configuration.
- Daemon subprocess killed on shutdown : daemon-launched subprocesses must pass
start_new_session=True or they inherit the daemon's signal handling and die with it.
Interactive inspection
verdi shell
verdi devel run-sql "SELECT ..."
Useful patterns inside verdi shell:
from aiida.orm import QueryBuilder, Node, load_node
qb = QueryBuilder().append(Node, filters={'node_type': {'like': 'data.core.dict.%'}})
node = load_node(<PK>)
node.base.attributes.all
node.base.extras.all
node.base.repository.list_object_names()
Related source
- Process runner:
src/aiida/engine/runners.py
- Daemon client:
src/aiida/engine/daemon/client.py
- CalcJob exec manager (file copying, job submission, retrieval):
src/aiida/engine/daemon/execmanager.py
- Transport tasks (submit, update, retrieve):
src/aiida/engine/processes/calcjobs/tasks.py