Bug 2225534 - katello:reimport fails with "TypeError: no implicit conversion of String into Integer" when there are product contents to move
Summary: katello:reimport fails with "TypeError: no implicit conversion of String into...
Keywords:
Status: NEW
Alias: None
Product: Red Hat Satellite
Classification: Red Hat
Component: Hosts - Content
Version: 6.13.1
Hardware: All
OS: All
unspecified
medium
Target Milestone: Unspecified
Assignee: satellite6-bugs
QA Contact: Satellite QE Team
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-07-25 13:42 UTC by Sayan Das
Modified: 2023-08-03 13:22 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Issue Tracker SAT-19140 0 None None None 2023-07-25 13:48:02 UTC
Red Hat Knowledge Base (Solution) 7025681 0 None None None 2023-07-25 15:25:33 UTC

Description Sayan Das 2023-07-25 13:42:26 UTC
Description of problem:

foreman-rake katello:reimport would fail while importing "Katello::Content" and the failure is only observed when there are product contents to move and https://github.com/Katello/katello/blob/KATELLO-4.8/app/services/katello/product_content_importer.rb#L37-L44 code is triggered. 


Version-Release number of selected component (if applicable):

Satellite 6.13.1 


How reproducible:

Only on Customer's environment


Steps to Reproduce:
NA

Actual results:

# foreman-rake katello:reimport  --trace


** Invoke katello:reimport (first_time)
** Invoke dynflow:client (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute dynflow:client
** Invoke katello:check_ping (first_time)
** Invoke environment
** Invoke dynflow:client
** Execute katello:check_ping
** Execute katello:reimport
Importing Katello::Subscription
Importing Katello::Pool
Importing Katello::Content
rake aborted!
TypeError: no implicit conversion of String into Integer
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:39:in `[]'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:39:in `block in find_product_for_content'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:38:in `each'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:38:in `find'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:38:in `find_product_for_content'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:66:in `block in handle_product_moves'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:63:in `each'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:63:in `handle_product_moves'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:84:in `block in import'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:83:in `each'
/usr/share/gems/gems/katello-4.7.0.25/app/services/katello/product_content_importer.rb:83:in `import'
/usr/share/gems/gems/katello-4.7.0.25/app/models/katello/content.rb:55:in `block in import_all'


Expected results:

No such errors


Additional info:

For this specific user, following change fixed the issue:

diff --git a/app/services/katello/product_content_importer.rb b/app/services/katello/product_content_importer.rb
index b5e345e..6757768 100644
--- a/app/services/katello/product_content_importer.rb
+++ b/app/services/katello/product_content_importer.rb
@@ -36,7 +36,7 @@ module Katello
 
     def find_product_for_content(content_id)
       prod = @cp_products.find do |prod_json|
-        prod_json['productContent'].any? do |product_content_json|
+        prod_json.first&.[]('productContent')&.any? do |product_content_json|
           product_content_json["content"]["id"] == content_id
         end
       end


See next comments for more information.


Note You need to log in before you can comment on or make changes to this bug.