This is an automated email from the ASF dual-hosted git repository.

jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 1913e7510 [#3766] improvement(client-python): Fix 
broad-exception-caught Pylint rule for client-python (#4621)
1913e7510 is described below

commit 1913e75100ed73a9689b194b55d8f41cba2f3a74
Author: noidname01 <[email protected]>
AuthorDate: Fri Aug 23 11:06:31 2024 +0800

    [#3766] improvement(client-python): Fix broad-exception-caught Pylint rule 
for client-python (#4621)
    
    ### What changes were proposed in this pull request?
    
    * Remove all explicit `Exception`
    * Modify some logic of tests to handle this modification
    
    ### Why are the changes needed?
    
    Fix: #3766
    
    ### Does this PR introduce _any_ user-facing change?
    
    * drop schema
    * drop catalog
    * drop fileset
    * drop metalake
    
    Now these APIs will raise exceptions directly, instead of handling
    exceptions internally.
    
    ### How was this patch tested?
    
    `./gradlew client:client-python:test`
    
    ---------
    
    Co-authored-by: TimWang <[email protected]>
---
 .../gravitino/catalog/base_schema_catalog.py       | 26 ++++++++----------
 .../gravitino/catalog/fileset_catalog.py           | 22 +++++++--------
 .../gravitino/client/gravitino_admin_client.py     | 19 ++++++-------
 .../gravitino/client/gravitino_client_base.py      |  5 +---
 .../gravitino/client/gravitino_metalake.py         | 14 ++++------
 clients/client-python/gravitino/exceptions/base.py |  4 +++
 .../exceptions/handlers/schema_error_handler.py    |  4 +++
 clients/client-python/pylintrc                     |  1 -
 .../tests/integration/hdfs_container.py            |  4 +--
 .../tests/integration/test_catalog.py              | 15 +++++++----
 .../tests/integration/test_fileset_catalog.py      | 31 +++++++++++++++++-----
 .../tests/integration/test_gvfs_with_hdfs.py       | 25 ++++++++++++-----
 .../tests/integration/test_metalake.py             | 28 ++++++++++++-------
 .../client-python/tests/integration/test_schema.py | 25 ++++++++++++-----
 .../tests/integration/test_simple_auth_client.py   | 23 ++++++++++++----
 .../tests/unittests/test_error_handler.py          |  7 +++--
 16 files changed, 157 insertions(+), 96 deletions(-)

diff --git a/clients/client-python/gravitino/catalog/base_schema_catalog.py 
b/clients/client-python/gravitino/catalog/base_schema_catalog.py
index 70061799d..58126713c 100644
--- a/clients/client-python/gravitino/catalog/base_schema_catalog.py
+++ b/clients/client-python/gravitino/catalog/base_schema_catalog.py
@@ -199,21 +199,17 @@ class BaseSchemaCatalog(CatalogDTO, SupportsSchemas):
         Returns:
              true if the schema is dropped successfully, false otherwise.
         """
-        try:
-            params = {"cascade": str(cascade)}
-            resp = self.rest_client.delete(
-                
BaseSchemaCatalog.format_schema_request_path(self._schema_namespace())
-                + "/"
-                + encode_string(schema_name),
-                params=params,
-                error_handler=SCHEMA_ERROR_HANDLER,
-            )
-            drop_resp = DropResponse.from_json(resp.body, infer_missing=True)
-            drop_resp.validate()
-            return drop_resp.dropped()
-        except Exception:
-            logger.warning("Failed to drop schema %s", schema_name)
-            return False
+        params = {"cascade": str(cascade)}
+        resp = self.rest_client.delete(
+            
BaseSchemaCatalog.format_schema_request_path(self._schema_namespace())
+            + "/"
+            + encode_string(schema_name),
+            params=params,
+            error_handler=SCHEMA_ERROR_HANDLER,
+        )
+        drop_resp = DropResponse.from_json(resp.body, infer_missing=True)
+        drop_resp.validate()
+        return drop_resp.dropped()
 
     def _schema_namespace(self) -> Namespace:
         return Namespace.of(self._catalog_namespace.level(0), self.name())
diff --git a/clients/client-python/gravitino/catalog/fileset_catalog.py 
b/clients/client-python/gravitino/catalog/fileset_catalog.py
index 11013497c..e41ea0f80 100644
--- a/clients/client-python/gravitino/catalog/fileset_catalog.py
+++ b/clients/client-python/gravitino/catalog/fileset_catalog.py
@@ -223,22 +223,18 @@ class FilesetCatalog(BaseSchemaCatalog):
         Returns:
              true If the fileset is dropped, false the fileset did not exist.
         """
-        try:
-            self.check_fileset_name_identifier(ident)
+        self.check_fileset_name_identifier(ident)
 
-            full_namespace = 
self._get_fileset_full_namespace(ident.namespace())
+        full_namespace = self._get_fileset_full_namespace(ident.namespace())
 
-            resp = self.rest_client.delete(
-                
f"{self.format_fileset_request_path(full_namespace)}/{ident.name()}",
-                error_handler=FILESET_ERROR_HANDLER,
-            )
-            drop_resp = DropResponse.from_json(resp.body, infer_missing=True)
-            drop_resp.validate()
+        resp = self.rest_client.delete(
+            
f"{self.format_fileset_request_path(full_namespace)}/{ident.name()}",
+            error_handler=FILESET_ERROR_HANDLER,
+        )
+        drop_resp = DropResponse.from_json(resp.body, infer_missing=True)
+        drop_resp.validate()
 
-            return drop_resp.dropped()
-        except Exception as e:
-            logger.warning("Failed to drop fileset %s: %s", ident, e)
-            return False
+        return drop_resp.dropped()
 
     @staticmethod
     def check_fileset_namespace(namespace: Namespace):
diff --git a/clients/client-python/gravitino/client/gravitino_admin_client.py 
b/clients/client-python/gravitino/client/gravitino_admin_client.py
index 5512b9778..5e1167e2b 100644
--- a/clients/client-python/gravitino/client/gravitino_admin_client.py
+++ b/clients/client-python/gravitino/client/gravitino_admin_client.py
@@ -123,14 +123,11 @@ class GravitinoAdminClient(GravitinoClientBase):
         Returns:
             True if the Metalake was successfully dropped, false otherwise.
         """
-        try:
-            resp = self._rest_client.delete(
-                self.API_METALAKES_IDENTIFIER_PATH + name,
-                error_handler=METALAKE_ERROR_HANDLER,
-            )
-            drop_response = DropResponse.from_json(resp.body, 
infer_missing=True)
-
-            return drop_response.dropped()
-        except Exception:
-            logger.warning("Failed to drop metalake %s", name)
-            return False
+
+        resp = self._rest_client.delete(
+            self.API_METALAKES_IDENTIFIER_PATH + name,
+            error_handler=METALAKE_ERROR_HANDLER,
+        )
+        drop_response = DropResponse.from_json(resp.body, infer_missing=True)
+
+        return drop_response.dropped()
diff --git a/clients/client-python/gravitino/client/gravitino_client_base.py 
b/clients/client-python/gravitino/client/gravitino_client_base.py
index 4f3d19c98..8cb7430f1 100644
--- a/clients/client-python/gravitino/client/gravitino_client_base.py
+++ b/clients/client-python/gravitino/client/gravitino_client_base.py
@@ -138,10 +138,7 @@ class GravitinoClientBase:
     def close(self):
         """Closes the GravitinoClient and releases any underlying resources."""
         if self._rest_client is not None:
-            try:
-                self._rest_client.close()
-            except Exception as e:
-                logger.warning("Failed to close the HTTP REST client: %s", e)
+            self._rest_client.close()
 
     def check_metalake_name(self, metalake_name: str):
         identifier = NameIdentifier.parse(metalake_name)
diff --git a/clients/client-python/gravitino/client/gravitino_metalake.py 
b/clients/client-python/gravitino/client/gravitino_metalake.py
index 1cf5c4f72..6dc826d60 100644
--- a/clients/client-python/gravitino/client/gravitino_metalake.py
+++ b/clients/client-python/gravitino/client/gravitino_metalake.py
@@ -196,14 +196,10 @@ class GravitinoMetalake(MetalakeDTO):
         Returns:
             true if the catalog is dropped successfully, false otherwise.
         """
-        try:
-            url = self.API_METALAKES_CATALOGS_PATH.format(self.name(), name)
-            response = self.rest_client.delete(url, 
error_handler=CATALOG_ERROR_HANDLER)
+        url = self.API_METALAKES_CATALOGS_PATH.format(self.name(), name)
+        response = self.rest_client.delete(url, 
error_handler=CATALOG_ERROR_HANDLER)
 
-            drop_response = DropResponse.from_json(response.body, 
infer_missing=True)
-            drop_response.validate()
+        drop_response = DropResponse.from_json(response.body, 
infer_missing=True)
+        drop_response.validate()
 
-            return drop_response.dropped()
-        except Exception:
-            logger.warning("Failed to drop catalog %s", name)
-            return False
+        return drop_response.dropped()
diff --git a/clients/client-python/gravitino/exceptions/base.py 
b/clients/client-python/gravitino/exceptions/base.py
index 674121a5d..f0f6c6577 100644
--- a/clients/client-python/gravitino/exceptions/base.py
+++ b/clients/client-python/gravitino/exceptions/base.py
@@ -91,6 +91,10 @@ class NotEmptyException(GravitinoRuntimeException):
     """Base class for all exceptions thrown when a resource is not empty."""
 
 
+class NonEmptySchemaException(NotEmptyException):
+    """Exception thrown when a namespace is not empty."""
+
+
 class UnsupportedOperationException(GravitinoRuntimeException):
     """Base class for all exceptions thrown when an operation is unsupported"""
 
diff --git 
a/clients/client-python/gravitino/exceptions/handlers/schema_error_handler.py 
b/clients/client-python/gravitino/exceptions/handlers/schema_error_handler.py
index 647466873..4820f2d43 100644
--- 
a/clients/client-python/gravitino/exceptions/handlers/schema_error_handler.py
+++ 
b/clients/client-python/gravitino/exceptions/handlers/schema_error_handler.py
@@ -24,6 +24,7 @@ from gravitino.exceptions.base import (
     NoSuchCatalogException,
     NoSuchSchemaException,
     SchemaAlreadyExistsException,
+    NonEmptySchemaException,
 )
 
 
@@ -43,6 +44,9 @@ class SchemaErrorHandler(RestErrorHandler):
         if code == ErrorConstants.ALREADY_EXISTS_CODE:
             raise SchemaAlreadyExistsException(error_message)
 
+        if code == ErrorConstants.NON_EMPTY_CODE:
+            raise NonEmptySchemaException(error_message)
+
         super().handle(error_response)
 
 
diff --git a/clients/client-python/pylintrc b/clients/client-python/pylintrc
index f866b90af..c78053b71 100644
--- a/clients/client-python/pylintrc
+++ b/clients/client-python/pylintrc
@@ -38,7 +38,6 @@ disable=missing-class-docstring,
         fixme,          
         unnecessary-pass,               
         missing-timeout,                #TODO-fix
-        broad-exception-caught,         #TODO-fix    
         duplicate-code,                 #TODO-fix
         too-many-arguments,             #TODO-fix
 
diff --git a/clients/client-python/tests/integration/hdfs_container.py 
b/clients/client-python/tests/integration/hdfs_container.py
index 176fb052c..16cb2a80c 100644
--- a/clients/client-python/tests/integration/hdfs_container.py
+++ b/clients/client-python/tests/integration/hdfs_container.py
@@ -24,7 +24,7 @@ import time
 
 import docker
 from docker import types as tp
-from docker.errors import NotFound
+from docker.errors import NotFound, DockerException
 
 from gravitino.exceptions.base import GravitinoRuntimeException
 from gravitino.exceptions.base import InternalError
@@ -50,7 +50,7 @@ async def check_hdfs_status(hdfs_container):
             else:
                 logger.info("HDFS startup successfully!")
                 return True
-        except Exception as e:
+        except DockerException as e:
             logger.error(
                 "Exception occurred while checking HDFS container status: %s", 
e
             )
diff --git a/clients/client-python/tests/integration/test_catalog.py 
b/clients/client-python/tests/integration/test_catalog.py
index 2cf13f2cd..265855eb5 100644
--- a/clients/client-python/tests/integration/test_catalog.py
+++ b/clients/client-python/tests/integration/test_catalog.py
@@ -28,6 +28,7 @@ from gravitino import (
 )
 from gravitino.api.catalog_change import CatalogChange
 from gravitino.exceptions.base import (
+    GravitinoRuntimeException,
     CatalogAlreadyExistsException,
     NoSuchCatalogException,
 )
@@ -76,22 +77,26 @@ class TestCatalog(IntegrationTestEnv):
         )
 
     def clean_test_data(self):
+        self.gravitino_client = GravitinoClient(
+            uri="http://localhost:8090";, metalake_name=self.metalake_name
+        )
         try:
-            self.gravitino_client = GravitinoClient(
-                uri="http://localhost:8090";, metalake_name=self.metalake_name
-            )
             logger.info(
                 "Drop catalog %s[%s]",
                 self.catalog_ident,
                 self.gravitino_client.drop_catalog(name=self.catalog_name),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop catalog %s", self.catalog_name)
+
+        try:
             logger.info(
                 "Drop metalake %s[%s]",
                 self.metalake_name,
                 self.gravitino_admin_client.drop_metalake(self.metalake_name),
             )
-        except Exception as e:
-            logger.error("Clean test data failed: %s", e)
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", self.metalake_name)
 
     def test_list_catalogs(self):
         self.create_catalog(self.catalog_name)
diff --git a/clients/client-python/tests/integration/test_fileset_catalog.py 
b/clients/client-python/tests/integration/test_fileset_catalog.py
index 54a51c355..d35a5822d 100644
--- a/clients/client-python/tests/integration/test_fileset_catalog.py
+++ b/clients/client-python/tests/integration/test_fileset_catalog.py
@@ -29,7 +29,7 @@ from gravitino import (
     Fileset,
     FilesetChange,
 )
-from gravitino.exceptions.base import NoSuchFilesetException
+from gravitino.exceptions.base import NoSuchFilesetException, 
GravitinoRuntimeException
 from tests.integration.integration_test_env import IntegrationTestEnv
 
 logger = logging.getLogger(__name__)
@@ -77,21 +77,30 @@ class TestFilesetCatalog(IntegrationTestEnv):
         self.clean_test_data()
 
     def clean_test_data(self):
+
+        self.gravitino_client = GravitinoClient(
+            uri="http://localhost:8090";, metalake_name=self.metalake_name
+        )
+        catalog = self.gravitino_client.load_catalog(name=self.catalog_name)
         try:
-            self.gravitino_client = GravitinoClient(
-                uri="http://localhost:8090";, metalake_name=self.metalake_name
-            )
-            catalog = 
self.gravitino_client.load_catalog(name=self.catalog_name)
             logger.info(
                 "Drop fileset %s[%s]",
                 self.fileset_ident,
                 
catalog.as_fileset_catalog().drop_fileset(ident=self.fileset_ident),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop fileset %s", self.fileset_ident)
+
+        try:
             logger.info(
                 "Drop fileset %s[%s]",
                 self.fileset_new_ident,
                 
catalog.as_fileset_catalog().drop_fileset(ident=self.fileset_new_ident),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop fileset %s", self.fileset_new_ident)
+
+        try:
             logger.info(
                 "Drop schema %s[%s]",
                 self.schema_ident,
@@ -99,18 +108,26 @@ class TestFilesetCatalog(IntegrationTestEnv):
                     schema_name=self.schema_name, cascade=True
                 ),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop schema %s", self.schema_name)
+
+        try:
             logger.info(
                 "Drop catalog %s[%s]",
                 self.catalog_ident,
                 self.gravitino_client.drop_catalog(name=self.catalog_name),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop catalog %s", self.catalog_name)
+
+        try:
             logger.info(
                 "Drop metalake %s[%s]",
                 self.metalake_name,
                 self.gravitino_admin_client.drop_metalake(self.metalake_name),
             )
-        except Exception as e:
-            logger.error("Clean test data failed: %s", e)
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", self.metalake_name)
 
     def init_test_env(self):
         self.gravitino_admin_client.create_metalake(
diff --git a/clients/client-python/tests/integration/test_gvfs_with_hdfs.py 
b/clients/client-python/tests/integration/test_gvfs_with_hdfs.py
index 4a86e6c0d..93682fa57 100644
--- a/clients/client-python/tests/integration/test_gvfs_with_hdfs.py
+++ b/clients/client-python/tests/integration/test_gvfs_with_hdfs.py
@@ -160,16 +160,21 @@ class TestGvfsWithHDFS(IntegrationTestEnv):
 
     @classmethod
     def _clean_test_data(cls):
+        cls.gravitino_client = GravitinoClient(
+            uri="http://localhost:8090";, metalake_name=cls.metalake_name
+        )
+        catalog = cls.gravitino_client.load_catalog(name=cls.catalog_name)
+
         try:
-            cls.gravitino_client = GravitinoClient(
-                uri="http://localhost:8090";, metalake_name=cls.metalake_name
-            )
-            catalog = cls.gravitino_client.load_catalog(name=cls.catalog_name)
             logger.info(
                 "Drop fileset %s[%s]",
                 cls.fileset_ident,
                 
catalog.as_fileset_catalog().drop_fileset(ident=cls.fileset_ident),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop fileset %s", cls.fileset_ident)
+
+        try:
             logger.info(
                 "Drop schema %s[%s]",
                 cls.schema_ident,
@@ -177,18 +182,26 @@ class TestGvfsWithHDFS(IntegrationTestEnv):
                     schema_name=cls.schema_name, cascade=True
                 ),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop schema %s", cls.schema_name)
+
+        try:
             logger.info(
                 "Drop catalog %s[%s]",
                 cls.catalog_name,
                 cls.gravitino_client.drop_catalog(name=cls.catalog_name),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop catalog %s", cls.catalog_name)
+
+        try:
             logger.info(
                 "Drop metalake %s[%s]",
                 cls.metalake_name,
                 cls.gravitino_admin_client.drop_metalake(cls.metalake_name),
             )
-        except Exception as e:
-            logger.error("Clean test data failed: %s", e)
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", cls.metalake_name)
 
     def test_simple_auth(self):
         options = {"auth_type": "simple"}
diff --git a/clients/client-python/tests/integration/test_metalake.py 
b/clients/client-python/tests/integration/test_metalake.py
index 76e56227a..a524a52db 100644
--- a/clients/client-python/tests/integration/test_metalake.py
+++ b/clients/client-python/tests/integration/test_metalake.py
@@ -24,6 +24,7 @@ from gravitino import GravitinoAdminClient, 
GravitinoMetalake, MetalakeChange
 from gravitino.dto.dto_converters import DTOConverters
 from gravitino.dto.requests.metalake_updates_request import 
MetalakeUpdatesRequest
 from gravitino.exceptions.base import (
+    GravitinoRuntimeException,
     NoSuchMetalakeException,
     MetalakeAlreadyExistsException,
 )
@@ -54,16 +55,23 @@ class TestMetalake(IntegrationTestEnv):
         self.clean_test_data()
 
     def clean_test_data(self):
-        logger.info(
-            "Drop metalake %s[%s]",
-            self.metalake_name,
-            self.drop_metalake(self.metalake_name),
-        )
-        logger.info(
-            "Drop metalake %s[%s]",
-            self.metalake_new_name,
-            self.drop_metalake(self.metalake_new_name),
-        )
+        try:
+            logger.info(
+                "Drop metalake %s[%s]",
+                self.metalake_name,
+                self.drop_metalake(self.metalake_name),
+            )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", self.metalake_name)
+
+        try:
+            logger.info(
+                "Drop metalake %s[%s]",
+                self.metalake_new_name,
+                self.drop_metalake(self.metalake_new_name),
+            )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", 
self.metalake_new_name)
 
     def test_create_metalake(self):
         metalake = self.create_metalake(self.metalake_name)
diff --git a/clients/client-python/tests/integration/test_schema.py 
b/clients/client-python/tests/integration/test_schema.py
index 7be2406fd..84ec25178 100644
--- a/clients/client-python/tests/integration/test_schema.py
+++ b/clients/client-python/tests/integration/test_schema.py
@@ -30,6 +30,7 @@ from gravitino import (
     Schema,
 )
 from gravitino.exceptions.base import (
+    GravitinoRuntimeException,
     NoSuchSchemaException,
     SchemaAlreadyExistsException,
 )
@@ -94,33 +95,45 @@ class TestSchema(IntegrationTestEnv):
         )
 
     def clean_test_data(self):
+        self.gravitino_client = GravitinoClient(
+            uri="http://localhost:8090";, metalake_name=self.metalake_name
+        )
+        catalog = self.gravitino_client.load_catalog(name=self.catalog_name)
         try:
-            self.gravitino_client = GravitinoClient(
-                uri="http://localhost:8090";, metalake_name=self.metalake_name
-            )
-            catalog = 
self.gravitino_client.load_catalog(name=self.catalog_name)
             logger.info(
                 "Drop schema %s[%s]",
                 self.schema_ident,
                 catalog.as_schemas().drop_schema(self.schema_name, 
cascade=True),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop schema %s", self.schema_name)
+
+        try:
             logger.info(
                 "Drop schema %s[%s]",
                 self.schema_new_ident,
                 catalog.as_schemas().drop_schema(self.schema_new_name, 
cascade=True),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop schema %s", self.schema_new_name)
+
+        try:
             logger.info(
                 "Drop catalog %s[%s]",
                 self.catalog_ident,
                 self.gravitino_client.drop_catalog(name=self.catalog_name),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop catalog %s", self.catalog_name)
+
+        try:
             logger.info(
                 "Drop metalake %s[%s]",
                 self.metalake_name,
                 self.gravitino_admin_client.drop_metalake(self.metalake_name),
             )
-        except Exception as e:
-            logger.error("Clean test data failed: %s", e)
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", self.metalake_name)
 
     def create_schema(self) -> Schema:
         catalog = self.gravitino_client.load_catalog(name=self.catalog_name)
diff --git a/clients/client-python/tests/integration/test_simple_auth_client.py 
b/clients/client-python/tests/integration/test_simple_auth_client.py
index 5dd8a553b..062e03e9d 100644
--- a/clients/client-python/tests/integration/test_simple_auth_client.py
+++ b/clients/client-python/tests/integration/test_simple_auth_client.py
@@ -30,6 +30,7 @@ from gravitino import (
     Fileset,
 )
 from gravitino.auth.simple_auth_provider import SimpleAuthProvider
+from gravitino.exceptions.base import GravitinoRuntimeException
 from tests.integration.integration_test_env import IntegrationTestEnv
 
 logger = logging.getLogger(__name__)
@@ -74,13 +75,17 @@ class TestSimpleAuthClient(IntegrationTestEnv):
         self.clean_test_data()
 
     def clean_test_data(self):
+        catalog = self.gravitino_client.load_catalog(name=self.catalog_name)
         try:
-            catalog = 
self.gravitino_client.load_catalog(name=self.catalog_name)
             logger.info(
                 "Drop fileset %s[%s]",
                 self.fileset_ident,
                 
catalog.as_fileset_catalog().drop_fileset(ident=self.fileset_ident),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop fileset %s", self.fileset_ident)
+
+        try:
             logger.info(
                 "Drop schema %s[%s]",
                 self.schema_ident,
@@ -88,20 +93,28 @@ class TestSimpleAuthClient(IntegrationTestEnv):
                     schema_name=self.schema_name, cascade=True
                 ),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop schema %s", self.schema_name)
+
+        try:
             logger.info(
                 "Drop catalog %s[%s]",
                 self.catalog_ident,
                 self.gravitino_client.drop_catalog(name=self.catalog_name),
             )
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop catalog %s", self.catalog_name)
+
+        try:
             logger.info(
                 "Drop metalake %s[%s]",
                 self.metalake_name,
                 self.gravitino_admin_client.drop_metalake(self.metalake_name),
             )
-        except Exception as e:
-            logger.error("Clean test data failed: %s", e)
-        finally:
-            os.environ["GRAVITINO_USER"] = ""
+        except GravitinoRuntimeException:
+            logger.warning("Failed to drop metalake %s", self.metalake_name)
+
+        os.environ["GRAVITINO_USER"] = ""
 
     def init_test_env(self):
         self.gravitino_admin_client.create_metalake(
diff --git a/clients/client-python/tests/unittests/test_error_handler.py 
b/clients/client-python/tests/unittests/test_error_handler.py
index b2695471f..c0d701257 100644
--- a/clients/client-python/tests/unittests/test_error_handler.py
+++ b/clients/client-python/tests/unittests/test_error_handler.py
@@ -32,6 +32,7 @@ from gravitino.exceptions.base import (
     IllegalArgumentException,
     AlreadyExistsException,
     NotEmptyException,
+    NonEmptySchemaException,
     SchemaAlreadyExistsException,
     UnsupportedOperationException,
     ConnectionFailedException,
@@ -217,9 +218,11 @@ class TestErrorHandler(unittest.TestCase):
                 )
             )
 
-        with self.assertRaises(NotEmptyException):
+        with self.assertRaises(NonEmptySchemaException):
             SCHEMA_ERROR_HANDLER.handle(
-                ErrorResponse.generate_error_response(NotEmptyException, "mock 
error")
+                ErrorResponse.generate_error_response(
+                    NonEmptySchemaException, "mock error"
+                )
             )
 
         with self.assertRaises(UnsupportedOperationException):

Reply via email to