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

arivero 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 985c3d12a17 fix(screenshots): downgrade screenshot timeout logs from 
ERROR to WARNING (#38130)
985c3d12a17 is described below

commit 985c3d12a175c3eac5c7a9c7462647122d36745b
Author: Amin Ghadersohi <[email protected]>
AuthorDate: Mon Mar 2 04:03:07 2026 -0500

    fix(screenshots): downgrade screenshot timeout logs from ERROR to WARNING 
(#38130)
    
    Co-authored-by: Claude Opus 4.6 <[email protected]>
---
 superset/dashboards/api.py  | 34 +++++++++++++++++++---------------
 superset/utils/webdriver.py | 32 ++++++++++++++++++++------------
 2 files changed, 39 insertions(+), 27 deletions(-)

diff --git a/superset/dashboards/api.py b/superset/dashboards/api.py
index bcb92231e56..58ecb69428a 100644
--- a/superset/dashboards/api.py
+++ b/superset/dashboards/api.py
@@ -912,9 +912,9 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
     @safe
     @statsd_metrics
     @event_logger.log_this_with_context(
-        action=lambda self,
-        *args,
-        **kwargs: f"{self.__class__.__name__}.put_chart_customizations",
+        action=lambda self, *args, **kwargs: (
+            f"{self.__class__.__name__}.put_chart_customizations"
+        ),
         log_to_statsd=False,
     )
     @requires_json
@@ -1261,8 +1261,9 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
     @permission_name("export")
     @statsd_metrics
     @event_logger.log_this_with_context(
-        action=lambda self, *args, **kwargs: f"{self.__class__.__name__}"
-        f".export_as_example",
+        action=lambda self, *args, **kwargs: (
+            f"{self.__class__.__name__}.export_as_example"
+        ),
         log_to_statsd=False,
     )
     def export_as_example(self, pk: int) -> Response:
@@ -1352,8 +1353,9 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
     @safe
     @statsd_metrics
     @event_logger.log_this_with_context(
-        action=lambda self, *args, **kwargs: f"{self.__class__.__name__}"
-        f".cache_dashboard_screenshot",
+        action=lambda self, *args, **kwargs: (
+            f"{self.__class__.__name__}.cache_dashboard_screenshot"
+        ),
         log_to_statsd=False,
     )
     def cache_dashboard_screenshot(self, pk: int, **kwargs: Any) -> 
WerkzeugResponse:
@@ -1670,7 +1672,7 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
         except ScreenshotImageNotAvailableException:
             return self.response_404()
         except Exception as ex:  # pylint: disable=broad-except
-            logger.error(
+            logger.warning(
                 "Error retrieving thumbnail for dashboard %s: %s",
                 str(dashboard.id),
                 str(ex),
@@ -1689,8 +1691,9 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
     @statsd_metrics
     @rison(get_fav_star_ids_schema)
     @event_logger.log_this_with_context(
-        action=lambda self, *args, **kwargs: f"{self.__class__.__name__}"
-        f".favorite_status",
+        action=lambda self, *args, **kwargs: (
+            f"{self.__class__.__name__}.favorite_status"
+        ),
         log_to_statsd=False,
     )
     def favorite_status(self, **kwargs: Any) -> Response:
@@ -1783,8 +1786,9 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
     @safe
     @statsd_metrics
     @event_logger.log_this_with_context(
-        action=lambda self, *args, **kwargs: f"{self.__class__.__name__}"
-        f".remove_favorite",
+        action=lambda self, *args, **kwargs: (
+            f"{self.__class__.__name__}.remove_favorite"
+        ),
         log_to_statsd=False,
     )
     def remove_favorite(self, pk: int) -> Response:
@@ -2081,9 +2085,9 @@ class DashboardRestApi(CustomTagsOptimizationMixin, 
BaseSupersetModelRestApi):
     @permission_name("set_embedded")
     @statsd_metrics
     @event_logger.log_this_with_context(
-        action=lambda self,
-        *args,
-        **kwargs: f"{self.__class__.__name__}.delete_embedded",
+        action=lambda self, *args, **kwargs: (
+            f"{self.__class__.__name__}.delete_embedded"
+        ),
         log_to_statsd=False,
     )
     @with_dashboard
diff --git a/superset/utils/webdriver.py b/superset/utils/webdriver.py
index 3ffc07ddf68..98604548592 100644
--- a/superset/utils/webdriver.py
+++ b/superset/utils/webdriver.py
@@ -611,7 +611,9 @@ class WebDriverSelenium(WebDriverProxy):
                     EC.presence_of_element_located((By.CLASS_NAME, 
element_name))
                 )
             except TimeoutException:
-                logger.exception("Selenium timed out requesting url %s", url)
+                logger.warning(
+                    "Selenium timed out requesting url %s", url, exc_info=True
+                )
                 raise
 
             try:
@@ -631,10 +633,11 @@ class WebDriverSelenium(WebDriverProxy):
                             (By.CLASS_NAME, "grid-container")
                         )
                     )
-                except:
-                    logger.exception(
+                except Exception:
+                    logger.warning(
                         "Selenium timed out waiting for dashboard to draw at 
url %s",
                         url,
+                        exc_info=True,
                     )
                     raise
 
@@ -647,8 +650,10 @@ class WebDriverSelenium(WebDriverProxy):
                     EC.presence_of_all_elements_located((By.CLASS_NAME, 
"loading"))
                 )
             except TimeoutException:
-                logger.exception(
-                    "Selenium timed out waiting for charts to load at url %s", 
url
+                logger.warning(
+                    "Selenium timed out waiting for charts to load at url %s",
+                    url,
+                    exc_info=True,
                 )
                 raise
 
@@ -672,23 +677,26 @@ class WebDriverSelenium(WebDriverProxy):
                     )
 
             img = element.screenshot_as_png
-        except Exception as ex:
-            logger.warning("exception in webdriver", exc_info=ex)
-            raise
         except TimeoutException:
-            # raise again for the finally block, but handled above
+            # Already logged at WARNING in the inner handlers above
             raise
         except StaleElementReferenceException:
-            logger.exception(
+            logger.warning(
                 "Selenium got a stale element while requesting url %s",
                 url,
+                exc_info=True,
             )
             raise
         except WebDriverException:
-            logger.exception(
-                "Encountered an unexpected error when requesting url %s", url
+            logger.warning(
+                "Encountered an unexpected error when requesting url %s",
+                url,
+                exc_info=True,
             )
             raise
+        except Exception as ex:
+            logger.warning("exception in webdriver", exc_info=ex)
+            raise
         finally:
             self.destroy(driver, app.config["SCREENSHOT_SELENIUM_RETRIES"])
         return img

Reply via email to