From f273797fdafb3ca2cdb40fd9868409fcc4a20ec3 Mon Sep 17 00:00:00 2001 From: Maximilian Gruber <maximilian.gruber@ptb.de> Date: Thu, 25 Jan 2024 15:38:16 +0100 Subject: [PATCH] fix concurrency issue: create new session object inside background task --- app/main.py | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/main.py b/app/main.py index 5ea359c..eb03739 100644 --- a/app/main.py +++ b/app/main.py @@ -44,10 +44,13 @@ def get_db(): db.close() -def cocal_task(db, state, cocal_session): +def cocal_task(db: Session = Depends(get_db), hash = hash): + + # get session handle + cocal_session = crud.get_cocal_session_by_hash(db, hash) + # flag state - state.general_state = "ongoing" - db.commit() + crud.set_status(db, name="general", state="ongoing") # prepare cocal related methods cocal = cocal_methods.CocalMethods(cocal_session) @@ -56,7 +59,7 @@ def cocal_task(db, state, cocal_session): #cocal.record_and_save_reference() # wait for user upload to finish - upload_is_ready = cocal.wait_for_user_upload(timeout=10) + upload_is_ready = cocal.wait_for_user_upload(timeout=20) # continue if upload_is_ready: @@ -70,7 +73,7 @@ def cocal_task(db, state, cocal_session): cocal.generate_dcc() # release state - state.general_state = "ready" + crud.set_status(db, name="general", state="ready") # set result status cocal_session.result_state = "ready" @@ -79,7 +82,7 @@ def cocal_task(db, state, cocal_session): # log timeout error if no upload available else: # release state - state.general_state = "ready" + crud.set_status(db, name="general", state="ready") # set result status cocal_session.result_state = "cancelled due to timeout" -- GitLab