Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
d2bd2b2
fix: ruff concerns
chirodip98 Jan 3, 2026
3770fe0
chore: review comments addressed
chirodip98 Jan 5, 2026
395bb5f
chore: failing imports fixed
chirodip98 Jan 5, 2026
16d21ba
Add validation for pool names to prevent InvalidStatsNameException (#…
kalluripradeep Jan 3, 2026
1e7d999
Source amazon provider to use airflow.sdk.configuration.conf (#59979)
sunank200 Jan 3, 2026
4d89238
Updated conf import for std,es,os,ms providers (#60030)
justinpakzad Jan 3, 2026
cf57677
Added missing comma to bq empty dataset operator docstring (#60066)
justinpakzad Jan 4, 2026
e6bf870
Remove deprecated Query usage and update to SQLAlchemy2.0 style for t…
Srabasti Jan 4, 2026
edf7587
Source odbc provider to use airflow.sdk.configuration.conf (#59995)
sunank200 Jan 4, 2026
b6ad68b
Change ubuntu img ver in k8s tests (#60085)
Miretpl Jan 4, 2026
5f101dd
Made sqlalchemy dependency optional for amazon provider (#59941)
justinpakzad Jan 4, 2026
57c23fb
Add new arguments to db_clean to explicitly include or exclude DAGs (…
mattusifer Jan 4, 2026
85c82ef
SQLA2 public tests (test_backfills, test_connections, test_pools) (#5…
steveahnahn Jan 4, 2026
1c2ea5e
Limit deltalake again to 1.3.0 due to missing ARM .whl files (#60098)
potiuk Jan 4, 2026
b9c7f37
Fixed CloudSqlDatabaseHook error message for missing host (#60089)
justinpakzad Jan 4, 2026
bf213be
issue-60000-http: Update conf imports for http provider (#60090)
jroachgolf84 Jan 4, 2026
785fe51
fix(providers/winrm): add connection-types to provider configuration …
ftakelait Jan 4, 2026
22feb6d
Update INTHEWILD.md (#60095)
uplsh580 Jan 4, 2026
dbf348d
Docs: fix typo in documentation publishing section (#60091)
shubhamkoti Jan 4, 2026
7ef651d
Assorted SQLA2/Mypy fixes (#60094)
Dev-iL Jan 4, 2026
515f6c2
docs: database support (#60103)
raphaelauv Jan 4, 2026
8c6ea0a
refactor: Improved assertions (#60106)
dabla Jan 4, 2026
3c562be
fix: handling timezone import issues
chirodip98 Jan 5, 2026
9c1cab5
fix: handling timezone import issues
chirodip98 Jan 5, 2026
a5beaaf
fix: exception block refactored
chirodip98 Jan 5, 2026
9cf2e99
Move find_path_from_directory to shared module_loading library (#60114)
amoghrajesh Jan 5, 2026
a99a973
Fix ApprovalOperator with SimpleAuthManager when all_admins=True (#59…
TempestShaw Jan 5, 2026
61434b5
Add checksum for JWT secret in API server and scheduler deployments i…
arjav1528 Jan 5, 2026
5cef20d
fix: log message imporved
chirodip98 Jan 5, 2026
4523cb5
fix: added back timezone import code
chirodip98 Jan 5, 2026
ea9620c
fix: added back timezone import code
chirodip98 Jan 5, 2026
75683ae
fix: added back timezone import code
chirodip98 Jan 5, 2026
60b1745
fix: added backwards compatibilty for timezone()
chirodip98 Jan 8, 2026
93e3b36
Merge branch 'main' into fix/59812
chirodip98 Jan 8, 2026
5ae4e3d
Merge branch 'main' into fix/59812
chirodip98 Jan 8, 2026
7e9af85
fix: reverting timezone import changes to suggested one
chirodip98 Jan 9, 2026
6fe7e93
fix: ruff concerns
chirodip98 Jan 3, 2026
9820bc8
chore: review comments addressed
chirodip98 Jan 5, 2026
aa5ce67
chore: failing imports fixed
chirodip98 Jan 5, 2026
30cd475
Add validation for pool names to prevent InvalidStatsNameException (#…
kalluripradeep Jan 3, 2026
70088ed
Source amazon provider to use airflow.sdk.configuration.conf (#59979)
sunank200 Jan 3, 2026
1e898db
Updated conf import for std,es,os,ms providers (#60030)
justinpakzad Jan 3, 2026
92abf88
Added missing comma to bq empty dataset operator docstring (#60066)
justinpakzad Jan 4, 2026
eaf147b
Remove deprecated Query usage and update to SQLAlchemy2.0 style for t…
Srabasti Jan 4, 2026
0f130e6
Source odbc provider to use airflow.sdk.configuration.conf (#59995)
sunank200 Jan 4, 2026
777d0c0
Change ubuntu img ver in k8s tests (#60085)
Miretpl Jan 4, 2026
e3dc6c1
Made sqlalchemy dependency optional for amazon provider (#59941)
justinpakzad Jan 4, 2026
075026a
Add new arguments to db_clean to explicitly include or exclude DAGs (…
mattusifer Jan 4, 2026
f28ce8f
SQLA2 public tests (test_backfills, test_connections, test_pools) (#5…
steveahnahn Jan 4, 2026
c41edc8
Limit deltalake again to 1.3.0 due to missing ARM .whl files (#60098)
potiuk Jan 4, 2026
8622002
Fixed CloudSqlDatabaseHook error message for missing host (#60089)
justinpakzad Jan 4, 2026
de71b77
issue-60000-http: Update conf imports for http provider (#60090)
jroachgolf84 Jan 4, 2026
2c101ce
fix(providers/winrm): add connection-types to provider configuration …
ftakelait Jan 4, 2026
09d1cdf
Update INTHEWILD.md (#60095)
uplsh580 Jan 4, 2026
6170ecd
Docs: fix typo in documentation publishing section (#60091)
shubhamkoti Jan 4, 2026
efbe4e3
Assorted SQLA2/Mypy fixes (#60094)
Dev-iL Jan 4, 2026
8c21b7e
docs: database support (#60103)
raphaelauv Jan 4, 2026
8235e7d
refactor: Improved assertions (#60106)
dabla Jan 4, 2026
c33763e
fix: handling timezone import issues
chirodip98 Jan 5, 2026
b8be78f
fix: handling timezone import issues
chirodip98 Jan 5, 2026
0e0865b
fix: exception block refactored
chirodip98 Jan 5, 2026
ea88e8a
Move find_path_from_directory to shared module_loading library (#60114)
amoghrajesh Jan 5, 2026
e092d00
Fix ApprovalOperator with SimpleAuthManager when all_admins=True (#59…
TempestShaw Jan 5, 2026
59a2bd0
Add checksum for JWT secret in API server and scheduler deployments i…
arjav1528 Jan 5, 2026
4d03b11
fix: log message imporved
chirodip98 Jan 5, 2026
d07b341
fix: added back timezone import code
chirodip98 Jan 5, 2026
bfd7517
fix: added back timezone import code
chirodip98 Jan 5, 2026
d3d1384
fix: added back timezone import code
chirodip98 Jan 5, 2026
fe7c2a3
fix: added backwards compatibilty for timezone()
chirodip98 Jan 8, 2026
56aabb8
60000-keycloak: Update conf imports for keycloak provider (#60092)
Srabasti Jan 5, 2026
9a26f54
#59475 (docs): added few clarification docs for OAuth Authentication …
anishgirianish Jan 5, 2026
7337c7e
Upgrade SQLAlchemy (SQLA) to 2.0 (#59218)
Dev-iL Jan 5, 2026
ca08fcd
Make FAB AirflowAppBuilder use scoped_session (#59953)
trina242 Jan 5, 2026
19934d3
Clarify note re: webserver_config.py deprecation (#59529)
bgshacklett Jan 5, 2026
0e8d8b1
Clean up stale banned apis (#60115)
uranusjr Jan 5, 2026
f41b031
Remove TaskInstance and TaskLogReader unused methods (#59922)
uranusjr Jan 5, 2026
93aeab0
Fix typos: remove trailing quote and correct 'deve-common' to 'devel-…
yuseok89 Jan 5, 2026
8ebb15a
Allow custom volumeClaimTemplates when logs.persistence.enabled is tr…
arjav1528 Jan 5, 2026
7a9c7dc
Keycloak: implement client_credentials grant flow (#59411)
ecodina Jan 5, 2026
d9b0f26
Check team boundaries in connections (#59476)
vincbeck Jan 5, 2026
86e9170
Add workers.celery.command & workers.kubernetes.command (#60067)
Miretpl Jan 5, 2026
9de3163
Bump the fab-ui-package-updates group across 1 directory with 4 updat…
dependabot[bot] Jan 5, 2026
54efa4e
Add AirflowDeprecationWarning for deprecated project_id in BigQueryGe…
KamranImaaz Jan 5, 2026
88d0c52
Bump the core-ui-package-updates group across 1 directory with 20 upd…
dependabot[bot] Jan 5, 2026
093582a
Fix mypy type checking issues after upgrade to github-auth 2.46.0 (#6…
jscheffl Jan 5, 2026
fa1c7ba
Improve processes of re-publishing docs (#60139)
potiuk Jan 5, 2026
086c1f4
[api] Add logic redacted sensitive fields via the Public API and UI (…
nhuantho Jan 5, 2026
a0629a8
Remove unneeded logic in api-server (#60147)
Miretpl Jan 6, 2026
5898917
feat : E2E test for Create backfill with all reprocess behaviour (#59…
iharsh02 Jan 6, 2026
18c4d44
Don't poll HITL details when no pending dagrun on Dag page (#59824)
Shally-Katariya Jan 6, 2026
b5f78bd
Move over plugins_manager to a shared library (#59956)
amoghrajesh Jan 6, 2026
451092b
Introduce a "cli" section in provider metadata (#59805)
jason810496 Jan 6, 2026
a4b3cca
Added dabla as code owner of Microsoft Azure provider (#60159)
dabla Jan 6, 2026
e91d22e
Re-apply PriorityWeightStrategy SDK work (#60112)
uranusjr Jan 6, 2026
8f08bcf
Add deprecated_options entry for dag_file_processor_timeout (#59181)
vbottu Jan 6, 2026
110d5b9
feat(i18n): add missing Taiwan translation (#60153)
Lee-W Jan 6, 2026
523c88e
Update french translation for 3.1.6 (#60157)
pierrejeambrun Jan 6, 2026
83e85b1
Add workers.celery.args field (#60163)
Miretpl Jan 6, 2026
1de7c82
Make sqlalchemy an optional dependency for Impala provider (#60062)
hohshho Jan 6, 2026
0a14de1
docs(i18n): remove non-existing command mentioned in the document (#6…
Lee-W Jan 6, 2026
058acb9
Refactor DAG file queuing and fix redundant processing (#60124)
jedcunningham Jan 6, 2026
d9709e7
Bump the core-ui-package-updates group across 1 directory with 22 upd…
dependabot[bot] Jan 6, 2026
3d98a0f
CI: Upgrade important CI environment (#60174)
potiuk Jan 6, 2026
168e3f2
Made sqlalchemy dependency optional for Databricks provider (#60110)
justinpakzad Jan 6, 2026
07cb388
Don't clear query cache when the initial ref is empty string and comp…
tirkarthi Jan 6, 2026
0dd1548
Add workers.celery.livenessProbe section (#60186)
Miretpl Jan 6, 2026
55db5eb
Mark airflowctl commands test as flaky with retries (#60189)
bugraoz93 Jan 6, 2026
5b4a835
Fix formatting in installation methods note (#60196)
tjb Jan 7, 2026
67d3524
SQLA2 Test task instances & update_trigger_kwargs_type (#59773)
steveahnahn Jan 7, 2026
920d950
Add missing "^" in --from-ref of basic static checks (#60202)
potiuk Jan 7, 2026
66f5445
Added state validation to delete dag run endpoint (#60195)
justinpakzad Jan 7, 2026
8e5bba8
Fix log task instance join (#59973)
Subham-KRLX Jan 7, 2026
479d3c5
add ohernandez in codeowners for catalan (#60200)
ecodina Jan 7, 2026
b887619
Docs: remove duplicated Docker image documentation (#60201)
shubhamkoti Jan 7, 2026
b34d9d2
Use correct path for Stats in task sdk (#60206)
amoghrajesh Jan 7, 2026
9789073
Use correct path for serde deser in tests (#60205)
amoghrajesh Jan 7, 2026
9e0f2fc
Add checks for allshared modules referred in pyproject.toml (#60211)
potiuk Jan 7, 2026
3ff57f9
Fix signal handling in triggerer job runner (#60190)
jedcunningham Jan 7, 2026
1c84f94
Fix SAM login (#60187)
vincbeck Jan 7, 2026
a8d0e3b
Close TR Translation Gaps in main (#60192)
bugraoz93 Jan 7, 2026
d03ff9e
Operator template fields via callable serialization causes unstable D…
m8719-github Jan 7, 2026
9b27896
Add Operators for Gemini Batch API and Gemini Files API. (#59518)
Crowiant Jan 7, 2026
ea9982e
fix: Enable real-time extra links updates for TriggerDagRunOperator (…
subhash-0000 Jan 7, 2026
448a21d
updated comment for template var callable serialization (#60224)
m8719-github Jan 7, 2026
d83e711
Add fail_on_nonzero_exit parameter to SSM operators for exit code rou…
ksharlandjiev Jan 7, 2026
9415fcb
Fix `TriggerDagRunOperator` deferring when `wait_for_completion=False…
nathadfield Jan 7, 2026
2da25ae
Fix typos in CLI commands (#60227)
roykoand Jan 7, 2026
efaed27
Finish commiter status onboarding - Dheeraj Turaga (#60228)
dheerajturaga Jan 7, 2026
47cde8d
Bump the edge-ui-package-updates group across 1 directory with 8 upda…
dependabot[bot] Jan 7, 2026
2797662
Add David to Committers List (#60230)
bugraoz93 Jan 7, 2026
a75b5cb
Bump the core-ui-package-updates group across 1 directory with 3 upda…
dependabot[bot] Jan 7, 2026
fca69d2
Add Dheeraj as codeowner for egde and celery (#60234)
dheerajturaga Jan 7, 2026
c6df59c
Fix job_name normalization in KubernetesJobOperator (#60231)
quentin-sommer Jan 7, 2026
55722cc
Close catalan gap (main) (#60156)
ecodina Jan 7, 2026
acb8a16
Protect against hanging thread in aiosqlite 0.22+ (#60217)
potiuk Jan 7, 2026
1bb494d
Remove unused containerLifecycleHooks field (#60239)
Miretpl Jan 7, 2026
3f22121
Separate "next dag run" from "max active runs" (#60006)
dstandish Jan 8, 2026
add7852
Fix docstring for RuntimeTaskInstance.xcom_pull (#60220)
GlenboLake Jan 8, 2026
41abe45
Add depth level filter to dag partial subset (#58582)
OscarLigthart Jan 8, 2026
a25d482
Clean custom theme defaults (#60226)
pierrejeambrun Jan 8, 2026
caa805f
Add choo121600 for API and UI components (#60251)
choo121600 Jan 8, 2026
d544a47
Fix breeze k8s dev doesn't include configure-cluster test resource (#…
jason810496 Jan 8, 2026
629272d
Add support for async callables in PythonOperator (#59087)
dabla Jan 8, 2026
60808f2
Move listeners module to shared library for client server separation …
amoghrajesh Jan 8, 2026
045a283
Refactor airflow-core/tests cli commands to use SQLA2 (#60263)
ricky-chaoju Jan 8, 2026
7b7c416
Revert "Add support for async callables in PythonOperator (#59087)" (…
dabla Jan 8, 2026
e626573
Automatically add pydantic extra when installing airflow 2 in breeze …
potiuk Jan 8, 2026
d92b5b1
Fix OAuth token refresh for long-running SnowflakeHook tasks and add …
SameerMesiah97 Jan 8, 2026
5323f28
fix: reverting timezone import changes to suggested one
chirodip98 Jan 9, 2026
e44105c
Merge branch 'fix/59812' of https://github.com/chirodip98/airflow-con…
chirodip98 Jan 9, 2026
7b5f88a
Merge branch 'main' into fix/59812
chirodip98 Jan 9, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
from google.cloud.dataproc_v1 import Batch, Cluster, ClusterStatus, JobStatus

from airflow.exceptions import AirflowProviderDeprecationWarning
from airflow.providers.common.compat.sdk import AirflowException, conf
from airflow.providers.common.compat.sdk import AirflowException, conf, timezone
from airflow.providers.google.cloud.hooks.dataproc import (
DataprocHook,
DataProcJobBuilder,
Expand All @@ -63,7 +63,6 @@
)
from airflow.providers.google.cloud.utils.dataproc import DataprocOperationType
from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID
from airflow.utils import timezone

if TYPE_CHECKING:
from google.api_core import operation
Expand Down Expand Up @@ -995,21 +994,24 @@ def __init__(

def execute(self, context: Context) -> None:
hook = DataprocHook(gcp_conn_id=self.gcp_conn_id, impersonation_chain=self.impersonation_chain)
operation = self._delete_cluster(hook)
try:
op: operation.Operation = self._delete_cluster(hook)

except NotFound:
self.log.info(
"Cluster %s not found in region %s. might have been deleted already.",
self.cluster_name,
self.region,
)
return

except Exception as e:
raise AirflowException(str(e))

if not self.deferrable:
hook.wait_for_operation(timeout=self.timeout, result_retry=self.retry, operation=operation)
hook.wait_for_operation(timeout=self.timeout, result_retry=self.retry, operation=op)
self.log.info("Cluster deleted.")
else:
try:
hook.get_cluster(
project_id=self.project_id, region=self.region, cluster_name=self.cluster_name
)
except NotFound:
self.log.info("Cluster deleted.")
return
except Exception as e:
raise AirflowException(str(e))

end_time: float = time.time() + self.timeout
self.defer(
trigger=DataprocDeleteClusterTrigger(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,11 @@
from airflow import __version__ as AIRFLOW_VERSION
from airflow.exceptions import AirflowProviderDeprecationWarning
from airflow.models import DAG, DagBag
from airflow.providers.common.compat.sdk import AirflowException, AirflowTaskTimeout, TaskDeferred
from airflow.providers.common.compat.sdk import (
AirflowException,
AirflowTaskTimeout,
TaskDeferred,
)
from airflow.providers.google.cloud.links.dataproc import (
DATAPROC_BATCH_LINK,
DATAPROC_CLUSTER_LINK_DEPRECATED,
Expand Down Expand Up @@ -1269,7 +1273,67 @@ def test_create_execute_call_finished_before_defer(self, mock_trigger_hook, mock
)

mock_hook.return_value.wait_for_operation.assert_not_called()
assert not mock_defer.called
assert mock_defer.called

@mock.patch(DATAPROC_PATH.format("DataprocHook"))
def test_execute_cluster_not_found(self, mock_hook):
mock_hook.return_value.create_cluster.return_value = None
mock_hook.return_value.delete_cluster.side_effect = NotFound("test")
delete_cluster_op = DataprocDeleteClusterOperator(
task_id="test_task",
region=GCP_REGION,
cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT,
cluster_uuid=None,
request_id=REQUEST_ID,
retry=RETRY,
timeout=TIMEOUT,
metadata=METADATA,
)

delete_cluster_op.execute(context=mock.MagicMock())
mock_hook.return_value.delete_cluster.assert_called_once_with(
project_id=GCP_PROJECT,
region=GCP_REGION,
cluster_name=CLUSTER_NAME,
cluster_uuid=None,
request_id=REQUEST_ID,
retry=RETRY,
timeout=TIMEOUT,
metadata=METADATA,
)

@mock.patch(DATAPROC_PATH.format("DataprocHook"))
@mock.patch(DATAPROC_TRIGGERS_PATH.format("DataprocAsyncHook"))
def test_execute_cluster_not_found_deffered(self, mock_deffer, mock_hook):
mock_hook.return_value.create_cluster.return_value = None
mock_hook.return_value.delete_cluster.side_effect = NotFound("test")
delete_cluster_op = DataprocDeleteClusterOperator(
task_id="test_task",
region=GCP_REGION,
cluster_name=CLUSTER_NAME,
project_id=GCP_PROJECT,
cluster_uuid=None,
request_id=REQUEST_ID,
retry=RETRY,
timeout=TIMEOUT,
metadata=METADATA,
deferrable=True,
)

delete_cluster_op.execute(context=mock.MagicMock())
mock_hook.return_value.delete_cluster.assert_called_once_with(
project_id=GCP_PROJECT,
region=GCP_REGION,
cluster_name=CLUSTER_NAME,
cluster_uuid=None,
request_id=REQUEST_ID,
retry=RETRY,
timeout=TIMEOUT,
metadata=METADATA,
)

assert not mock_deffer.called


class TestDataprocSubmitJobOperator(DataprocJobTestBase):
Expand Down