[copr] master: [backend] couple of fixes (4f9b485)
by asamalik@fedoraproject.org
Repository : http://git.fedorahosted.org/cgit/copr.git
On branch : master
>---------------------------------------------------------------
commit 4f9b4853cbefa45dd7223516cdded8b182ecaae3
Author: Adam Samalik <asamalik(a)redhat.com>
Date: Wed Aug 13 09:24:01 2014 +0200
[backend] couple of fixes
>---------------------------------------------------------------
backend/backend/dispatcher.py | 1 +
backend/copr-be.py | 20 +++++++++++++++-----
2 files changed, 16 insertions(+), 5 deletions(-)
diff --git a/backend/backend/dispatcher.py b/backend/backend/dispatcher.py
index 9d95a48..0283437 100644
--- a/backend/backend/dispatcher.py
+++ b/backend/backend/dispatcher.py
@@ -124,6 +124,7 @@ class Worker(multiprocessing.Process):
# event queue for communicating back to dispatcher
self.events = events
self.worker_num = worker_num
+ self.group_id = group_id
self.ip = ip
self.vm_name = None
self.opts = opts
diff --git a/backend/copr-be.py b/backend/copr-be.py
index 7600f14..867c9a3 100755
--- a/backend/copr-be.py
+++ b/backend/copr-be.py
@@ -183,6 +183,16 @@ class CoprBackend(object):
self.opts = self.read_conf()
self.lock = multiprocessing.Lock()
+ self.task_queues = []
+ try:
+ for group in self.opts.build_groups:
+ id = group["id"]
+ self.task_queues[id] = Queue("copr-be-{0}".format(id))
+ self.task_queues[id].connect()
+ except ConnectionError:
+ raise errors.CoprBackendError(
+ "Could not connect to a task queue. Is Redis running?")
+
# make sure there is nothing in our task queues
self.clean_task_queues()
@@ -284,10 +294,8 @@ class CoprBackend(object):
def clean_task_queues(self):
try:
- for group in self.opts.build_groups:
- queue = Queue("copr-be-{0}".format(group["id"]))
- queue.connect()
- while queue.length():
+ for queue in self.task_queues:
+ while queue.length:
queue.dequeue()
except ConnectionError:
raise errors.CoprBackendError(
@@ -299,9 +307,11 @@ class CoprBackend(object):
# re-read config into opts
self.opts = self.read_conf()
- self.event("# jobs in queue: {0}".format(self.task_queue.length))
for group in self.opts.build_groups:
id = group["id"]
+ self.event("# jobs in {0} queue: {1}".format(
+ group["name"],
+ self.task_queues[id].length))
# this handles starting/growing the number of workers
if len(self.workers[id]) < group["max_workers"]:
self.event("Spinning up more workers")