From 76eeea1f64c5f4e2ee436ee64eb3e983b394a960 Mon Sep 17 00:00:00 2001 From: Zach Liu Date: Sun, 8 Sep 2024 21:40:35 -0400 Subject: [PATCH] Make schema refresh timeout configurable via env var (#7114) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- redash/settings/__init__.py | 1 + redash/tasks/general.py | 2 +- redash/tasks/queries/maintenance.py | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/redash/settings/__init__.py b/redash/settings/__init__.py index 75c438cff..ac349cfb2 100644 --- a/redash/settings/__init__.py +++ b/redash/settings/__init__.py @@ -50,6 +50,7 @@ QUERY_RESULTS_EXPIRED_TTL_ENABLED = parse_boolean(os.environ.get("REDASH_QUERY_R QUERY_RESULTS_EXPIRED_TTL = int(os.environ.get("REDASH_QUERY_RESULTS_EXPIRED_TTL", "86400")) SCHEMAS_REFRESH_SCHEDULE = int(os.environ.get("REDASH_SCHEMAS_REFRESH_SCHEDULE", 30)) +SCHEMAS_REFRESH_TIMEOUT = int(os.environ.get("REDASH_SCHEMAS_REFRESH_TIMEOUT", 300)) AUTH_TYPE = os.environ.get("REDASH_AUTH_TYPE", "api_key") INVITATION_TOKEN_MAX_AGE = int(os.environ.get("REDASH_INVITATION_TOKEN_MAX_AGE", 60 * 60 * 24 * 7)) diff --git a/redash/tasks/general.py b/redash/tasks/general.py index 35a741d82..532cbd117 100644 --- a/redash/tasks/general.py +++ b/redash/tasks/general.py @@ -50,7 +50,7 @@ def test_connection(data_source_id): return True -@job("schemas", queue_class=Queue, at_front=True, timeout=300, ttl=90) +@job("schemas", queue_class=Queue, at_front=True, timeout=settings.SCHEMAS_REFRESH_TIMEOUT, ttl=90) def get_schema(data_source_id, refresh): try: data_source = models.DataSource.get_by_id(data_source_id) diff --git a/redash/tasks/queries/maintenance.py b/redash/tasks/queries/maintenance.py index bbfebd053..bca3168c3 100644 --- a/redash/tasks/queries/maintenance.py +++ b/redash/tasks/queries/maintenance.py @@ -157,7 +157,7 @@ def remove_ghost_locks(): logger.info("Locks found: {}, Locks removed: {}".format(len(locks), count)) -@job("schemas") +@job("schemas", timeout=settings.SCHEMAS_REFRESH_TIMEOUT) def refresh_schema(data_source_id): ds = models.DataSource.get_by_id(data_source_id) logger.info("task=refresh_schema state=start ds_id=%s", ds.id)