Skip to content

Conversation

@jscheffl
Copy link
Contributor

@jscheffl jscheffl commented Nov 24, 2024

Follow-up PR as incremental part of #44311

Note: Only the last commit is the relevant change, the first commit is from #44311

To prepare EdgeWorker to be independent of AIP-44 Internal API, this PR is the third step in adding/migrating to FastAPI. The calls to "Logs" API to (1) get log path and (2) push log chunks are now real REST API calls, not using internal API.

I would separate the other internal API calls to follow-up PRs as this is already quite large. Especially cause for ongoing Airflow 2.10 Connexion API + Swagger manually need to be generated whereas the main workstream for Airflow 3 uses FastAPI.

@jscheffl jscheffl added area:providers area:API Airflow's REST/HTTP API AIP-69 Edge Executor provider:edge Edge Executor / Worker (AIP-69) / edge3 labels Nov 24, 2024
@jscheffl jscheffl requested a review from Copilot November 24, 2024 22:40
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 8 out of 23 changed files in this pull request and generated no suggestions.

Files not reviewed (15)
  • docs/spelling_wordlist.txt: Language not supported
  • providers/src/airflow/providers/edge/CHANGELOG.rst: Language not supported
  • providers/tests/edge/models/test_edge_logs.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/cli/api_client.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/cli/edge_command.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/models/edge_logs.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/models/edge_worker.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/provider.yaml: Evaluated as low risk
  • providers/src/airflow/providers/edge/executors/edge_executor.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/worker_api/routes/rpc_api.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/worker_api/app.py: Evaluated as low risk
  • providers/tests/edge/cli/test_edge_command.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/init.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/worker_api/routes/_v2_compat.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/worker_api/routes/logs.py: Evaluated as low risk
Comments skipped due to low confidence (4)

providers/src/airflow/providers/edge/worker_api/routes/_v2_routes.py:98

  • [nitpick] The comment should be more descriptive to explain why a string is used for map_index and how it should be converted to an integer.
map_index: str,  # Note: Connexion can not have negative numbers in path parameters, use string therefore

providers/src/airflow/providers/edge/worker_api/routes/_v2_routes.py:126

  • Add validation to ensure log_chunk_time is a valid datetime string.
log_chunk_time=body["log_chunk_time"]

providers/src/airflow/providers/edge/worker_api/routes/worker.py:60

  • The error message could be more descriptive to help the user understand why their request was rejected.
raise HTTPException(status.HTTP_400_BAD_REQUEST, f"Edge Worker runs on Airflow {airflow_on_worker} and the core runs on {airflow_version}. Rejecting access due to difference.")

providers/src/airflow/providers/edge/worker_api/routes/worker.py:159

  • The Stats.incr method is called twice with different parameters. This might be redundant and could be optimized.
Stats.incr(f"edge_worker.heartbeat_count.{worker_name}", 1, 1)
Stats.incr("edge_worker.heartbeat_count", 1, 1, tags={"worker_name": worker_name})

@jscheffl jscheffl changed the title Migrate Edge calls for Worker to FastAPI part 1 - Logs routes Migrate Edge calls for Worker to FastAPI part 2 - Logs routes Nov 24, 2024
@jscheffl jscheffl force-pushed the feature/separate-edge-api-from-internal-api-2 branch 2 times, most recently from 8af06e0 to 74f099c Compare November 27, 2024 22:23
@jscheffl jscheffl requested a review from kaxil November 27, 2024 22:38
@jscheffl jscheffl force-pushed the feature/separate-edge-api-from-internal-api-2 branch 2 times, most recently from a4e286d to ba54d4c Compare November 28, 2024 23:06
@jscheffl jscheffl force-pushed the feature/separate-edge-api-from-internal-api-2 branch from ba54d4c to 7ff228f Compare November 30, 2024 17:00
@jscheffl jscheffl force-pushed the feature/separate-edge-api-from-internal-api-2 branch from 1fd46a2 to 2311429 Compare November 30, 2024 21:48
@potiuk
Copy link
Member

potiuk commented Nov 30, 2024

Re-reviewed... Looks good :)

@potiuk potiuk requested a review from Copilot November 30, 2024 22:00
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot reviewed 5 out of 14 changed files in this pull request and generated 2 suggestions.

Files not reviewed (9)
  • providers/src/airflow/providers/edge/CHANGELOG.rst: Language not supported
  • providers/src/airflow/providers/edge/openapi/edge_worker_api_v1.yaml: Language not supported
  • providers/tests/edge/models/test_edge_logs.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/init.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/cli/edge_command.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/worker_api/app.py: Evaluated as low risk
  • providers/tests/edge/cli/test_edge_command.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/models/edge_logs.py: Evaluated as low risk
  • providers/src/airflow/providers/edge/provider.yaml: Evaluated as low risk

@potiuk potiuk merged commit 1b67b43 into apache:main Nov 30, 2024
65 checks passed
got686-yandex pushed a commit to got686-yandex/airflow that referenced this pull request Jan 30, 2025
…#44330)

* Migrate Edge calls for Worker to FastAPI 2 - Logs route

* Review feedback, use SessionDep from FastAPI

* Fix pytest
@jscheffl jscheffl deleted the feature/separate-edge-api-from-internal-api-2 branch October 5, 2025 07:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AIP-69 Edge Executor area:API Airflow's REST/HTTP API area:providers kind:documentation provider:edge Edge Executor / Worker (AIP-69) / edge3

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants