Durable Execution Engine¶
The durable execution engine (dex) handles background task scheduling and execution. This page documents its worker types, task queues, and default configuration.
For tuning guidance, see Scaling.
Workers¶
Workers poll task queues and execute tasks. Each worker has a configurable maximum concurrency that limits how many tasks it processes simultaneously per instance.
Worker concurrency is configured via:
dt.dex-engine.<worker-type>.<worker-name>.max-concurrency=<N>
Where <worker-type> is either workflow-worker or activity-worker.
| Worker Type | Worker Name | Queue | Default Concurrency |
|---|---|---|---|
workflow-worker |
default |
default |
100 |
activity-worker |
default |
default |
25 |
activity-worker |
vuln-analysis |
vuln-analyses |
10 |
activity-worker |
artifact-import |
artifact-imports |
5 |
activity-worker |
package-metadata-resolution |
package-metadata-resolutions |
3 |
activity-worker |
notification |
notifications |
5 |
activity-worker |
vuln-analysis-reconciliation |
vuln-analysis-reconciliations |
5 |
activity-worker |
policy-evaluation |
policy-evaluations |
5 |
activity-worker |
metrics-update |
metrics-updates |
5 |
Task queues¶
Task queue capacity limits how many tasks can be pending across the entire cluster. When a queue reaches capacity, the scheduler stops creating new tasks for that queue, providing backpressure.
Three related terms describe a queue's load:
- Capacity is the upper limit on pending tasks for a queue, enforced across the cluster.
- Depth is the number of tasks currently pending in the queue, from zero to capacity. Each
cycle, the scheduler creates up to
capacity - depthnew tasks, so depth never exceeds capacity. - Backlog applies to activity queues only. Workflow execution creates activity tasks directly,
independently of the scheduler, so tasks can pile up in the
CREATEDstate faster than the activity task scheduler moves them into the queue. The backlog is this set of ready-to-schedule tasks that the queue's capacity has not yet admitted. Workflow queues have no backlog, because the scheduler creates their tasks itself and never exceeds capacity.
The dt_dex_engine_activity_task_queue_backlog metric reports the backlog for scaling decisions. See
Scale workers horizontally.
Queue capacity is modifiable at runtime in the administrator panel under Workflows > Task Queues, or via REST API.
| Type | Queue | Default Capacity |
|---|---|---|
workflow |
default |
1000 |
activity |
default |
1000 |
activity |
artifact-imports |
25 |
activity |
metrics-updates |
25 |
activity |
notifications |
25 |
activity |
package-metadata-resolutions |
25 |
activity |
policy-evaluations |
25 |
activity |
vuln-analyses |
25 |
activity |
vuln-analysis-reconciliations |
25 |