From e4a7cd30c341d42411e3fa7653fdc4cc207c4522 Mon Sep 17 00:00:00 2001 From: Mehmet Salih Yavuz Date: Tue, 24 Feb 2026 23:21:37 +0300 Subject: [PATCH] fix(GAQ): don't use async queries when cache timeout is -1 (#38089) --- superset/charts/data/api.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/superset/charts/data/api.py b/superset/charts/data/api.py index cfa84525d73..56d92dbc978 100644 --- a/superset/charts/data/api.py +++ b/superset/charts/data/api.py @@ -46,6 +46,7 @@ from superset.commands.chart.exceptions import ( ) from superset.common.chart_data import ChartDataResultFormat, ChartDataResultType from superset.connectors.sqla.models import BaseDatasource +from superset.constants import CACHE_DISABLED_TIMEOUT from superset.daos.exceptions import DatasourceNotFound from superset.exceptions import QueryObjectValidationError from superset.extensions import event_logger @@ -171,11 +172,16 @@ class ChartDataRestApi(ChartRestApi): ) # TODO: support CSV, SQL query and other non-JSON types - if ( + # Don't use async queries when cache is disabled (cache_timeout=-1) + # as async queries depend on caching to retrieve results + cache_timeout = query_context.get_cache_timeout() + use_async = ( is_feature_enabled("GLOBAL_ASYNC_QUERIES") and query_context.result_format == ChartDataResultFormat.JSON and query_context.result_type == ChartDataResultType.FULL - ): + and cache_timeout != CACHE_DISABLED_TIMEOUT + ) + if use_async: return self._run_async(json_body, command, add_extra_log_payload) try: @@ -265,11 +271,16 @@ class ChartDataRestApi(ChartRestApi): ) # TODO: support CSV, SQL query and other non-JSON types - if ( + # Don't use async queries when cache is disabled (cache_timeout=-1) + # as async queries depend on caching to retrieve results + cache_timeout = query_context.get_cache_timeout() + use_async = ( is_feature_enabled("GLOBAL_ASYNC_QUERIES") and query_context.result_format == ChartDataResultFormat.JSON and query_context.result_type == ChartDataResultType.FULL - ): + and cache_timeout != CACHE_DISABLED_TIMEOUT + ) + if use_async: return self._run_async(json_body, command, add_extra_log_payload) form_data = json_body.get("form_data")