Skip to content

Commit 428c114

Browse files
committed
Fix duplicate loop bug in block_remaining_rh_advisories
The block_remaining_rh_advisories function had a nested loop bug where it would iterate over all mirrors from a prefetch, then inside that loop query for active mirrors and iterate over them again. This caused: 1. Redundant database queries (N queries for N total mirrors) 2. Processing each active mirror N times instead of once 3. Variable shadowing with the reused 'mirror' variable name Simplified to a single query for active mirrors and one processing loop.
1 parent d6c2204 commit 428c114

File tree

1 file changed

+16
-20
lines changed

1 file changed

+16
-20
lines changed

apollo/rpmworker/rh_matcher_activities.py

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -840,24 +840,20 @@ async def match_rh_repos(params) -> None:
840840

841841
@activity.defn
842842
async def block_remaining_rh_advisories(supported_product_id: int) -> None:
843-
supported_product = await SupportedProduct.filter(
844-
id=supported_product_id
845-
).first().prefetch_related("rh_mirrors")
846-
for mirror in supported_product.rh_mirrors:
847-
mirrors = await SupportedProductsRhMirror.filter(
848-
supported_product_id=supported_product_id,
849-
active=True
843+
mirrors = await SupportedProductsRhMirror.filter(
844+
supported_product_id=supported_product_id,
845+
active=True
846+
)
847+
for mirror in mirrors:
848+
advisories = await get_matching_rh_advisories(mirror)
849+
await SupportedProductsRhBlock.bulk_create(
850+
[
851+
SupportedProductsRhBlock(
852+
**{
853+
"supported_products_rh_mirror_id": mirror.id,
854+
"red_hat_advsiory_id": advisory.id,
855+
}
856+
) for advisory in advisories
857+
],
858+
ignore_conflicts=True
850859
)
851-
for mirror in mirrors:
852-
advisories = await get_matching_rh_advisories(mirror)
853-
await SupportedProductsRhBlock.bulk_create(
854-
[
855-
SupportedProductsRhBlock(
856-
**{
857-
"supported_products_rh_mirror_id": mirror.id,
858-
"red_hat_advsiory_id": advisory.id,
859-
}
860-
) for advisory in advisories
861-
],
862-
ignore_conflicts=True
863-
)

0 commit comments

Comments
 (0)