Description of problem: [RFE] Add a hard limit of 100 items to restrict any fact child-hash/array Version-Release number of selected component (if applicable): Satellite 6.4.2 How reproducible: At customer environment for now. Steps to Reproduce: 1. We have seen situations at customer environments where facts like disks* has hundreds or thousands of child items which bloat the facts associated tables in the db. Actual results: As explained above Expected results: lzap recommended that adding a limit of 100 items for any child-hash/array will help alleviate this kind of issues in the future. If the number of items > 100, just drop the hash/array completely and write a warning to logs. Additional info:
Created redmine issue https://projects.theforeman.org/issues/26984 from this bug
Moving this bug to POST for triage into Satellite 6 since the upstream issue https://projects.theforeman.org/issues/26984 has been resolved.
Tested on Satellite 6.8 Snap 10. Created some dummy structured facts in "/etc/puppetlabs/facter/facts.d". If the there is a subhash with number of items exceeding 100, the hash is dropped during a import with the following error message: 2020-08-17T08:16:32 [I|app|1e18fd8c] Parameters: {"facts"=>"[FILTERED]", "name"=>"ibm-x3250m4-16.rhts.eng.bos.redhat.com", "certname"=>"ibm-x3250m4-16.rhts.eng.bos.redhat.com", "apiv"=>"v2", "host"=>{"certname"=>"ibm-x3250m4-16.rhts.eng.bos.redhat.com", "name"=>"ibm-x3250m4-16.rhts.eng.bos.redhat.com"}} 2020-08-17T08:16:33 [W|app|1e18fd8c] Some subtrees exceeded 100 limit of facts, dropped 120 keys 2020-08-17T08:16:35 [I|app|1e18fd8c] Import facts for 'ibm-x3250m4-16.rhts.eng.bos.redhat.com' completed. Added: 428, Updated: 12, Deleted 0 facts Change to the "Administer->Settings->Provisioning->Maximum structured facts" setting is respected during the import. The filtering is enabled only for the first level of subfacts, meaning that parentfact: subfact1: fact1 subfact2: fact2 <...> subfact101: fact101 will fail to import, while parentfact: middlefact: subfact1: fact1 subfact2: fact2 <...> subfact101: fact101 will be imported successfully and not filtered out. According to the last line in the comment https://github.com/theforeman/foreman/pull/6850#issue-289611209 this is expected behavior.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory (Important: Satellite 6.8 release), and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHSA-2020:4366