This is an automated email from the ASF dual-hosted git repository.

potiuk 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 485107f1340 Fix docs referring to a non-existent MetastoreStateBackend 
class (#73080)
485107f1340 is described below

commit 485107f1340a167e7ae68cfed8667c9f7cfb4e0d
Author: Shahar Epstein <[email protected]>
AuthorDate: Sun Sep 13 18:05:45 2026 +0300

    Fix docs referring to a non-existent MetastoreStateBackend class (#73080)
    
    The default state store backend class is named MetastoreBackend. Readers
    following the docs landed on a name that does not exist, and the provider
    docs cross-reference to it could not resolve.
---
 AGENTS.md                                                               | 2 +-
 .../unit/api_fastapi/core_api/routes/public/test_asset_state_store.py   | 2 +-
 .../unit/api_fastapi/core_api/routes/public/test_task_state_store.py    | 2 +-
 dev/skill-evals/last-eval-hash.txt                                      | 2 +-
 providers/common/io/docs/state_store_backend.rst                        | 2 +-
 shared/state/src/airflow_shared/state/__init__.py                       | 2 +-
 6 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
index f1117aa1711..1b4187e72f5 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -140,7 +140,7 @@ reported as such are described in "What is NOT considered a 
security vulnerabili
 - Imports at top of file. Valid exceptions: circular imports, lazy loading for 
worker isolation, `TYPE_CHECKING` blocks.
 - Guard heavy type-only imports (e.g., `kubernetes.client`) with 
`TYPE_CHECKING` in multi-process code paths.
 - Define dedicated exception classes or use existing exceptions such as 
`ValueError` instead of raising the broad `AirflowException` directly. Each 
error case should have a specific exception type that conveys what went wrong. 
**Never add new direct `raise AirflowException(...)` usages — the community is 
actively reducing them, not adding more, and the 
`check-no-new-airflow-exceptions` prek hook enforces this across 
`airflow-core`, `airflow-ctl`, `task-sdk`, `providers`, and `shared`.**  [...]
-- Translate domain-layer exceptions to `HTTPException` at FastAPI route 
boundaries. In `airflow-core/src/airflow/core_api/` route handlers, catch 
errors raised by domain code (e.g., `ValueError` from 
`airflow.state.metastore.MetastoreStateBackend` for a missing row or invalid 
input) and re-raise as `HTTPException` with the right status (`404` for 
not-found, `400` for invalid input). Otherwise they propagate as `500 Internal 
Server Error`, leaking internals and misleading clients.
+- Translate domain-layer exceptions to `HTTPException` at FastAPI route 
boundaries. In `airflow-core/src/airflow/api_fastapi/core_api/` route handlers, 
catch errors raised by domain code (e.g., `ValueError` from 
`airflow.state.metastore.MetastoreBackend` for a missing row or invalid input) 
and re-raise as `HTTPException` with the right status (`404` for not-found, 
`400` for invalid input). Otherwise they propagate as `500 Internal Server 
Error`, leaking internals and misleading clients.
 - Bulk `DELETE`/`UPDATE` in the scheduler loop or any synchronous interval 
task (e.g. `call_regular_interval` callbacks) must be batched with `LIMIT` and 
committed between batches — never issue a single unbounded bulk write against a 
user-driven table. Unbounded bulk writes hold row locks for the entire 
transaction (blocking concurrent writers) and stall the scheduler main loop. 
Filter columns used by the cleanup must be indexed. Follow the batching pattern 
in `airflow-core/src/airflow/u [...]
 - Name functions and methods with action verbs: `get_`, `extract_`, `find_`, 
`compute_`, `build_`, etc. Avoid noun-only names like `_serialize_keys` or 
`_base_names` — they read as attributes, not callables. Predicates (`is_`, 
`has_`) are the one exception.
 - Apache License header on all new files (prek enforces this).
diff --git 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_asset_state_store.py
 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_asset_state_store.py
index 185069c51be..cfe02e78ea0 100644
--- 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_asset_state_store.py
+++ 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_asset_state_store.py
@@ -367,7 +367,7 @@ class TestClearAssetState(TestAssetStateEndpoint):
 
 
 class TestRoutesNeverCallCustomBackend(TestAssetStateEndpoint):
-    """Tests to validate that core API routes must use MetastoreStateBackend 
directly."""
+    """Tests to validate that core API routes must use MetastoreBackend 
directly."""
 
     @pytest.mark.parametrize(
         ("method", "path_suffix", "kwargs"),
diff --git 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_state_store.py
 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_state_store.py
index ac117b31d04..1fe16ec45b6 100644
--- 
a/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_state_store.py
+++ 
b/airflow-core/tests/unit/api_fastapi/core_api/routes/public/test_task_state_store.py
@@ -477,7 +477,7 @@ class TestClearTaskState(TestTaskStateEndpoint):
 
 
 class TestRoutesNeverCallCustomBackend(TestTaskStateEndpoint):
-    """Tests to validate that core API routes must use MetastoreStateBackend 
directly."""
+    """Tests to validate that core API routes must use MetastoreBackend 
directly."""
 
     @pytest.mark.parametrize(
         ("method", "path", "kwargs"),
diff --git a/dev/skill-evals/last-eval-hash.txt 
b/dev/skill-evals/last-eval-hash.txt
index 18f0266aefb..4261daf7f9c 100644
--- a/dev/skill-evals/last-eval-hash.txt
+++ b/dev/skill-evals/last-eval-hash.txt
@@ -1,3 +1,3 @@
 # Generated by dev/skill-evals/eval.py — do not edit or resolve conflicts by 
hand.
 # Run `prek run run-skill-eval --hook-stage manual --all-files` to regenerate.
-5e870faf18aa45c03d9ad50daa57624d9814a5e3bf9e2cfbf1b5c3f387dd9fc0
+e1c1913cdf9483da0fd4d41b04c3c8b079f313860e22a4c3fe3945ddee15e0f1
diff --git a/providers/common/io/docs/state_store_backend.rst 
b/providers/common/io/docs/state_store_backend.rst
index b61134ef95d..9f56a2a4a99 100644
--- a/providers/common/io/docs/state_store_backend.rst
+++ b/providers/common/io/docs/state_store_backend.rst
@@ -18,7 +18,7 @@
 Object Storage State Store Backend
 ===================================
 
-The default state store backend is 
:class:`~airflow.state.metastore.MetastoreStateBackend`, which persists
+The default state store backend is 
:class:`~airflow.state.metastore.MetastoreBackend`, which persists
 task and asset state in the Airflow metadata database via the API Server's 
Execution API. For larger values,
 you may want to store state on object storage directly from the task instead.
 
diff --git a/shared/state/src/airflow_shared/state/__init__.py 
b/shared/state/src/airflow_shared/state/__init__.py
index e2c094d8481..37f289aedfd 100644
--- a/shared/state/src/airflow_shared/state/__init__.py
+++ b/shared/state/src/airflow_shared/state/__init__.py
@@ -127,7 +127,7 @@ class BaseStoreBackend(ABC):
 
     **The ``session`` parameter on ``get``, ``set``, ``delete``, and 
``clear``:**
 
-    The default ``MetastoreStateBackend`` passes a SQLAlchemy ``Session`` 
through
+    The default ``MetastoreBackend`` passes a SQLAlchemy ``Session`` through
     these methods. Custom backends that do not use SQLAlchemy should accept 
``session`` as a
     keyword argument and ignore it.
     """

Reply via email to