diff --git a/module_build_service/scheduler/submit.py b/module_build_service/scheduler/submit.py index c4a3d44f..06c7ee00 100644 --- a/module_build_service/scheduler/submit.py +++ b/module_build_service/scheduler/submit.py @@ -104,7 +104,8 @@ def record_module_build_arches(mmd, build): arch_obj = db_session.query(models.ModuleArch).filter_by(name=arch).first() if not arch_obj: arch_obj = models.ModuleArch(name=arch) - build.arches.append(arch_obj) + if arch_obj not in build.arches: + build.arches.append(arch_obj) db_session.commit() diff --git a/tests/test_scheduler/test_submit.py b/tests/test_scheduler/test_submit.py index cbdb032d..5127d6bc 100644 --- a/tests/test_scheduler/test_submit.py +++ b/tests/test_scheduler/test_submit.py @@ -87,6 +87,10 @@ class TestSubmit: arches = {arch.name for arch in build.arches} assert arches == set(get_build_arches.return_value) + # Ensure the function is idempotent + record_module_build_arches(build.mmd(), build) + assert len(build.arches) == len(get_build_arches.return_value) + @pytest.mark.parametrize( "scmurl", [