From bf624f569977db540d3b30bf6a0bf59e012bbe8a Mon Sep 17 00:00:00 2001 From: Tomas Kopecek Date: Sep 26 2019 14:00:12 +0000 Subject: PR#1589: query builds per chunks in prune-signed-builds Merges #1589 https://pagure.io/koji/pull-request/1589 Fixes: #1587 https://pagure.io/koji/issue/1587 prune-signed-builds run out of memory --- diff --git a/cli/koji_cli/commands.py b/cli/koji_cli/commands.py index 2d54606..f93f642 100644 --- a/cli/koji_cli/commands.py +++ b/cli/koji_cli/commands.py @@ -1587,11 +1587,24 @@ def handle_prune_signed_copies(options, session, args): if not options.build: if options.verbose: print("Getting builds...") - qopts = {'state' : koji.BUILD_STATES['COMPLETE']} + qopts = { + 'state' : koji.BUILD_STATES['COMPLETE'], + 'queryOpts': { + 'limit': 50000, + 'offset': 0, + 'order': 'build_id', + } + } if options.package: pkginfo = session.getPackage(options.package) qopts['packageID'] = pkginfo['id'] - builds = [(b['nvr'], b) for b in session.listBuilds(**qopts)] + builds = [] + while True: + chunk = [(b['nvr'], b) for b in session.listBuilds(**qopts)] + if not chunk: + break + builds.extend(chunk) + qopts['queryOpts']['offset'] += qopts['queryOpts']['limit'] if options.verbose: print("...got %i builds" % len(builds)) builds.sort()