From f82e3c8006b7662fb29b76dc4d787d7420d2d693 Mon Sep 17 00:00:00 2001 From: Filip Valder Date: Dec 15 2016 11:08:03 +0000 Subject: fix #264: failed 'failed module' handling due to missing koji tag --- diff --git a/module_build_service/models.py b/module_build_service/models.py index 38996cc..79126d9 100644 --- a/module_build_service/models.py +++ b/module_build_service/models.py @@ -198,12 +198,13 @@ class ModuleBuild(RidaBase): self.state_reason = state_reason log.debug("%r, state %r->%r" % (self, old_state, self.state)) - module_build_service.messaging.publish( - service='module_build_service', - topic='module.state.change', - msg=self.json(), # Note the state is "init" here... - conf=conf, - ) + if old_state != self.state: + module_build_service.messaging.publish( + service='module_build_service', + topic='module.state.change', + msg=self.json(), # Note the state is "init" here... + conf=conf, + ) @classmethod def by_state(cls, session, state): diff --git a/module_build_service/scheduler/handlers/modules.py b/module_build_service/scheduler/handlers/modules.py index 5fe58fc..240d16c 100644 --- a/module_build_service/scheduler/handlers/modules.py +++ b/module_build_service/scheduler/handlers/modules.py @@ -80,16 +80,23 @@ def failed(config, session, msg): session.commit() raise - builder = module_build_service.builder.GenericBuilder.create( - build.owner, build.name, config.system, config, tag_name=build.koji_tag) - builder.buildroot_connect(groups) - - for component in unbuilt_components: - if component.task_id: - builder.cancel_build(component.task_id) - component.state = koji.BUILD_STATES['FAILED'] - component.state_reason = build.state_reason - session.add(component) + if build.koji_tag: + builder = module_build_service.builder.GenericBuilder.create( + build.owner, build.name, config.system, config, tag_name=build.koji_tag) + builder.buildroot_connect(groups) + + for component in unbuilt_components: + if component.task_id: + builder.cancel_build(component.task_id) + component.state = koji.BUILD_STATES['FAILED'] + component.state_reason = build.state_reason + session.add(component) + else: + reason = "Missing koji tag. Assuming previously failed module lookup in PDC." + log.error(reason) + build.transition(config, state="failed", state_reason=reason) + session.commit() + return build.transition(config, state="failed") session.commit()