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:
		@ -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' 
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user