wjddn279 opened a new pull request, #61646:
URL: https://github.com/apache/airflow/pull/61646

   ## Config isolation
   No major issues here. Following the same pattern as other executors 
(LocalExecutor, CeleryExecutor), all direct reads from the global conf have 
been replaced with self.conf, which is a team-aware ExecutorConf instance 
created in the base executor. This ensures that each team's executor reads 
team-specific configuration values (e.g., heartbeat interval, purge intervals) 
without affecting other teams.
   
   ## Multi-instance isolation
   Determining the right approach for isolating resources between teams in 
EdgeExecutor was not straightforward. Looking at the CeleryExecutor as a 
reference, it achieves full team isolation by assigning each team a separate 
broker and separate Celery worker pool. Based on this, I concluded that edge 
workers should also be partitioned per team.
   
   However, unlike CeleryExecutor which uses external brokers, EdgeExecutor 
manages all persistence through shared DB tables. This means team-level 
isolation needs to happen at the query level. Specifically, the maintenance 
operations (_purge_jobs, _update_orphaned_jobs, _check_worker_liveness) were 
previously operating on all rows in these tables indiscriminately. In a 
multi-team setup where each team may have different configuration values, this 
could lead to one team's executor incorrectly purging another team's jobs or 
marking another team's workers as dead.
   
   To address this, I introduced _managed_queues -- a per-instance set that 
tracks which queues this executor is responsible for. It is initialized with 
the default_queue from the (possibly team-specific) config and grows as 
queue_workload() is called. All maintenance queries now filter by WHERE queue 
IN (_managed_queues), and worker liveness checks skip workers whose registered 
queues do not overlap with the executor's managed queues.
   
   This approach assumes **that each team uses a distinct set of queues and 
that different teams do not share the same queue names**.
   
   ## Questions
   1. Are queues guaranteed to be unique across teams? For example, could 
team_1 and team_2 both use a queue named "default"? If so, the current 
queue-based isolation would break down.
   2. If queue uniqueness across teams is intended, is there a mechanism to 
enforce it? The queue parameter is set by users at the DAG/task level, so there 
is nothing currently preventing two teams from accidentally (or intentionally) 
using the same queue name.
   3. Alternatively, would it be more appropriate to add a team_name column to 
EdgeJobModel / EdgeWorkerModel for explicit team-level filtering, rather than 
relying on queue-based inference?
   
   
   <!--
   Thank you for contributing!
   
   Please provide above a brief description of the changes made in this pull 
request.
   Write a good git commit message following this guide: 
http://chris.beams.io/posts/git-commit/
   
   Please make sure that your code changes are covered with tests.
   And in case of new features or big changes remember to adjust the 
documentation.
   
   Feel free to ping (in general) for the review if you do not see reaction for 
a few days
   (72 Hours is the minimum reaction time you can expect from volunteers) - we 
sometimes miss notifications.
   
   In case of an existing issue, reference it using one of the following:
   
   * closes: #ISSUE
   * related: #ISSUE
   -->
   
   ---
   
   ##### Was generative AI tooling used to co-author this PR?
   
   <!--
   If generative AI tooling has been used in the process of authoring this PR, 
please
   change below checkbox to `[X]` followed by the name of the tool, uncomment 
the "Generated-by".
   -->
   
   - [ ] Yes (please specify the tool below)
   
   <!--
   Generated-by: [Tool Name] following [the 
guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#gen-ai-assisted-contributions)
   -->
   
   ---
   
   * Read the **[Pull Request 
Guidelines](https://github.com/apache/airflow/blob/main/contributing-docs/05_pull_requests.rst#pull-request-guidelines)**
 for more information. Note: commit author/co-author name and email in commits 
become permanently public when merged.
   * For fundamental code changes, an Airflow Improvement Proposal 
([AIP](https://cwiki.apache.org/confluence/display/AIRFLOW/Airflow+Improvement+Proposals))
 is needed.
   * When adding dependency, check compliance with the [ASF 3rd Party License 
Policy](https://www.apache.org/legal/resolved.html#category-x).
   * For significant user-facing changes create newsfragment: 
`{pr_number}.significant.rst` or `{issue_number}.significant.rst`, in 
[airflow-core/newsfragments](https://github.com/apache/airflow/tree/main/airflow-core/newsfragments).
   


-- 
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]

Reply via email to