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 3f354c0c92 Do not catch too broad exception in
`WasbHook.delete_container` (#36034)
3f354c0c92 is described below
commit 3f354c0c92870e4e72ad536abd1c9cf49462b206
Author: Andrey Anshin <[email protected]>
AuthorDate: Mon Dec 4 02:14:36 2023 +0400
Do not catch too broad exception in `WasbHook.delete_container` (#36034)
---
airflow/providers/microsoft/azure/hooks/wasb.py | 6 +++---
tests/providers/microsoft/azure/hooks/test_wasb.py | 21 +++++++++++++++++++++
2 files changed, 24 insertions(+), 3 deletions(-)
diff --git a/airflow/providers/microsoft/azure/hooks/wasb.py
b/airflow/providers/microsoft/azure/hooks/wasb.py
index 43aea8c99c..13bab2c719 100644
--- a/airflow/providers/microsoft/azure/hooks/wasb.py
+++ b/airflow/providers/microsoft/azure/hooks/wasb.py
@@ -487,9 +487,9 @@ class WasbHook(BaseHook):
self._get_container_client(container_name).delete_container()
self.log.info("Deleted container: %s", container_name)
except ResourceNotFoundError:
- self.log.info("Unable to delete container %s (not found)",
container_name)
- except:
- self.log.info("Error deleting container: %s", container_name)
+ self.log.warning("Unable to delete container %s (not found)",
container_name)
+ except Exception:
+ self.log.error("Error deleting container: %s", container_name)
raise
def delete_blobs(self, container_name: str, *blobs, **kwargs) -> None:
diff --git a/tests/providers/microsoft/azure/hooks/test_wasb.py
b/tests/providers/microsoft/azure/hooks/test_wasb.py
index bc4bed018e..887fc7df38 100644
--- a/tests/providers/microsoft/azure/hooks/test_wasb.py
+++ b/tests/providers/microsoft/azure/hooks/test_wasb.py
@@ -20,6 +20,7 @@ from __future__ import annotations
from unittest import mock
import pytest
+from azure.core.exceptions import ResourceNotFoundError
from azure.storage.blob import BlobServiceClient
from azure.storage.blob._models import BlobProperties
@@ -518,6 +519,26 @@ class TestWasbHook:
mocked_container_client.assert_called_once_with("mycontainer")
mocked_container_client.return_value.delete_container.assert_called()
+ @pytest.mark.parametrize("exc", [ValueError, RuntimeError])
+ def test_delete_container_generic_exception(self, exc: type[Exception],
caplog):
+ hook = WasbHook(wasb_conn_id=self.azure_shared_key_test)
+ with mock.patch.object(WasbHook, "_get_container_client") as m:
+ m.return_value.delete_container.side_effect = exc("FakeException")
+ caplog.clear()
+ caplog.set_level("ERROR")
+ with pytest.raises(exc, match="FakeException"):
+ hook.delete_container("mycontainer")
+ assert "Error deleting container: mycontainer" in caplog.text
+
+ def test_delete_container_resource_not_found(self, caplog):
+ hook = WasbHook(wasb_conn_id=self.azure_shared_key_test)
+ with mock.patch.object(WasbHook, "_get_container_client") as m:
+ m.return_value.delete_container.side_effect =
ResourceNotFoundError("FakeException")
+ caplog.clear()
+ caplog.set_level("WARNING")
+ hook.delete_container("mycontainer")
+ assert "Unable to delete container mycontainer (not found)" in
caplog.text
+
@mock.patch.object(WasbHook, "delete_blobs")
def test_delete_single_blob(self, delete_blobs,
mocked_blob_service_client):
hook = WasbHook(wasb_conn_id=self.azure_shared_key_test)