Apply Bodhi patch for koji session timeout
Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com>
This commit is contained in:
parent
a6a525ab76
commit
52f22558c5
2 changed files with 148 additions and 0 deletions
|
@ -0,0 +1,141 @@
|
|||
From 323d8b0da8abd3300eb51c9a02c5035457d936ef Mon Sep 17 00:00:00 2001
|
||||
From: Patrick Uiterwijk <puiterwijk@redhat.com>
|
||||
Date: Sun, 20 Nov 2016 20:43:52 +0000
|
||||
Subject: [PATCH 1/2] Disable caching koji sessions during mashing process
|
||||
|
||||
The mashing process takes a very long time: longer than the session timeout for the
|
||||
bodhi user in koji.
|
||||
Since a koji session is started on buildsys.get_session(), that means the koji session
|
||||
often times out if the mash takes too long.
|
||||
This patch makes us get a new session for each batch of koji operations.
|
||||
|
||||
This will incur a slight performance impact, but that should not be too big, since most
|
||||
of the koji operations are batched, and this change gets a new session on each batch.
|
||||
|
||||
Signed-off-by: Patrick Uiterwijk <puiterwijk@redhat.com>
|
||||
---
|
||||
bodhi/server/consumers/masher.py | 27 ++++++++++++++-------------
|
||||
bodhi/server/metadata.py | 8 ++++----
|
||||
2 files changed, 18 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/bodhi/server/consumers/masher.py b/bodhi/server/consumers/masher.py
|
||||
index 8a1489b..511a613 100644
|
||||
--- a/bodhi/server/consumers/masher.py
|
||||
+++ b/bodhi/server/consumers/masher.py
|
||||
@@ -278,7 +278,6 @@ class MasherThread(threading.Thread):
|
||||
# src=src, dest=dest, nvr=nvr)
|
||||
|
||||
def work(self):
|
||||
- self.koji = buildsys.get_session()
|
||||
self.release = self.db.query(Release)\
|
||||
.filter_by(name=self.release).one()
|
||||
self.id = getattr(self.release, '%s_tag' % self.request.value)
|
||||
@@ -454,10 +453,10 @@ class MasherThread(threading.Thread):
|
||||
# Remove the pending tag as well
|
||||
if update.request is UpdateRequest.stable:
|
||||
update.remove_tag(update.release.pending_stable_tag,
|
||||
- koji=self.koji)
|
||||
+ koji=buildsys.get_session())
|
||||
elif update.request is UpdateRequest.testing:
|
||||
update.remove_tag(update.release.pending_testing_tag,
|
||||
- koji=self.koji)
|
||||
+ koji=buildsys.get_session())
|
||||
update.request = None
|
||||
if update in self.state['updates']:
|
||||
self.state['updates'].remove(update)
|
||||
@@ -584,27 +583,28 @@ class MasherThread(threading.Thread):
|
||||
self.move_tags_async.extend(move_tags)
|
||||
|
||||
def _perform_tag_actions(self):
|
||||
+ koji = buildsys.get_session()
|
||||
for i, batches in enumerate([(self.add_tags_sync, self.move_tags_sync),
|
||||
(self.add_tags_async, self.move_tags_async)]):
|
||||
add, move = batches
|
||||
if i == 0:
|
||||
- self.koji.multicall = False
|
||||
+ koji.multicall = False
|
||||
else:
|
||||
- self.koji.multicall = True
|
||||
+ koji.multicall = True
|
||||
for action in add:
|
||||
tag, build = action
|
||||
self.log.info("Adding tag %s to %s" % (tag, build))
|
||||
- self.koji.tagBuild(tag, build, force=True)
|
||||
+ koji.tagBuild(tag, build, force=True)
|
||||
for action in move:
|
||||
from_tag, to_tag, build = action
|
||||
self.log.info('Moving %s from %s to %s' % (
|
||||
build, from_tag, to_tag))
|
||||
- self.koji.moveBuild(from_tag, to_tag, build, force=True)
|
||||
+ koji.moveBuild(from_tag, to_tag, build, force=True)
|
||||
|
||||
if i != 0:
|
||||
- results = self.koji.multiCall()
|
||||
+ results = koji.multiCall()
|
||||
failed_tasks = buildsys.wait_for_tasks([task[0] for task in results],
|
||||
- self.koji, sleep=15)
|
||||
+ koji, sleep=15)
|
||||
if failed_tasks:
|
||||
raise Exception("Failed to move builds: %s" % failed_tasks)
|
||||
|
||||
@@ -622,15 +622,16 @@ class MasherThread(threading.Thread):
|
||||
def remove_pending_tags(self):
|
||||
""" Remove all pending tags from these updates """
|
||||
self.log.debug("Removing pending tags from builds")
|
||||
- self.koji.multicall = True
|
||||
+ koji = buildsys.get_session()
|
||||
+ koji.multicall = True
|
||||
for update in self.updates:
|
||||
if update.request is UpdateRequest.stable:
|
||||
update.remove_tag(update.release.pending_stable_tag,
|
||||
- koji=self.koji)
|
||||
+ koji=koji)
|
||||
elif update.request is UpdateRequest.testing:
|
||||
update.remove_tag(update.release.pending_testing_tag,
|
||||
- koji=self.koji)
|
||||
- result = self.koji.multiCall()
|
||||
+ koji=koji)
|
||||
+ result = koji.multiCall()
|
||||
self.log.debug('remove_pending_tags koji.multiCall result = %r',
|
||||
result)
|
||||
|
||||
diff --git a/bodhi/server/metadata.py b/bodhi/server/metadata.py
|
||||
index cb4fd3f..9ae6dd1 100644
|
||||
--- a/bodhi/server/metadata.py
|
||||
+++ b/bodhi/server/metadata.py
|
||||
@@ -54,7 +54,6 @@ class ExtendedMetadata(object):
|
||||
self.builds = {}
|
||||
self.missing_ids = []
|
||||
self._from = config.get('bodhi_email')
|
||||
- self.koji = get_session()
|
||||
self._fetch_updates()
|
||||
|
||||
self.uinfo = cr.UpdateInfo()
|
||||
@@ -177,7 +176,7 @@ class ExtendedMetadata(object):
|
||||
def _fetch_updates(self):
|
||||
"""Based on our given koji tag, populate a list of Update objects"""
|
||||
log.debug("Fetching builds tagged with '%s'" % self.tag)
|
||||
- kojiBuilds = self.koji.listTagged(self.tag, latest=True)
|
||||
+ kojiBuilds = get_session().listTagged(self.tag, latest=True)
|
||||
nonexistent = []
|
||||
log.debug("%d builds found" % len(kojiBuilds))
|
||||
for build in kojiBuilds:
|
||||
@@ -219,12 +218,13 @@ class ExtendedMetadata(object):
|
||||
col.shortname = to_bytes(update.release.name)
|
||||
|
||||
for build in update.builds:
|
||||
+ koji = get_session()
|
||||
try:
|
||||
kojiBuild = self.builds[build.nvr]
|
||||
except:
|
||||
- kojiBuild = self.koji.getBuild(build.nvr)
|
||||
+ kojiBuild = koji.getBuild(build.nvr)
|
||||
|
||||
- rpms = self.koji.listBuildRPMs(kojiBuild['id'])
|
||||
+ rpms = koji.listBuildRPMs(kojiBuild['id'])
|
||||
for rpm in rpms:
|
||||
pkg = cr.UpdateCollectionPackage()
|
||||
pkg.name = rpm['name']
|
||||
--
|
||||
2.10.1
|
||||
|
|
@ -413,6 +413,13 @@
|
|||
tags:
|
||||
- bodhi
|
||||
|
||||
# https://github.com/fedora-infra/bodhi/pull/1122/commits/323d8b0da8abd3300eb51c9a02c5035457d936ef
|
||||
- name: Patch bodhi mash for koji SSL timeout
|
||||
patch: basedir=/usr/lib/python2.7/site-packages/ src=0001-Disable-caching-koji-sessions-during-mashing-process.patch strip=1
|
||||
tags:
|
||||
- bodhi
|
||||
- patch
|
||||
|
||||
#- name: have apache own /mnt/koji/mash/updates
|
||||
# file: path=/mnt/koji/mash/updates state=directory recurse=yes owner=apache group=apache
|
||||
# tags:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue