When Airflow stops scheduling but the scheduler process is healthy, the usual cause is that tasks marked running no longer have a live process behind them. Those tasks hold executor slots and pool capacity indefinitely, and once the slots are exhausted nothing new enters the queue. AceMQ clears the condition and removes the cause.
Zombie tasks accumulate from worker pods evicted mid-task, Celery workers killed by the OOM killer, and network partitions that break the heartbeat without updating task state. The metadata database still shows them running, so the executor counts them against parallelism and pool slots. Meanwhile scheduler loop time degrades as the task instance table grows, which slows detection further. Restarting the scheduler does not help, because the stale state is in the database.
Apache Airflow 2.x on Kubernetes or VMs with Celery or Kubernetes executors and a PostgreSQL or MySQL metadata database.
AceMQ identifies the stuck task instances and reconciles their state against actual worker processes, freeing the held slots so scheduling resumes. Zombie detection thresholds and heartbeat timeouts are then aligned with real task runtimes, worker resource limits are corrected where eviction was the trigger, and metadata database maintenance is put on a schedule so scheduler loop time stays bounded.
Scheduling resumes immediately, and the combination of corrected timeouts, worker sizing, and database maintenance keeps slots from being held by dead tasks. Stalls that previously went unnoticed until a morning report was missing now alert within minutes.
Fixing scheduler delay caused by DAG files that make network or database calls at parse time, blocking every DAG in the deployment.
Moving from Celery to the Kubernetes executor, or the reverse, with a sizing model and deployment design that matches the workload profile.
Whether you need architecture advisory, 24/7 support, or full managed services, AceMQ has the expertise to help.