@@ -3429,6 +3429,8 @@ def create(cls, run_model: "PipelineModel", ranch: str) -> "TFTTestRunGroupModel
34293429 test_run_group = cls ()
34303430 test_run_group .ranch = ranch
34313431 session .add (test_run_group )
3432+ # Flush to get test_run_group.id before using it
3433+ session .flush ()
34323434
34333435 # lock the run_model in the DB by using SELECT ... FOR UPDATE
34343436 # all other workers accessing this run_model will block here
@@ -3441,18 +3443,20 @@ def create(cls, run_model: "PipelineModel", ranch: str) -> "TFTTestRunGroupModel
34413443 logger .warning (f"PipelineModel with id={ run_model .id } not found in DB." )
34423444 return test_run_group
34433445
3444- if locked_run_model .test_run_group :
3446+ # Check test_run_group_id directly to avoid stale relationship cache.
3447+ # The relationship might not be loaded or might be stale from a different session.
3448+ if locked_run_model .test_run_group_id :
34453449 # Clone run model
34463450 new_run_model = PipelineModel ()
34473451 new_run_model .project_event = locked_run_model .project_event
34483452 new_run_model .package_name = locked_run_model .package_name
34493453 new_run_model .srpm_build = locked_run_model .srpm_build
34503454 new_run_model .copr_build_group = locked_run_model .copr_build_group
34513455 new_run_model .koji_build_group = locked_run_model .koji_build_group
3452- new_run_model .test_run_group = test_run_group
3456+ new_run_model .test_run_group_id = test_run_group . id
34533457 session .add (new_run_model )
34543458 else :
3455- locked_run_model .test_run_group = test_run_group
3459+ locked_run_model .test_run_group_id = test_run_group . id
34563460 session .add (locked_run_model )
34573461
34583462 return test_run_group
0 commit comments