leapp-repository/SOURCES/0045-fix-pes_events_scanner-ensure-output-contains-no-dup.patch
eabdullin 1377bbc817 Import from CS git
(cherry picked from commit c60931c8ff)
2025-01-23 12:06:22 +02:00

56 lines
2.7 KiB
Diff

From e10968202016575ed4431f67a09ab7a3aef8dfcc Mon Sep 17 00:00:00 2001
From: Petr Stodulka <pstodulk@redhat.com>
Date: Wed, 18 Sep 2024 00:40:25 +0200
Subject: [PATCH 45/53] fix(pes_events_scanner): ensure output contains no
duplicates
RpmTransactionTasks messages have higher priority than instructions
based on PES data. Previously, if multiple such messages existed
with duplicate instructions, this could lead to the crash of
the actor - especially in case when an existing package has been
asked to be removed several times. Ensure the occurance of each
instruction is unique (list -> set).
jira: RHEL-50076
---
.../libraries/pes_events_scanner.py | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py b/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py
index f5cb2613..a798017f 100644
--- a/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py
+++ b/repos/system_upgrade/common/actors/peseventsscanner/libraries/pes_events_scanner.py
@@ -78,19 +78,22 @@ def get_installed_pkgs():
def get_transaction_configuration():
"""
- Get pkgs to install, keep and remove from the user configuration files in /etc/leapp/transaction/.
+ Get pkgs to install, keep and remove from RpmTransactionTasks messages.
- These configuration files have higher priority than PES data.
- :return: RpmTransactionTasks model instance
+ Note these messages reflects inputs from various actors and configuration
+ files in /etc/leapp/transaction/. As these are explicit instruction, they
+ have higher priority than instructions from PES data.
+
+ :return: TransactionConfiguration
"""
- transaction_configuration = TransactionConfiguration(to_install=[], to_remove=[], to_keep=[])
+ transaction_configuration = TransactionConfiguration(to_install=set(), to_remove=set(), to_keep=set())
_Pkg = partial(Package, repository=None, modulestream=None)
for tasks in api.consume(RpmTransactionTasks):
- transaction_configuration.to_install.extend(_Pkg(name=pkg_name) for pkg_name in tasks.to_install)
- transaction_configuration.to_remove.extend(_Pkg(name=pkg_name) for pkg_name in tasks.to_remove)
- transaction_configuration.to_keep.extend(_Pkg(name=pkg_name) for pkg_name in tasks.to_keep)
+ transaction_configuration.to_install.update(_Pkg(name=pkg_name) for pkg_name in tasks.to_install)
+ transaction_configuration.to_remove.update(_Pkg(name=pkg_name) for pkg_name in tasks.to_remove)
+ transaction_configuration.to_keep.update(_Pkg(name=pkg_name) for pkg_name in tasks.to_keep)
return transaction_configuration
--
2.47.1