From 6c7d29a98230c3038da01bfa1e5f883d7d53d0c2 Mon Sep 17 00:00:00 2001 From: Hao Liu <44379968+TheRealHaoLiu@users.noreply.github.com> Date: Wed, 10 Jul 2024 11:11:12 -0400 Subject: [PATCH] Fix command to set db session timeout for locks (#15352) Fix command to set db session timeout Add quote around the value of the setting Example failures ``` 2024-07-10 13:33:29,237 ERROR [a7e55a64e6744a0e920bb1fd78615e5f] awx.main.dispatch Worker failed to run task awx.main.tasks.system.awx_periodic_scheduler(*[], **{} Traceback (most recent call last): File "/var/lib/awx/venv/awx/lib64/python3.11/site-packages/django/db/backends/utils.py", line 87, in _execute return self.cursor.execute(sql) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/var/lib/awx/venv/awx/lib64/python3.11/site-packages/psycopg/cursor.py", line 732, in execute raise ex.with_traceback(None) psycopg.errors.SyntaxError: trailing junk after numeric literal at or near "1d" LINE 1: SET idle_in_transaction_session_timeout = 1d ^ ``` --- awx/main/utils/pglock.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/awx/main/utils/pglock.py b/awx/main/utils/pglock.py index a47880b667..d599d284b3 100644 --- a/awx/main/utils/pglock.py +++ b/awx/main/utils/pglock.py @@ -17,13 +17,13 @@ def advisory_lock(*args, lock_session_timeout_milliseconds=0, **kwargs): with connection.cursor() as cur: idle_in_transaction_session_timeout = cur.execute('SHOW idle_in_transaction_session_timeout').fetchone()[0] idle_session_timeout = cur.execute('SHOW idle_session_timeout').fetchone()[0] - cur.execute(f"SET idle_in_transaction_session_timeout = {lock_session_timeout_milliseconds}") - cur.execute(f"SET idle_session_timeout = {lock_session_timeout_milliseconds}") + cur.execute(f"SET idle_in_transaction_session_timeout = '{lock_session_timeout_milliseconds}'") + cur.execute(f"SET idle_session_timeout = '{lock_session_timeout_milliseconds}'") with django_pglocks_advisory_lock(*args, **kwargs) as internal_lock: yield internal_lock if lock_session_timeout_milliseconds > 0: with connection.cursor() as cur: - cur.execute(f"SET idle_in_transaction_session_timeout = {idle_in_transaction_session_timeout}") - cur.execute(f"SET idle_session_timeout = {idle_session_timeout}") + cur.execute(f"SET idle_in_transaction_session_timeout = '{idle_in_transaction_session_timeout}'") + cur.execute(f"SET idle_session_timeout = '{idle_session_timeout}'") else: yield True