Skip to content

Add fat-catTW's March to October contribution report for apache-airflow - #48

Open
fat-catTW wants to merge 2 commits into
opensource4you:mainfrom
fat-catTW:docs/fat-cattw-contribution-report
Open

fat-catTW wants to merge 2 commits into
opensource4you:mainfrom
fat-catTW:docs/fat-cattw-contribution-report

Conversation

@fat-catTW

Copy link
Copy Markdown

Apache Airflow Contribution Report by fat-catTW(VincentHsiao) (2026-03 ~ 2026-10/14)

總覽

  • PR: 24 Merged(清單) + 5 Open
    • 其中 15 個 PR 曾被加上回補目標標籤(v3-3-test 12、v3-2-test 2、v3-1-test 2、airflow-ctl/v0-1-test 1)
  • Code Review(清單): 53
  • Dev discussion: 2
PR 分類 數量
Providers(AWS、Google、Microsoft、Neo4j、Teradata、Yandex、Qdrant) 14
Airflow Core(DAG Bundle、Operators、Executor、Params、Deadline、權限) 6
API server / Execution API 5
UI(DAG Runs、Task Group、i18n) 4

貢獻主軸

Provider Template Field/Jinja Rendering、Execution/API 的資料與權限安全,以及 UI 可用性;並完成 53 次 Code Review,協助強化 API、Scheduler 與 Provider 功能的正確性與測試。

Month: October 2026 (截止到 10/14)

Summary:

  • PR: 0
  • Code Review: 27
  • Dev List: 2

Code Review

Dev List


Month: September 2026

Summary:

  • PR: 3 Merged + 2 Open
  • Code Review: 20

PR

  • Add missing Amazon provider unit tests- #73169: Providers(AWS)|測試 (OPEN)

    • AWS Executor:驗證 BaseConfigKeys 的迭代行為。
    • AWS Batch Executor:驗證不支援的 submit_job_kwargs 參數是否正確觸發錯誤。
  • Allow API clients to refresh Dag bundles- #72715: API server / Execution API|新功能 backport: airflow-ctl/v0-1-test backport: v3-3-test (OPEN)

    • 問題/影響:使用者原本只能等待排程解析,無法在部署後主動加速 DAG 更新。
    • 解法:新增 REST API 觸發 DAG Bundle 刷新,透過既有的 Priority Parsing 機制支援多個 DAG Processors 的最終一致性。
  • Add missing Amazon utility tests- #72985: Providers(AWS)|測試

    • 補上 Amazon provider 裡 RDS / SageMaker utility enum 的測試,並把已覆蓋的檔案從 OVERLOOKED_TESTS 清單移除。
  • Improve deadline diagnostics for null DagRun fields- #71767: Airflow Core(Deadline)|Bug 修正 backport: v3-3-test

    改善 Airflow deadline alert 在處理 DagRun-based reference 時的診斷訊息。

    • 當 deadline reference 需要讀取 logical_date 或 queued_at,但對應的 DagRun 欄位是 None 時,系統會跳過建立 deadline alert。這個 PR 讓 warning log 明確指出 dag_id、run_id、deadline_alert_id、reference type,以及是哪個 DagRun 欄位缺值,方便後續除錯。
  • Fix XCom slice endpoint for crossed bounds- #72584: API server / Execution API|Bug 修正

    • 問題/影響:mapped XCom slice 的起訖邊界交錯時,可能產生負數 SQL LIMIT,造成不正確的資料庫查詢。
    • 解法:此情境改為回傳空結果,使 API 行為符合 Python slicing。

Code Review


Month: August 2026

Summary:

  • PR: 5 Merged + 3 Open
  • Code Review: 6

