From 5f40d72c87f69ded10360418f952eb54604e8ad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= Date: Mon, 25 Jul 2022 10:58:11 +0200 Subject: [PATCH] sql: do not fail on transient_data store if session is not found (#67454) --- tests/test_sessions.py | 3 +++ wcs/sql.py | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/tests/test_sessions.py b/tests/test_sessions.py index 1b969383d..c187206fc 100644 --- a/tests/test_sessions.py +++ b/tests/test_sessions.py @@ -240,11 +240,14 @@ def test_transient_data_removal(pub, app): assert sql.Session.count() == 1 assert sql.TransientData.count() == 1 + transient_data = sql.TransientData.select()[0] app.get('/logout') assert sql.Session.count() == 0 assert sql.TransientData.count() == 0 + transient_data.store() # session_id not found, should not fail + def test_magictoken_migration(pub, app): pub.session_manager.session_class.wipe() diff --git a/wcs/sql.py b/wcs/sql.py index 75397daaa..09c0a887c 100644 --- a/wcs/sql.py +++ b/wcs/sql.py @@ -3394,7 +3394,11 @@ class TransientData(SqlMixin): ', '.join(['%%(%s)s' % x for x in column_names]), ', '.join(['%s = %%(%s)s' % (x, x) for x in column_names]), ) - cur.execute(sql_statement, sql_dict) + try: + cur.execute(sql_statement, sql_dict) + except psycopg2.IntegrityError as e: + if "transient_data_session_id_fkey" not in str(e): + raise conn.commit() cur.close()