diff --git a/app/jobs/abf_worker/rpm_worker_observer.rb b/app/jobs/abf_worker/rpm_worker_observer.rb index 98c2fe733..98b0aacbf 100644 --- a/app/jobs/abf_worker/rpm_worker_observer.rb +++ b/app/jobs/abf_worker/rpm_worker_observer.rb @@ -11,63 +11,61 @@ module AbfWorker def real_perform @subject_class = BuildList - subject.with_lock do - unless subject.valid? && restart_task - if options['feedback_from_user'] - user = User.find options['feedback_from_user'] - raise ActiveRecord::Rollback if !user.system? && subject.builder != user + unless subject.valid? && restart_task + if options['feedback_from_user'] + user = User.find options['feedback_from_user'] + raise ActiveRecord::Rollback if !user.system? && subject.builder != user + end + + fill_container_data if status != STARTED + + unless subject.valid? + subject.build_error(false) + subject.save(validate: false) + return + end + + if options['hostname'] + subject.update_attribute(:hostname, options['hostname']) + end + + if options['fail_reason'] + subject.update_attribute(:fail_reason, options['fail_reason']) + end + + if options['commit_hash'] + subject.update_attribute(:commit_hash, options['commit_hash']) + end + + rerunning_tests = subject.rerunning_tests? + + case status + when COMPLETED + subject.build_success + if subject.can_auto_publish? && subject.can_publish? + subject.publish + elsif subject.auto_publish_into_testing? && subject.can_publish_into_testing? + subject.publish_into_testing + end + when FAILED + + case options['exit_status'].to_i + when EXIT_CODE_UNPERMITTED_ARCHITECTURE + subject.unpermitted_arch + else + subject.build_error end - fill_container_data if status != STARTED + when STARTED + subject.start_build + when CANCELED + subject.build_canceled + when TESTS_FAILED + subject.tests_failed + end - unless subject.valid? - subject.build_error(false) - subject.save(validate: false) - return - end - - if options['hostname'] - subject.update_attribute(:hostname, options['hostname']) - end - - if options['fail_reason'] - subject.update_attribute(:fail_reason, options['fail_reason']) - end - - if options['commit_hash'] - subject.update_attribute(:commit_hash, options['commit_hash']) - end - - rerunning_tests = subject.rerunning_tests? - - case status - when COMPLETED - subject.build_success - if subject.can_auto_publish? && subject.can_publish? - subject.publish - elsif subject.auto_publish_into_testing? && subject.can_publish_into_testing? - subject.publish_into_testing - end - when FAILED - - case options['exit_status'].to_i - when EXIT_CODE_UNPERMITTED_ARCHITECTURE - subject.unpermitted_arch - else - subject.build_error - end - - when STARTED - subject.start_build - when CANCELED - subject.build_canceled - when TESTS_FAILED - subject.tests_failed - end - - if !rerunning_tests && [TESTS_FAILED, COMPLETED].include?(status) - subject.publish_container if subject.auto_create_container? - end + if !rerunning_tests && [TESTS_FAILED, COMPLETED].include?(status) + subject.publish_container if subject.auto_create_container? end end end