This is an automated email from the ASF dual-hosted git repository.
amoghrajesh pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 2cf2a1af91c Explicitly state 'durable execution' in airflow docs
(#71863)
2cf2a1af91c is described below
commit 2cf2a1af91cd86c19ed724f87af014dbd60fdb05
Author: Amogh Desai <[email protected]>
AuthorDate: Wed Aug 26 10:23:33 2026 +0530
Explicitly state 'durable execution' in airflow docs (#71863)
---
.../docs/core-concepts/resumable-tasks.rst | 23 ++++++++++++++++++++--
.../docs/core-concepts/task-state-store.rst | 3 +++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/airflow-core/docs/core-concepts/resumable-tasks.rst
b/airflow-core/docs/core-concepts/resumable-tasks.rst
index 98df3d45e60..163e11b3346 100644
--- a/airflow-core/docs/core-concepts/resumable-tasks.rst
+++ b/airflow-core/docs/core-concepts/resumable-tasks.rst
@@ -32,8 +32,27 @@ entire polling duration, and if the worker process is
restarted or the host is p
retries from scratch, losing all the progress made. Depending on the operator,
that means the external
job is submitted again, creating a duplicate run in context of the external
system.
-Airflow recommends three approaches for handling long-running external work.
Understanding the trade-offs
-between them helps you choose the right one for your situation.
+.. _concepts-durable-execution:
+
+Durable execution
+-----------------
+
+Surviving that failure mode is what **durable execution** means: a task
outlives the loss of the
+process running it and can continue / re-attach from where it stopped, rather
than repeating work
+already done or submitting a duplicate job to an external system.
+
+The :doc:`task state store <task-state-store>` is the mechanism Airflow
provides to achieve it. It
+is the only per-task-instance storage that outlives a worker crash and is
still readable by the
+next attempt, which is what lets a retry recover a checkpoint or an external
job identifier written
+by the attempt before it. Durable execution is the outcome; the task state
store is how you get it.
+
+Operator documentation across the provider ecosystem uses the same term for
the operator-level
+feature built on this mechanism, normally exposed as a ``durable`` parameter.
Spark, Kubernetes,
+Databricks, Snowflake, BigQuery, Redshift and Glue operators each have a
"Durable execution"
+section describing what they persist and how they reconnect on retry.
+
+Airflow recommends three approaches for achieving this with long-running
external work.
+Understanding the trade-offs between them helps you choose the right one for
your situation.
.. _concepts-resumable-tasks-deferrable:
diff --git a/airflow-core/docs/core-concepts/task-state-store.rst
b/airflow-core/docs/core-concepts/task-state-store.rst
index cd5ffbc8b5d..c4f7dfa6e40 100644
--- a/airflow-core/docs/core-concepts/task-state-store.rst
+++ b/airflow-core/docs/core-concepts/task-state-store.rst
@@ -32,6 +32,9 @@ Task State Store
Task store is a persistent key/value store scoped to a single task instance
(``dag_id`` + ``run_id`` + ``task_id`` + ``map_index``). It survives worker
crashes and task retries within the same Dag run, making it suitable for
storing external job IDs, intra-task checkpoints, and progress metadata.
+Because it outlives a worker crash and stays readable by the next attempt, the
task state store is the mechanism behind :ref:`durable execution
<concepts-durable-execution>`, where a task continues
+from where it stopped instead of repeating work or submitting a duplicate
external job. Provider operators that advertise a ``durable`` parameter are
built on the API described here.
+
Data persisted via task state store is accessed through the task context via
``context["task_state_store"]`` and exposes the synchronous methods ``get``,
``set``, ``delete``, and ``clear``, plus the async counterparts ``aget``,
``aset``, ``adelete``, and ``aclear`` for use inside ``async`` tasks.