mirror of
https://github.com/apache/superset.git
synced 2026-08-04 04:52:32 +00:00
This is a test-only PR opened as a TDD-style validation of issue #34543. #34543 (filed 2025-08) reports that embedded dashboards with multiple Jinja url_param() filters fail async cache retrieval with a 422 "Error loading data from cache", while a single url_param works fine. Root cause: SqlaTable.get_extra_cache_keys() (superset/connectors/sqla/models.py) returns list(set(extra_cache_keys)). Python randomizes string hashing per-process, so the same set of url_param values can iterate in a different order in the Celery worker (which writes the query results to cache) than in the web process (which re-derives the cache key to read them back). hash_from_dict() only sorts dict keys, not list values, so two extra_cache_keys lists with identical values but different order hash to different cache keys. A single-element list has only one possible order, which is why the bug only appears with multiple parameters. This PR adds one regression test on QueryObject.cache_key(): 1. test_cache_key_stable_regardless_of_extra_cache_keys_order - asserts the cache key is identical for two otherwise-equal query objects whose extra_cache_keys differ only in order. Closes #34543 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>