From df2bed36878cabef7fbfce3380115584759ae56e Mon Sep 17 00:00:00 2001 From: Mek Date: Fri, 17 Jan 2025 10:45:24 -0800 Subject: [PATCH 1/2] move web.ctx check outside of cached function #10318 Moves `("dev" in web.ctx.features)` check to a `devmode` function param so `web.ctx` is no longer needed within our cached function. While the initial computer of the `get_homepage()` function works fine (because `web.ctx` is in scope) the `web.ctx` `ThreadedDict` may no longer be accessible once passed to a memcache thread for it's subsequent re-compute after timeout hit) --- openlibrary/plugins/openlibrary/home.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/openlibrary/plugins/openlibrary/home.py b/openlibrary/plugins/openlibrary/home.py index f8357f88c25..a49751a87d1 100644 --- a/openlibrary/plugins/openlibrary/home.py +++ b/openlibrary/plugins/openlibrary/home.py @@ -38,9 +38,9 @@ } -def get_homepage(): +def get_homepage(devmode=False): try: - stats = admin.get_stats(use_mock_data=("dev" in web.ctx.features)) + stats = admin.get_stats(use_mock_data=devmode) except Exception: logger.error("Error in getting stats", exc_info=True) stats = None @@ -65,8 +65,7 @@ def get_cached_homepage(): mc = cache.memcache_memoize( get_homepage, key, timeout=five_minutes, prethread=caching_prethread() ) - - page = mc() + page = mc(devmode=("dev" in web.ctx.features)) if not page: mc(_cache='delete') From a2dab2db842253a820e1436f94fde56e04db8f25 Mon Sep 17 00:00:00 2001 From: Mek Date: Fri, 17 Jan 2025 11:31:24 -0800 Subject: [PATCH 2/2] Update openlibrary/plugins/openlibrary/home.py Co-authored-by: Drini Cami --- openlibrary/plugins/openlibrary/home.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openlibrary/plugins/openlibrary/home.py b/openlibrary/plugins/openlibrary/home.py index a49751a87d1..7574077ce87 100644 --- a/openlibrary/plugins/openlibrary/home.py +++ b/openlibrary/plugins/openlibrary/home.py @@ -38,7 +38,7 @@ } -def get_homepage(devmode=False): +def get_homepage(devmode): try: stats = admin.get_stats(use_mock_data=devmode) except Exception: