Limit the utilization of serializable transactions

A user encountered this error when deleting a vm:

self.cursor.execute("UPDATE vms SET deleted = now() WHERE email = %s AND
id = %s", ( email, id))

psycopg2.errors.SerializationFailure: could not serialize access due to
read/write dependencies among transactions
This commit is contained in:
forest 2021-03-23 15:58:40 -05:00
parent 107a5fc659
commit c623c65fda

View File

@ -13,7 +13,7 @@ class DBModel:
def __init__(self, connection, cursor):
self.connection = connection
self.cursor = cursor
self.cursor.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;")
# ------ LOGIN ---------
@ -361,6 +361,7 @@ class DBModel:
def claim_operation(self, operation_id: int, host_id: str) -> bool:
# have to make a new cursor to set isolation level
# cursor = self.connection.cursor()
self.cursor.execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;")
self.cursor.execute("""
BEGIN TRANSACTION;
UPDATE host_operation SET assignment_status = 'assigned'