Bug 1268844

Summary: product list takes extremely long if a sync plan has many products
Product: Red Hat Satellite Reporter: Pavel Moravec <pmoravec>
Component: PerformanceAssignee: Katello Bug Bin <katello-bugs>
Status: CLOSED DUPLICATE QA Contact:
Severity: high Docs Contact:
Priority: medium    
Version: 6.1.1CC: bkearney
Target Milestone: UnspecifiedKeywords: Performance
Target Release: Unused   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-10-08 16:07:58 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Pavel Moravec 2015-10-05 12:25:56 UTC
Description of problem:
Having a synchronization plan with many products associated, listing products takes several minutes. Example: for 20 products, all added into a single sync plan, "hammer product list" takes 4 minutes.

The reason is - per hammer debug logs - caused by the search logic that:
- generates a list of all products
- for each product in the list, it checks presence of sync plan associated with the product
- if the sync plan exists, it lists all products within the sync plan (due to an unknown reason - but _this_ is the culprit of the BZ)

Due to the above, time complexity of product listing is quadratic to the number of products in the (biggest) sync plan.


Version-Release number of selected component (if applicable):
foreman-1.7.2.34-1.el7sat.noarch


How reproducible:
100%


Steps to Reproduce:
1. Enable 20 products
2. count time to "hammer product list"
3. create 20 sync plans, each having 1 product
4. count time to "hammer product list"
5. put all products into one sync plan
6. count time to "hammer product list"


Actual results:
2. and 4. shows very similar times
6. shows extraordinary higher time


Expected results:
2, 4 and 6 to show similar execution times
Time to list products should not depend on number of products in a sync plan


Additional info:
The issue is nicely evident when enabling hammer debugs and grepping for e.g. "label" there in REST API "hammer product list" response. Each product in a sync plan is written there as many times as the number of products in the sync plan is.

Comment 2 Bryan Kearney 2015-10-08 16:07:58 UTC

*** This bug has been marked as a duplicate of bug 1253802 ***