Skip to content
System types · Built-in All levels

Airflow triggerer

The built-in Airflow triggerer system type — why a dead triggerer looks exactly like waiting correctly, the blocked-main-thread check, and capacity.

SLSluicio team 3 min read Updated Sep 2026

Airflow’s triggerer runs deferrable operators. If you use sensors in deferred mode - and in a modern deployment you almost certainly do - this process is what resumes them.

Key: airflow-triggerer · applied automatically to services emitting airflow.triggers. or airflow.triggerer metrics.

A dead triggerer is invisible everywhere else

Section titled “A dead triggerer is invisible everywhere else”

A deferred task is not running and not failing. It is waiting - which looks identical to waiting correctly. So when the triggerer stops, nothing on the scheduler reports anything: no task failures, no failed runs, no alert. A fleet of tasks simply never resumes and never complains.

That is the whole case for this type. See Apache Airflow for the scheduler, the DAG processor for parsing, and the Airflow page for setup, which is the same for all three.

CheckConditionSeverityWhy it matters
Triggerer not runningairflow.triggerer_heartbeat stops arrivingCriticalEvery deferred task stays deferred, silently.
Trigger blocking the main threadairflow.triggers.blocked_main_thread risingWarningOne trigger doing synchronous work starves every other deferred task on the process.
Triggerer at capacityairflow.triggerer.capacity_left < 1WarningNew deferred tasks queue behind the ones running.

The heartbeat fires on the absence of its metric, since a dead process emits nothing left to threshold, and is guarded to only fire for a metric that has reported before.

  • Blocked main thread is a code smell with a metric. It means a custom trigger is doing blocking I/O in an async context. The firing tells you it happened; finding which trigger means reading the triggerer’s logs.
  • Capacity at < 1 fires at saturation, not before. Raise it to a fraction of default_capacity to hear about it while there is still room.
  • Run more than one triggerer if capacity is a recurring firing rather than an incident: they partition work between them.