mirror of
https://pagure.io/fm-orchestrator.git
synced 2026-04-05 03:38:12 +08:00
Fix out-of-memory caused by loading ModuleBuild for every ComponentBuild row from database. Now we lazyload it.
This commit is contained in:
@@ -36,6 +36,8 @@ import modulemd as _modulemd
|
||||
from module_build_service import db, log
|
||||
import module_build_service.messaging
|
||||
|
||||
from sqlalchemy.orm import lazyload
|
||||
|
||||
|
||||
# Just like koji.BUILD_STATES, except our own codes for modules.
|
||||
BUILD_STATES = {
|
||||
@@ -273,7 +275,7 @@ class ModuleBuild(RidaBase):
|
||||
tasks = dict()
|
||||
if self.id and self.state != 'init':
|
||||
|
||||
for build in ComponentBuild.query.filter_by(module_id=self.id).all():
|
||||
for build in ComponentBuild.query.filter_by(module_id=self.id).options(lazyload('module_build')).all():
|
||||
tasks["%s/%s" % (build.format, build.package)] = "%s/%s" % (build.task_id, build.state)
|
||||
|
||||
return tasks
|
||||
|
||||
@@ -46,6 +46,8 @@ import koji
|
||||
|
||||
from module_build_service import conf, models, log
|
||||
|
||||
from sqlalchemy.orm import lazyload
|
||||
|
||||
|
||||
class STOP_WORK(object):
|
||||
""" A sentinel value, indicating that work should be stopped. """
|
||||
@@ -201,7 +203,7 @@ class Poller(threading.Thread):
|
||||
koji_session = (
|
||||
module_build_service.builder.KojiModuleBuilder.get_session(conf, None))
|
||||
log.info("Querying tasks for statuses:")
|
||||
res = models.ComponentBuild.query.filter_by(state=koji.BUILD_STATES['BUILDING']).all()
|
||||
res = models.ComponentBuild.query.filter_by(state=koji.BUILD_STATES['BUILDING']).options(lazyload('module_build')).all()
|
||||
|
||||
log.info("Checking status for %d tasks." % len(res))
|
||||
for component_build in res:
|
||||
@@ -222,6 +224,7 @@ class Poller(threading.Thread):
|
||||
msg = module_build_service.messaging.KojiBuildChange(
|
||||
msg_id='a faked internal message',
|
||||
build_id=component_build.task_id,
|
||||
task_id=component_build.task_id,
|
||||
build_name=component_build.package,
|
||||
build_new_state=koji.BUILD_STATES['FAILED'],
|
||||
build_release=None,
|
||||
|
||||
Reference in New Issue
Block a user