| 
					
				 | 
			
			
				@@ -232,7 +232,7 @@ class CompletionService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 logging.exception("Unknown Error in completion") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 PubHandler.pub_error(user, generate_task_id, e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                db.session.commit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                db.session.remove() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @classmethod 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def countdown_and_close(cls, flask_app: Flask, worker_thread, pubsub, detached_user, 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -242,22 +242,25 @@ class CompletionService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         def close_pubsub(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             with flask_app.app_context(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                user = db.session.merge(detached_user) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                sleep_iterations = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                while sleep_iterations < timeout and worker_thread.is_alive(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if sleep_iterations > 0 and sleep_iterations % 10 == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        PubHandler.ping(user, generate_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    time.sleep(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    sleep_iterations += 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if worker_thread.is_alive(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    PubHandler.stop(user, generate_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        pubsub.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    except Exception: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    user = db.session.merge(detached_user) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    sleep_iterations = 0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    while sleep_iterations < timeout and worker_thread.is_alive(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if sleep_iterations > 0 and sleep_iterations % 10 == 0: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            PubHandler.ping(user, generate_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        time.sleep(1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        sleep_iterations += 1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if worker_thread.is_alive(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        PubHandler.stop(user, generate_task_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pubsub.close() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        except Exception: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    db.session.remove() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         countdown_thread = threading.Thread(target=close_pubsub) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         countdown_thread.start() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -394,7 +397,7 @@ class CompletionService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     logging.exception(e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                db.session.commit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                db.session.remove() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     pubsub.unsubscribe(generate_channel) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -436,7 +439,7 @@ class CompletionService: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         logging.exception(e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         raise 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 finally: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    db.session.commit() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    db.session.remove() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         pubsub.unsubscribe(generate_channel) 
			 |