From db41061111c11867ae6bc818da7e00b03a219ab1 Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Jun 09 2020 14:06:26 +0000 Subject: hub: query_buildroots have to return ASAP If candidate_buildroot_ids are pruned to zero in some point, query_buildroots have to return. Otherwise big working queryset will be created eating resources and returning empty list anyway. Fixes: https://pagure.io/koji/issue/2298 --- diff --git a/hub/kojihub.py b/hub/kojihub.py index 4e2cdb4..2cb42cb 100644 --- a/hub/kojihub.py +++ b/hub/kojihub.py @@ -5381,6 +5381,8 @@ def query_buildroots(hostID=None, tagID=None, state=None, rpmID=None, archiveID= values=locals()) result = set(query.execute()) candidate_buildroot_ids = result + if not candidate_buildroot_ids: + return [] if archiveID is not None: joins.insert(0, 'buildroot_archives ON buildroot.id = buildroot_archives.buildroot_id') @@ -5393,6 +5395,8 @@ def query_buildroots(hostID=None, tagID=None, state=None, rpmID=None, archiveID= candidate_buildroot_ids &= result else: candidate_buildroot_ids = result + if not candidate_buildroot_ids: + return [] if taskID is not None: clauses.append('standard_buildroot.task_id = %(taskID)i') @@ -5404,6 +5408,8 @@ def query_buildroots(hostID=None, tagID=None, state=None, rpmID=None, archiveID= candidate_buildroot_ids &= result else: candidate_buildroot_ids = result + if not candidate_buildroot_ids: + return [] if candidate_buildroot_ids: candidate_buildroot_ids = list(candidate_buildroot_ids)