From e369176ea487330033b6598a26d5111066b3fc76 Mon Sep 17 00:00:00 2001 From: Pavel Raiskup Date: Thu, 2 Jan 2020 19:49:29 +0100 Subject: [PATCH] copr: backend: hotfix https://pagure.io/copr/copr/pull-request/1172 --- .../patches/fc-client-for-worker-bd.patch | 24 ++++++++++ .../files/patches/fc-client-for-worker.patch | 45 +++++++++++++++++++ roles/copr/backend/tasks/main.yml | 10 +++++ 3 files changed, 79 insertions(+) create mode 100644 roles/copr/backend/files/patches/fc-client-for-worker-bd.patch create mode 100644 roles/copr/backend/files/patches/fc-client-for-worker.patch diff --git a/roles/copr/backend/files/patches/fc-client-for-worker-bd.patch b/roles/copr/backend/files/patches/fc-client-for-worker-bd.patch new file mode 100644 index 0000000000..5f36e9f36c --- /dev/null +++ b/roles/copr/backend/files/patches/fc-client-for-worker-bd.patch @@ -0,0 +1,24 @@ +commit 6277990348da43d446468fbe9f3d47ef787e588e (HEAD -> separate-fc-for-worker, praiskup/separate-fc-for-worker) +Author: Pavel Raiskup +AuthorDate: Thu Jan 2 17:09:18 2020 +0100 +Commit: Pavel Raiskup +CommitDate: Thu Jan 2 17:12:28 2020 +0100 + + backend: separate frontend_client for each Worker process + + Because we shared FrontendClient object with BuildDispatcher, we for + some reason weren't able to communicate with RedisLogHandler and some + log entries were lost. + +diff --git a/backend/backend/daemons/build_dispatcher.py b/backend/backend/daemons/build_dispatcher.py +index 4546ca74..af7e0654 100644 +--- a/backend/backend/daemons/build_dispatcher.py ++++ b/backend/backend/daemons/build_dispatcher.py +@@ -126,7 +126,6 @@ class BuildDispatcher(multiprocessing.Process): + def start_worker(self, vm, job, reattach=False): + worker = Worker( + opts=self.opts, +- frontend_client=self.frontend_client, + vm_manager=self.vm_manager, + worker_id=self.next_worker_id, + vm=vm, job=job, reattach=reattach diff --git a/roles/copr/backend/files/patches/fc-client-for-worker.patch b/roles/copr/backend/files/patches/fc-client-for-worker.patch new file mode 100644 index 0000000000..e9d1ebdb33 --- /dev/null +++ b/roles/copr/backend/files/patches/fc-client-for-worker.patch @@ -0,0 +1,45 @@ +commit 6277990348da43d446468fbe9f3d47ef787e588e (HEAD -> separate-fc-for-worker, praiskup/separate-fc-for-worker) +Author: Pavel Raiskup +AuthorDate: Thu Jan 2 17:09:18 2020 +0100 +Commit: Pavel Raiskup +CommitDate: Thu Jan 2 17:12:28 2020 +0100 + + backend: separate frontend_client for each Worker process + + Because we shared FrontendClient object with BuildDispatcher, we for + some reason weren't able to communicate with RedisLogHandler and some + log entries were lost. + +diff --git a/backend/backend/daemons/worker.py b/backend/backend/daemons/worker.py +index f679a1a8..001283e8 100644 +--- a/backend/backend/daemons/worker.py ++++ b/backend/backend/daemons/worker.py +@@ -12,6 +12,7 @@ from ..mockremote import MockRemote + from ..constants import BuildStatus, build_log_format + from ..helpers import register_build_result, get_redis_logger, \ + local_file_logger, run_cmd, pkg_name_evr ++from ..frontend import FrontendClient + + from ..msgbus import ( + MsgBusStomp, +@@ -26,11 +27,10 @@ from ..sshcmd import SSHConnectionError + class Worker(multiprocessing.Process): + msg_buses = [] + +- def __init__(self, opts, frontend_client, vm_manager, worker_id, vm, job, reattach=False): ++ def __init__(self, opts, vm_manager, worker_id, vm, job, reattach=False): + multiprocessing.Process.__init__(self, name="worker-{}".format(worker_id)) + + self.opts = opts +- self.frontend_client = frontend_client + self.vm_manager = vm_manager + self.worker_id = worker_id + self.vm = vm +@@ -38,6 +38,7 @@ class Worker(multiprocessing.Process): + self.reattach = reattach + + self.log = get_redis_logger(self.opts, self.name, "worker") ++ self.frontend_client = FrontendClient(self.opts, self.log) + + @property + def name(self): diff --git a/roles/copr/backend/tasks/main.yml b/roles/copr/backend/tasks/main.yml index ef5829f931..f1b73c19fb 100644 --- a/roles/copr/backend/tasks/main.yml +++ b/roles/copr/backend/tasks/main.yml @@ -33,6 +33,16 @@ dest=/usr/bin/prunerepo tags: patches +- name: patch 1 for https://pagure.io/copr/copr/pull-request/1172 + patch: src=patches/fc-client-for-worker.patch + dest=/usr/share/copr/backend/daemons/worker.py + tags: patches + +- name: patch 2 for https://pagure.io/copr/copr/pull-request/1172 + patch: src=patches/fc-client-for-worker-bd.patch + dest=/usr/share/copr/backend/daemons/build_dispatcher.py + tags: patches + - name: install openstackclient for image preparation dnf: state=present name=python3-openstackclient when: devel|bool