You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2024/07/30 14:40:34 UTC

(superset) branch master updated: fix(Database): Refresh catalogs on db update returns database error (#29681)

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

diegopucci pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 134ca38b8d fix(Database): Refresh catalogs on db update returns database error (#29681)
134ca38b8d is described below

commit 134ca38b8d94c909991df6a74c7bb790205355e1
Author: Geido <60...@users.noreply.github.com>
AuthorDate: Tue Jul 30 17:40:28 2024 +0300

    fix(Database): Refresh catalogs on db update returns database error (#29681)
---
 superset/commands/database/update.py | 49 ++++++++++++++++++++----------------
 1 file changed, 28 insertions(+), 21 deletions(-)

diff --git a/superset/commands/database/update.py b/superset/commands/database/update.py
index 28f895b2f6..75aebf322b 100644
--- a/superset/commands/database/update.py
+++ b/superset/commands/database/update.py
@@ -166,36 +166,43 @@ class UpdateDatabaseCommand(BaseCommand):
         )
 
         for catalog in catalogs:
-            schemas = self._get_schema_names(database, catalog, ssh_tunnel)
+            try:
+                schemas = self._get_schema_names(database, catalog, ssh_tunnel)
 
-            if catalog:
-                perm = security_manager.get_catalog_perm(
-                    original_database_name,
-                    catalog,
-                )
-                existing_pvm = security_manager.find_permission_view_menu(
-                    "catalog_access",
-                    perm,
-                )
-                if not existing_pvm:
-                    # new catalog
-                    security_manager.add_permission_view_menu(
+                if catalog:
+                    perm = security_manager.get_catalog_perm(
+                        original_database_name,
+                        catalog,
+                    )
+                    existing_pvm = security_manager.find_permission_view_menu(
                         "catalog_access",
-                        security_manager.get_catalog_perm(
-                            database.database_name,
-                            catalog,
-                        ),
+                        perm,
                     )
-                    for schema in schemas:
+                    if not existing_pvm:
+                        # new catalog
                         security_manager.add_permission_view_menu(
-                            "schema_access",
-                            security_manager.get_schema_perm(
+                            "catalog_access",
+                            security_manager.get_catalog_perm(
                                 database.database_name,
                                 catalog,
-                                schema,
                             ),
                         )
+                        for schema in schemas:
+                            security_manager.add_permission_view_menu(
+                                "schema_access",
+                                security_manager.get_schema_perm(
+                                    database.database_name,
+                                    catalog,
+                                    schema,
+                                ),
+                            )
+                        continue
+            except DatabaseConnectionFailedError:
+                # more than one catalog, move to next
+                if catalog:
+                    logger.warning("Error processing catalog %s", catalog)
                     continue
+                raise
 
             # add possible new schemas in catalog
             self._refresh_schemas(