| 
					
				 | 
			
			
				@@ -37,7 +37,7 @@ def _sqlalchemy_installed(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return sqlalchemy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 _sqlalchemy_installed() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-from sqlalchemy.exc import DatabaseError, OperationalError, ResourceClosedError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+from sqlalchemy.exc import DatabaseError, OperationalError, ResourceClosedError, InvalidRequestError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 from sqlalchemy.orm.exc import StaleDataError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -45,12 +45,10 @@ from sqlalchemy.orm.exc import StaleDataError 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def session_cleanup(session): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         yield 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    except (DatabaseError, OperationalError, ResourceClosedError, StaleDataError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    except Exception: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         session.rollback() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        session.connection().invalidate() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        session.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    else: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         session.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -63,8 +61,8 @@ def retry(fun): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for retries in range(max_retries): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return fun(*args, **kwargs) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            except (DatabaseError, OperationalError, ResourceClosedError, StaleDataError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                logger.critical( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            except (DatabaseError, OperationalError, ResourceClosedError, StaleDataError, InvalidRequestError): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                logger.warning( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     "Failed operation %s. Retrying %s more times.", 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     fun.__name__, max_retries - retries - 1, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     exc_info=True, 
			 |