query builds per chunks in prune-signed-builds

For bigger installations query all builds can run out of memory on hub
side. Query these in 50k chunks.

Fixes: https://pagure.io/koji/issue/1587
This commit is contained in:
Tomas Kopecek 2019-07-30 17:15:48 +02:00
parent a5af69c94b
commit 0b4f0fb3a1

View file

@ -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()