Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
commit dfd78b450886e61a6c9237949a6487b5edaf7718 Author: Valentin Gologuzov vgologuz@redhat.com Date: Wed Jan 14 14:14:51 2015 +0100
[backend] [RHBZ:#1182106] JobGrabber dies when action raises an exception.
backend/backend/daemons/job_grab.py | 6 +++++- backend/tests/deamons/test_job_grab.py | 27 +++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletions(-)
diff --git a/backend/backend/daemons/job_grab.py b/backend/backend/daemons/job_grab.py index 6353682..71c4341 100644 --- a/backend/backend/daemons/job_grab.py +++ b/backend/backend/daemons/job_grab.py @@ -142,7 +142,11 @@ class CoprJobGrab(Process): self.event("{0} actions returned".format(len(r_json["actions"])))
for action in r_json["actions"]: - self.process_action(action) + try: + self.process_action(action) + except Exception as error: + self.event("Error during processing action `{}`: {}" + .format(action, error))
def run(self): """ diff --git a/backend/tests/deamons/test_job_grab.py b/backend/tests/deamons/test_job_grab.py index a0dbe3c..09d1884 100644 --- a/backend/tests/deamons/test_job_grab.py +++ b/backend/tests/deamons/test_job_grab.py @@ -265,6 +265,33 @@ class TestJobGrab(object): expected_calls = [call(action_1), call(action_2)] assert self.jg.process_action.call_args_list == expected_calls
+ @mock.patch("backend.daemons.job_grab.get") + def test_regression_load_tasks_actions_(self, mc_get, init_jg): + """ + https://bugzilla.redhat.com/show_bug.cgi?id=1182106 + """ + action_1 = MagicMock() + action_2 = MagicMock() + mc_get.return_value.json.return_value = { + "actions": [ + action_1, + action_2, + ], + "builds": [], + } + + self.jg.process_build_task = MagicMock() + self.jg.event = MagicMock() + self.jg.process_action = MagicMock() + + # load_tasks should suppress this error + self.jg.process_action.side_effect = IOError() + + self.jg.load_tasks() + + expected_calls = [call(action_1), call(action_2)] + assert self.jg.process_action.call_args_list == expected_calls + def test_run(self, mc_time, mc_setproctitle, init_jg): self.jg.connect_queues = MagicMock() self.jg.load_tasks = MagicMock()
copr-commits@lists.fedorahosted.org