From a80b95ca2a7b19e123a5a896088f7b430b26cd9d Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Apr 03 2024 14:37:30 +0000 Subject: [PATCH 1/3] fakehub --no-commit option --- diff --git a/devtools/fakehub b/devtools/fakehub index cc475bc..4c66388 100755 --- a/devtools/fakehub +++ b/devtools/fakehub @@ -14,7 +14,7 @@ from urllib.parse import quote sys.path.insert(0, os.getcwd()) import koji -from kojihub import auth, kojixmlrpc, kojihub +from kojihub import auth, kojixmlrpc, kojihub, db from koji.context import context import koji.xmlrpcplus @@ -104,6 +104,8 @@ def get_options(): parser.add_option('--user', '-u', help='execute as user') parser.add_option('--exclusive', '-x', action='store_true', help='emulate an exclusive session') + parser.add_option('-n', '--no-commit', action='store_true', + help='skip commit') opts, args = parser.parse_args() # parse request from args @@ -149,10 +151,16 @@ def set_config(environ): environ['koji.hub.ConfigDir'] = lconfigd +def skip_commit(cnx): + print('Skipping commit') + + def main(): options = get_options() if options.pdb: kojixmlrpc.ModXMLRPCRequestHandler.handle_rpc = handle_rpc + if options.no_commit: + db.DBWrapper.commit = skip_commit environ = {} environ['SCRIPT_FILENAME'] = kojixmlrpc.__file__ From 37d745fe8de410a939e437d7ce5c2b1c44888c67 Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Apr 03 2024 14:37:55 +0000 Subject: [PATCH 2/3] sort checksums before inserting --- diff --git a/kojihub/kojihub.py b/kojihub/kojihub.py index 1b53ea4..cc3eb8f 100644 --- a/kojihub/kojihub.py +++ b/kojihub/kojihub.py @@ -16112,7 +16112,7 @@ def create_rpm_checksum(rpm_id, sigkey, chsum_dict): f"checksum type {koji.CHECKSUM_TYPES[r['checksum_type']]}.") if chsum_dict: insert = BulkInsertProcessor(table='rpm_checksum') - for func, chsum in chsum_dict.items(): + for func, chsum in sorted(chsum_dict.items()): insert.add_record(rpm_id=rpm_id, sigkey=sigkey, checksum=chsum, checksum_type=koji.CHECKSUM_TYPES[func]) insert.execute() From ec9c63263ddca93e59819a56aefc3fb025c9c96f Mon Sep 17 00:00:00 2001 From: Mike McLean Date: Apr 17 2024 13:43:50 +0000 Subject: [PATCH 3/3] use upsert to avoid duplicate inserts --- diff --git a/kojihub/kojihub.py b/kojihub/kojihub.py index cc3eb8f..9c88675 100644 --- a/kojihub/kojihub.py +++ b/kojihub/kojihub.py @@ -16111,11 +16111,13 @@ def create_rpm_checksum(rpm_id, sigkey, chsum_dict): f"rpm ID {r['rpm_id']}, sigkey {r['sigkey']} and " f"checksum type {koji.CHECKSUM_TYPES[r['checksum_type']]}.") if chsum_dict: - insert = BulkInsertProcessor(table='rpm_checksum') for func, chsum in sorted(chsum_dict.items()): - insert.add_record(rpm_id=rpm_id, sigkey=sigkey, checksum=chsum, - checksum_type=koji.CHECKSUM_TYPES[func]) - insert.execute() + data = {'rpm_id': rpm_id, + 'sigkey': sigkey, + 'checksum': chsum, + 'checksum_type': koji.CHECKSUM_TYPES[func]} + upsert = UpsertProcessor(table='rpm_checksum', data=data, skip_dup=True) + upsert.execute() def reject_draft(data, is_rpm=False, error=None):