From 2bedb7ecd2823330589367d8fc7cbf1a85bba7c9 Mon Sep 17 00:00:00 2001 From: Grant Gainey Date: Mon, 17 Jul 2023 15:50:04 -0400 Subject: [PATCH] Made another migration more robust when there are "broken" modulemds. fixes #3196. (cherry picked from commit 2d7bedabede13d441cb4483a4098af59d1f6cb87) --- CHANGES/3196.bugfix | 1 + pulp_rpm/app/migrations/0049_profiles_fix.py | 27 ++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) create mode 100644 CHANGES/3196.bugfix diff --git a/CHANGES/3196.bugfix b/CHANGES/3196.bugfix new file mode 100644 index 000000000..de696813b --- /dev/null +++ b/CHANGES/3196.bugfix @@ -0,0 +1 @@ +Made 0049 migration more robust in the face of unexpected data. diff --git a/pulp_rpm/app/migrations/0049_profiles_fix.py b/pulp_rpm/app/migrations/0049_profiles_fix.py index a8440e8ee..1e950877d 100644 --- a/pulp_rpm/app/migrations/0049_profiles_fix.py +++ b/pulp_rpm/app/migrations/0049_profiles_fix.py @@ -11,19 +11,20 @@ def fixup_modulemd_profiles(apps, schema_editor): for mmd in Modulemd.objects.all().iterator(): modulemd = yaml.safe_load(mmd.snippet) - unprocessed_profiles = modulemd["data"].get("profiles", {}) - profiles = {} - if unprocessed_profiles: - for name, data in unprocessed_profiles.items(): - rpms = data.get("rpms") - if rpms: - profiles[name] = rpms - mmd.profiles = profiles - modules_to_update.append(mmd) - - if len(modules_to_update) >= 100: - Modulemd.objects.bulk_update(modules_to_update, ["profiles"]) - modules_to_update.clear() + if modulemd: + unprocessed_profiles = modulemd["data"].get("profiles", {}) + profiles = {} + if unprocessed_profiles: + for name, data in unprocessed_profiles.items(): + rpms = data.get("rpms") + if rpms: + profiles[name] = rpms + mmd.profiles = profiles + modules_to_update.append(mmd) + + if len(modules_to_update) >= 100: + Modulemd.objects.bulk_update(modules_to_update, ["profiles"]) + modules_to_update.clear() Modulemd.objects.bulk_update(modules_to_update, ["profiles"])