PR

  • Fix Dag run filtering for null start dates- #71654: API server / Execution API|Bug 修正 (OPEN)

    • 修正 Airflow DAG Run API 的日期篩選邏輯,避免已結束但 start_date=NULL 的 DAG Runs 被錯誤包含在查詢結果中,提升 API 篩選的正確性。
  • Limit Glue retry task UUID scan- #71546: Providers(AWS)|效能 (OPEN)

    • 優化 AWS GlueJobOperator 的重試機制,將歷史 Job Runs 搜尋限制在最多 500 筆,避免無限制查詢造成效能問題。同時改善 AWS 錯誤處理與日誌紀錄,提升系統可靠性。
  • Store executor callback DagRun references in the database- #71214: Airflow Core(Executor)|重構 (OPEN)

    • 問題/影響:Callback 與 DagRun 的關聯原本依賴 Payload,資料關聯較脆弱且不易維護。
    • 解法:新增 dagrun_id 外鍵,將關聯直接儲存在資料庫,提升資料一致性與可維護性。
  • Document config-backed enum Dag Params- #71180: Airflow Core(Params)|文件

    • 補充 Airflow Params 文件與範例,說明 DAG author 可以在 DAG parse time 從外部 INI config 讀取選項,並把結果放進 Param 的 JSON Schema enum。
    • 這讓 Trigger DAG form 可以直接使用 serialized DAG Params 顯示 dropdown,不需要在開啟表單時呼叫 dynamic choice provider。
  • Fix Keycloak multi-team permission repair- #71614: Airflow Core(權限)|安全性

    • 問題/影響:舊版 global permissions 過寬,一般 team 使用者可能透過 REST API 讀取其他 team 的 DAGs、Variables 或 Connections。
    • 解法:修正 Keycloak multi-team 權限,並讓 create-team 可修復既有安裝的 permissions。
  • Support certificate auth for Microsoft Graph filesystem- #71362: Providers(Microsoft)|新功能

    • 為 Microsoft Graph Filesystem 新增憑證認證(Certificate-based Authentication),解決原本僅支援 Client Secret 的限制。
    • 支援透過 certificate_path 或 certificate_data 取得 Access Token,讓無法使用 Client Secret 的環境也能透過 ObjectStoragePath 存取 Microsoft Graph。
    • 保留既有認證方式,並補充單元測試與文件。
  • Register Stackdriver remote task logging handler- #70549: Providers(Google)|新功能

    • 將 Google Cloud Stackdriver Remote Logging 整合至 Airflow 新的 Provider-based Remote Logging 機制,減少對舊有 Logging Configuration 的依賴。
    • 新增 StackdriverRemoteLogIO.from_config(),支援從 Airflow 設定自動建立 Logging Handler,並透過 stackdriver:// scheme 進行註冊與查找。
    • 補充單元測試,確保設定解析、Handler 註冊與錯誤處理正常運作。
  • Delay BigQueryToMsSqlOperator source table parsing- #70493: Providers(Google)|Bug 修正 backport: v3-3-test

    • 修正 BigQueryToMsSqlOperator 在初始化階段過早解析來源資料表名稱,導致 Jinja Template 尚未渲染就觸發解析錯誤的問題。
    • 將解析邏輯延後至 execute(),確保使用者能透過 Jinja Template 動態指定 BigQuery 來源資料表。
    • 移除 validate_operators_init 例外設定,並新增 Regression Tests 驗證修正。

Code Review


Month: July 2026

Summary:

  • PR: 10 Merged

PR:

  • Fix BashOperator script detection after templating- #70369: Airflow Core(Operators)|Bug 修正 backport: v3-3-test

    • 修正 BashOperator 在 init() 階段過早判斷 Template Field 的問題,避免 Jinja Template 尚未渲染就選擇錯誤的指令執行方式。
    • 將判斷邏輯移至 execute(),確保正確識別 Inline Command 與 Shell Script,並移除 CI 檢查的例外項目、補充 Regression Test。
  • Drop redundant BigQueryInsertJobOperator job ID snapshot in init- #70494: Providers(Google)|重構 backport: v3-3-test

    • 移除 BigQueryInsertJobOperator 在 init() 階段對 job_id 進行的冗餘儲存,避免不必要地讀取尚未渲染的 Template Field。
    • 保留 execute() 階段原有的 Job ID 處理邏輯,確保既有行為不變,並移除 CI 檢查例外項目、補充單元測試。
  • Move AwsToAwsBaseOperator fallback out of init- #70445: Providers(AWS)|重構 backport: v3-3-test

    • 重構 AwsToAwsBaseOperator 的 Destination Connection Fallback Logic,避免在 init() 階段對 Template Field 進行額外處理。
    • 改用 @Property 動態處理預設連線,保留未指定目的地連線時使用來源連線的行為,並正確支援明確傳入 None。
    • 移除 validate_operators_init 例外項目,並新增單元測試驗證連線設定行為。
  • Allow templated fields in AppFlow operators- #70440: Providers(AWS)|Bug 修正 backport: v3-3-test

    • 修正 AWS AppFlow Operators 在 init() 階段過早驗證 source、filter_date 等 Template Fields,導致 Jinja Template 無法正常使用的問題。
    • 將參數驗證邏輯移至 execute(),確保在 Template Rendering 完成後才進行驗證,並統一多個 AppFlow Operators 的驗證方式。
    • 移除 validate_operators_init 例外項目,新增測試驗證動態參數能正常執行。
  • Fix EcsRunTaskOperator deferred-logs region and template field init- #70464: Providers(AWS)|Bug 修正 backport: v3-3-test

    • 將 EcsRunTaskOperator 的 Template Field 處理邏輯移出 init(),避免在 Jinja Template 渲染前進行參數判斷。
    • 修正 Deferrable Mode 下,Task 執行完成後使用錯誤 AWS Region 查詢 CloudWatch Logs 的問題,新增 resolve_awslogs_region() 統一處理 Log Region 的選擇。
    • 移除 validate_operators_init 例外項目,並補充單元測試驗證日誌讀取與參數處理。
  • Fix Teradata transfer template field initialization- #70392: Providers(Teradata)|Bug 修正 backport: v3-3-test

    • 將 TeradataToTeradataOperator 的 sql_params 預設值處理延後至 execute(),避免在 Jinja Template 渲染前修改參數。
    • 移除 validate_operators_init 例外項目,並新增單元測試驗證預設參數行為。
  • Read fresh Dag bundle state during refresh- #69830: Airflow Core(DAG Bundle)|Bug 修正 backport: v3-3-test

    • 問題/影響:多個 DAG Processors 運作時,SQLAlchemy Identity Map 可能讀到過期 DAG Bundle 狀態,延後刷新結果的可見性。
    • 解法:直接查詢 last_refreshed 與 version 欄位,避開 ORM 快取,確保 Processor 取得最新資料庫狀態。
    • 驗證:新增 Regression Test,覆蓋跨 Session 更新。
  • Fix Neo4jOperator templated query validation- #70348: Providers(Neo4j)|Bug 修正 backport: v3-3-test

    • 將 Neo4jOperator 的 Cypher Query 驗證邏輯移至 execute(),確保 Jinja Template 渲染後才進行驗證。
    • 調整已棄用的 sql 參數處理方式,保留 Template Rendering 支援,並移除 validate_operators_init 例外項目、補充單元測試。
  • Route SQLAlchemyError through global exception handler- #69267: API server / Execution API|重構 backport: v3-3-test

    • 將 Execution API 的 SQLAlchemyError 處理統一交由 FastAPI 全域 Exception Handler,減少重複程式碼並確保錯誤回應一致。
    • 保留 DataError 回傳 HTTP 422、一般資料庫錯誤回傳 HTTP 500 的行為,並新增 Regression Tests 驗證錯誤處理流程。
    • 印象最深的 PR,因為一度上七月好棒棒PR,但後面 maintainer 發現 Script 有誤重跑後就沒上好棒棒PR了。 Sad。
  • Remove stale TODO comments for XCom map_index handling- #69369: API server / Execution API|重構

    • 確認 XCom 的 map_index 傳遞方式符合 Execution API 與 OpenAPI 規範,移除已不適用的 TODO 註解,改善程式碼可維護性。

