Skip to content

dag_processing.processes metric missing decrement on graceful process exit #69984

Description

@AtharvaSarwate

Under which category would you file this issue?

Airflow Core

Apache Airflow version

3.3.0

What happened and how to reproduce it?

The dag_processing.processes metric description states: "the delta is negative when, since the last metric was sent, processes have completed." However, _collect_results() , the normal graceful completion path, emits no stats.decr, so the delta is never negative under normal operation. A decr is only emitted for abnormal exits , which are : stop (file deleted), timeout, and terminate (shutdown). This means the metric does not behave as documented.

Current behaviour

stats.incr("dag_processing.processes", tags={"action": "start", ...}) is called
in _start_new_processes() when a child DagFileProcessorProcess is spawned.

A matching stats.decr(...) is called in three abnormal exit paths:

  • terminate_orphan_processes() action: "stop" (file deleted mid-parse)
  • _kill_timed_out_processors() action: "timeout" (exceeded processor_timeout)
  • terminate() action: "terminate" (manager shutting down)

However, _collect_results() , the normal graceful exit path called every loop
iteration pops the finished processor from self._processors and calls
processor.close() with no corresponding decr:

This means under normal operation (parsers completing successfully), the metric value drifts upward indefinitely and never accurately reflects the number of currently running processes

What you think should happen instead?

A stats.decr("dag_processing.processes", tags={"action": "finish", ...}) should be emitted when a process completes gracefully, symmetric with the incr in _start_new_processes().

Operating System

No response

Deployment

None

Apache Airflow Provider(s)

No response

Versions of Apache Airflow Providers

No response

Official Helm Chart version

Not Applicable

Kubernetes Version

No response

Helm Chart configuration

No response

Docker Image customizations

No response

Anything else?

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:Schedulerincluding HA (high availability) schedulerarea:metricskind:bugThis is a clearly a bugneeds-triagelabel for new issues that we didn't triage yet

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions