This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 5dde3cdf1d5 Improve SnowflakeSqlApiOperator error message on query
status check failure (#66642)
5dde3cdf1d5 is described below
commit 5dde3cdf1d5405bdf463ba5766f4be5fdc878485
Author: Justin Pakzad <[email protected]>
AuthorDate: Fri Jun 5 17:58:17 2026 -0400
Improve SnowflakeSqlApiOperator error message on query status check failure
(#66642)
---
.../airflow/providers/snowflake/operators/snowflake.py | 2 +-
.../tests/unit/snowflake/operators/test_snowflake.py | 17 +++++++++++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git
a/providers/snowflake/src/airflow/providers/snowflake/operators/snowflake.py
b/providers/snowflake/src/airflow/providers/snowflake/operators/snowflake.py
index 8f36c84ac12..eec2e39ecc2 100644
--- a/providers/snowflake/src/airflow/providers/snowflake/operators/snowflake.py
+++ b/providers/snowflake/src/airflow/providers/snowflake/operators/snowflake.py
@@ -487,7 +487,7 @@ class SnowflakeSqlApiOperator(SQLExecuteQueryOperator):
try:
statement_status =
self._hook.get_sql_api_query_status(query_id)
except Exception as e:
- raise ValueError({"status": "error", "message": str(e)})
+ raise RuntimeError(f"Failed to get status for query
{query_id}: {e}") from e
if statement_status.get("status") == "error":
queries_in_progress.remove(query_id)
statement_error_status[query_id] = statement_status
diff --git
a/providers/snowflake/tests/unit/snowflake/operators/test_snowflake.py
b/providers/snowflake/tests/unit/snowflake/operators/test_snowflake.py
index cca046f0415..1b459299dfd 100644
--- a/providers/snowflake/tests/unit/snowflake/operators/test_snowflake.py
+++ b/providers/snowflake/tests/unit/snowflake/operators/test_snowflake.py
@@ -342,6 +342,23 @@ class TestSnowflakeSqlApiOperator:
with pytest.raises(RuntimeError):
operator.execute(context=None)
+ def test_poll_on_queries_raises_runtime_error_on_status_check_failure(
+ self, mock_execute_query, mock_get_sql_api_query_status
+ ):
+ """Tests poll_on_queries raises RuntimeError when status check
fails."""
+ operator = SnowflakeSqlApiOperator(
+ task_id=TASK_ID,
+ snowflake_conn_id="snowflake_default",
+ sql=SQL_MULTIPLE_STMTS,
+ statement_count=4,
+ do_xcom_push=False,
+ )
+ operator.query_ids = ["uuid1", "uuid2"]
+ mock_get_sql_api_query_status.side_effect = RuntimeError("connection
timeout")
+
+ with pytest.raises(RuntimeError, match="Failed to get status for query
uuid1"):
+ operator.poll_on_queries()
+
@pytest.mark.parametrize(
("mock_sql", "statement_count"),
[pytest.param(SQL_MULTIPLE_STMTS, 4, id="multi"),
pytest.param(SINGLE_STMT, 1, id="single")],