You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by el...@apache.org on 2022/09/20 20:50:20 UTC
[superset] 10/29: Memoize the common_bootstrap_payload (#21018)
This is an automated email from the ASF dual-hosted git repository.
elizabeth pushed a commit to branch 2.0-test
in repository https://gitbox.apache.org/repos/asf/superset.git
commit b4df82591e3826ae383e3719eef832499b306b56
Author: Bogdan <b....@gmail.com>
AuthorDate: Tue Aug 16 08:27:12 2022 -0700
Memoize the common_bootstrap_payload (#21018)
Try patch
Co-authored-by: Bogdan Kyryliuk <bo...@dropbox.com>
(cherry picked from commit 495a205dec577097651d929bb2f062b0f5003e2e)
---
superset/views/base.py | 8 +++++++-
tests/integration_tests/core_tests.py | 4 +++-
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/superset/views/base.py b/superset/views/base.py
index 9460b8d1ae..f5a8c30184 100644
--- a/superset/views/base.py
+++ b/superset/views/base.py
@@ -71,6 +71,7 @@ from superset.exceptions import (
SupersetException,
SupersetSecurityException,
)
+from superset.extensions import cache_manager
from superset.models.helpers import ImportExportMixin
from superset.models.reports import ReportRecipientType
from superset.superset_typing import FlaskResponse
@@ -343,8 +344,13 @@ def menu_data() -> Dict[str, Any]:
}
+@cache_manager.cache.memoize(timeout=60)
def common_bootstrap_payload() -> Dict[str, Any]:
- """Common data always sent to the client"""
+ """Common data always sent to the client
+
+ The function is memoized as the return value only changes based
+ on configuration and feature flag values.
+ """
messages = get_flashed_messages(with_categories=True)
locale = str(get_locale())
diff --git a/tests/integration_tests/core_tests.py b/tests/integration_tests/core_tests.py
index 58943246c5..6aa1eac0ec 100644
--- a/tests/integration_tests/core_tests.py
+++ b/tests/integration_tests/core_tests.py
@@ -62,7 +62,7 @@ from superset.connectors.sqla.models import SqlaTable
from superset.db_engine_specs.base import BaseEngineSpec
from superset.db_engine_specs.mssql import MssqlEngineSpec
from superset.exceptions import SupersetException
-from superset.extensions import async_query_manager
+from superset.extensions import async_query_manager, cache_manager
from superset.models import core as models
from superset.models.annotations import Annotation, AnnotationLayer
from superset.models.dashboard import Dashboard
@@ -1400,6 +1400,8 @@ class TestCore(SupersetTestCase):
"""
Functions in feature flags don't break bootstrap data serialization.
"""
+ # feature flags are cached
+ cache_manager.cache.clear()
self.login()
encoded = json.dumps(