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()