o-nikolas commented on code in PR #67608:
URL: https://github.com/apache/airflow/pull/67608#discussion_r3314298588
##########
airflow-core/docs/core-concepts/multi-team.rst:
##########
@@ -503,6 +504,61 @@ When Multi-Team mode is enabled, the scheduler performs
additional logic to dete
teams share the same metadata database and common Airflow infrastructure.
For absolutely strict security
requirements, consider separate Airflow deployments.
+.. _multi-team-triggerer:
+
+Team-scoped Triggerer
+---------------------
+
+When Multi-Team mode is enabled, the triggerer can be scoped to a specific
team using the ``--team-name`` CLI argument. A team-scoped triggerer only
processes deferred tasks (triggers) belonging to that team's Dags. This allows
teams to run isolated triggerer instances with independent capacity and failure
domains.
+
+Configuration
+^^^^^^^^^^^^^
+
+Start a team-scoped triggerer by passing ``--team-name``:
+
+.. code-block:: bash
+
+ # Triggerer for team_a only
+ airflow triggerer --team-name team_a
+
+ # Triggerer for team_b only
+ airflow triggerer --team-name team_b
+
+ # Global triggerer — processes triggers from Dags with no team association
+ airflow triggerer
+
+Startup validation ensures that ``core.multi_team`` is enabled and the
specified team exists in the database.
+
+Behavior
+^^^^^^^^
+
+- **Team-scoped triggerer** (``--team-name team_x``): Only picks up triggers
whose originating Dag belongs to a bundle mapped to ``team_x``.
+- **Global triggerer** (no ``--team-name``): Only picks up triggers whose
originating Dag belongs to a bundle with no team assignment.
+- **Multi-Team disabled** (``core.multi_team = False``): ``--team-name`` is
rejected. No filtering occurs and all triggerers process all triggers (existing
behavior).
+
+Interaction with ``--queues``
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Team filtering and queue filtering are orthogonal — they combine as AND
conditions. For example, a triggerer started with ``--team-name team_a --queues
q1,q2`` only processes triggers that both belong to ``team_a`` and were
deferred from tasks in queues ``q1`` or ``q2``.
+
+.. note::
+
+ If you use both ``--team-name`` and ``--queues``, ensure that each
combination of team and queue has at least one triggerer running, or triggers
matching that combination will remain unassigned until one starts.
Review Comment:
This is true for each individually as well right?
##########
airflow-core/docs/core-concepts/multi-team.rst:
##########
@@ -503,6 +504,61 @@ When Multi-Team mode is enabled, the scheduler performs
additional logic to dete
teams share the same metadata database and common Airflow infrastructure.
For absolutely strict security
requirements, consider separate Airflow deployments.
+.. _multi-team-triggerer:
+
+Team-scoped Triggerer
+---------------------
+
+When Multi-Team mode is enabled, the triggerer can be scoped to a specific
team using the ``--team-name`` CLI argument. A team-scoped triggerer only
processes deferred tasks (triggers) belonging to that team's Dags. This allows
teams to run isolated triggerer instances with independent capacity and failure
domains.
Review Comment:
Should be? Otherwise team triggers aren't going to run, right?
```suggestion
When Multi-Team mode is enabled, a triggerer should be scoped to each
specific team using the ``--team-name`` CLI argument. A team-scoped triggerer
processes deferred tasks (triggers) belonging to that team's Dags. This allows
teams to run isolated triggerer instances with independent capacity and failure
domains.
```
##########
airflow-core/docs/core-concepts/multi-team.rst:
##########
@@ -503,6 +504,61 @@ When Multi-Team mode is enabled, the scheduler performs
additional logic to dete
teams share the same metadata database and common Airflow infrastructure.
For absolutely strict security
requirements, consider separate Airflow deployments.
+.. _multi-team-triggerer:
+
+Team-scoped Triggerer
+---------------------
+
+When Multi-Team mode is enabled, the triggerer can be scoped to a specific
team using the ``--team-name`` CLI argument. A team-scoped triggerer only
processes deferred tasks (triggers) belonging to that team's Dags. This allows
teams to run isolated triggerer instances with independent capacity and failure
domains.
+
+Configuration
+^^^^^^^^^^^^^
+
+Start a team-scoped triggerer by passing ``--team-name``:
+
+.. code-block:: bash
+
+ # Triggerer for team_a only
+ airflow triggerer --team-name team_a
+
+ # Triggerer for team_b only
+ airflow triggerer --team-name team_b
+
+ # Global triggerer — processes triggers from Dags with no team association
+ airflow triggerer
+
+Startup validation ensures that ``core.multi_team`` is enabled and the
specified team exists in the database.
+
+Behavior
+^^^^^^^^
+
+- **Team-scoped triggerer** (``--team-name team_x``): Only picks up triggers
whose originating Dag belongs to a bundle mapped to ``team_x``.
+- **Global triggerer** (no ``--team-name``): Only picks up triggers whose
originating Dag belongs to a bundle with no team assignment.
+- **Multi-Team disabled** (``core.multi_team = False``): ``--team-name`` is
rejected. No filtering occurs and all triggerers process all triggers (existing
behavior).
+
+Interaction with ``--queues``
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Team filtering and queue filtering are orthogonal — they combine as AND
conditions. For example, a triggerer started with ``--team-name team_a --queues
q1,q2`` only processes triggers that both belong to ``team_a`` and were
deferred from tasks in queues ``q1`` or ``q2``.
+
+.. note::
+
+ If you use both ``--team-name`` and ``--queues``, ensure that each
combination of team and queue has at least one triggerer running, or triggers
matching that combination will remain unassigned until one starts.
+
+Example Deployment
+^^^^^^^^^^^^^^^^^^
+
+A deployment with two teams and a shared set of Dags with no team:
+
+.. code-block:: bash
+
+ # Team-scoped triggerers
+ airflow triggerer --team-name team_a
+ airflow triggerer --team-name team_b
+
+ # Global triggerer for Dags without a team
+ airflow triggerer
+
Review Comment:
This feels superfluous to me, I'd just drop it.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]