Month: April 2026

Summary:

  • PR: 2 Merged

PR

  • Add dag runs filters (Consuming Asset) - #63624: UI(DAG Runs)|新功能 backport: v3-1-test backport: v3-2-test

    • 為 DAG Runs 新增 Consuming Asset 篩選功能,支援透過 Asset 名稱或 URI 進行模糊搜尋,方便使用者查找消費特定 Asset 的 DAG Runs。
    • 整合 FastAPI Backend、OpenAPI 與前端篩選介面,並新增單元測試驗證搜尋功能。
  • open task group when navigating via group name; preserve arrow toggl…- #64284: UI(Task Group)|新功能 backport: v3-2-test

    • 改善 Task Group 的互動方式,讓使用者能透過點擊 Group 名稱進行導航與群組切換,減少對小型展開箭頭的依賴,提升操作便利性。

Month: March 2026

Summary:

  • PR: 4 Merged

PR:

  • Add dag runs filters (bundleVersion)- #62810: UI(DAG Runs)|新功能 backport: v3-1-test

    • 為 DAG Runs 新增 bundle_version 篩選功能,讓使用者能依據 DAG Bundle 版本查詢執行紀錄,提升版本追蹤與除錯便利性。
    • 整合 DAG Processor 的版本資料儲存、FastAPI、OpenAPI 與前端篩選介面,並新增 API 測試。
  • Migrate yandex connection UI metadata to YAML- #63506: Providers(Yandex)|重構

    • 將 Yandex Cloud Connection 的 UI Metadata 整合至 provider.yaml,定義專屬認證及連線欄位,並隱藏不適用的預設欄位。
    • 同步更新 Provider Info,統一設定管理方式並改善 Connection 表單的使用體驗。
  • Migrate Qdrant connection UI metadata to YAML- #62644: Providers(Qdrant)|重構

    • 將 Qdrant Connection 的 UI Metadata 遷移至 provider.yaml,統一定義 URL、gRPC、HTTPS 等連線欄位。
    • 調整 Connection 表單顯示方式,隱藏不適用欄位並將 Password 標示為 API Key,改善設定管理與使用體驗。
  • feat(i18n): Complete zh-TW translations - Add 10 missing keys- #62652: UI(i18n)|翻譯

    • 補齊 Airflow UI 中 DAG Runs、Asset Events 與 Version Indicator 等功能缺少的繁體中文翻譯,使當時的 zh-TW 翻譯覆蓋率達到 100%(786/786),並通過翻譯完整性檢查

@fat-catTW

Copy link
Copy Markdown
Author

cc @jason810496 @Lee-W Thanks! :D

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant