Problem:
I just upgraded from Foreman v3.13 / Katello v4.15 to Foreman v3.14 / Katello v4.16 and experience the following Issue when trying to sync ansible collections from https://galaxy.ansible.com:
2025-04-20T14:40:24 [I|app|74f1585b] CONTENT_INDEX type=Katello::AnsibleCollection success=false duration=60110.79
2025-04-20T14:40:24 [E|bac|74f1585b] Error message: the server returns an error
74f1585b | HTTP status code: 502
74f1585b | Response headers: {"date"=>"Sun, 20 Apr 2025 12:39:24 GMT", "server"=>"Apache", "content-length"=>"341", "content-type"=>"text/html; charset=iso-8859-1"}
74f1585b | Response body: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
74f1585b | <html><head>
74f1585b | <title>502 Proxy Error</title>
74f1585b | </head><body>
74f1585b | <h1>Proxy Error</h1>
74f1585b | <p>The proxy server received an invalid
74f1585b | response from an upstream server.<br />
74f1585b | The proxy server could not handle the request<p>Reason: <strong>Error reading from remote server</strong></p></p>
74f1585b | </body></html>
74f1585b | (PulpAnsibleClient::ApiError)
74f1585b | /usr/share/gems/gems/pulp_ansible_client-0.22.3/lib/pulp_ansible_client/api_client.rb:83:in `call_api'
74f1585b | /usr/share/gems/gems/pulp_ansible_client-0.22.3/lib/pulp_ansible_client/api/content_collection_versions_api.rb:239:in `list_with_http_info'
74f1585b | /usr/share/gems/gems/pulp_ansible_client-0.22.3/lib/pulp_ansible_client/api/content_collection_versions_api.rb:155:in `list'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/pulp3/pulp_content_unit.rb:155:in `content_unit_list'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/pulp3/pulp_content_unit.rb:168:in `fetch_content_list'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/pulp3/pulp_content_unit.rb:136:in `block (2 levels) in pulp_units_batch_for_repo'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/pulp3/pulp_content_unit.rb:127:in `loop'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/pulp3/pulp_content_unit.rb:127:in `block in pulp_units_batch_for_repo'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/content_unit_indexer.rb:26:in `each'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/services/katello/content_unit_indexer.rb:26:in `import_all'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/models/katello/repository.rb:1033:in `block (2 levels) in index_content'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/lib/katello/logging.rb:8:in `time'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/models/katello/repository.rb:1032:in `block in index_content'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/models/katello/repository.rb:1031:in `each'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/models/katello/repository.rb:1031:in `index_content'
74f1585b | /usr/share/gems/gems/katello-4.16.0/app/lib/actions/katello/repository/index_content.rb:22:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:590:in `block (3 levels) in execute_run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/rails_executor_wrap.rb:14:in `block in run'
74f1585b | /usr/share/gems/gems/activesupport-7.0.8.7/lib/active_support/execution_wrapper.rb:92:in `wrap'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/rails_executor_wrap.rb:13:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action/progress.rb:29:in `with_progress_calculation'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action/progress.rb:15:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/load_setting_values.rb:20:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_request_id.rb:15:in `block in run'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_request_id.rb:52:in `restore_current_request_id'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_request_id.rb:15:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_timezone.rb:15:in `block in run'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_timezone.rb:44:in `restore_curent_timezone'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_timezone.rb:15:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_taxonomies.rb:15:in `block in run'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_taxonomies.rb:45:in `restore_current_taxonomies'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_taxonomies.rb:15:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:33:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:28:in `pass'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware.rb:20:in `pass'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_user.rb:15:in `block in run'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_user.rb:54:in `restore_curent_user'
74f1585b | /usr/share/gems/gems/foreman-tasks-10.0.2/app/lib/actions/middleware/keep_current_user.rb:15:in `run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/stack.rb:24:in `call'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/middleware/world.rb:31:in `execute'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:589:in `block (2 levels) in execute_run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:588:in `catch'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:588:in `block in execute_run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:491:in `block in with_error_handling'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:491:in `catch'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:491:in `with_error_handling'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:583:in `execute_run'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/action.rb:304:in `execute'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:18:in `block (2 levels) in execute'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/execution_plan/steps/abstract.rb:168:in `with_meta_calculation'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:17:in `block in execute'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:32:in `open_action'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/execution_plan/steps/abstract_flow_step.rb:16:in `execute'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/director.rb:70:in `execute'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/executors/sidekiq/worker_jobs.rb:12:in `block (2 levels) in perform'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/executors.rb:18:in `run_user_code'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/executors/sidekiq/worker_jobs.rb:10:in `block in perform'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/executors/sidekiq/worker_jobs.rb:26:in `with_telemetry'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/executors/sidekiq/worker_jobs.rb:9:in `perform'
74f1585b | /usr/share/gems/gems/dynflow-1.9.0/lib/dynflow/executors/sidekiq/serialization.rb:28:in `perform'
74f1585b | [ sidekiq ]
74f1585b | [ concurrent-ruby ]
2025-04-20T14:40:24 [I|bac|74f1585b] Task {label: , execution_plan_id: 39c8b7eb-3bcd-4897-a138-09c5557ccc3e} state changed: pending
2025-04-20T14:40:24 [I|bac|74f1585b] Task {label: Actions::Katello::Repository::CapsuleSync, id: 5e055a47-3164-4edd-ae54-9ffd5d613dca, execution_plan_id: 39c8b7eb-3bcd-4897-a138-09c5557ccc3e} state changed: planning
2025-04-20T14:40:24 [I|bac|74f1585b] Task {label: Actions::Katello::Repository::CapsuleSync, id: 5e055a47-3164-4edd-ae54-9ffd5d613dca, execution_plan_id: 39c8b7eb-3bcd-4897-a138-09c5557ccc3e} state changed: planned
2025-04-20T14:40:24 [I|bac|74f1585b] Task {label: Actions::Katello::Repository::CapsuleSync, id: 5e055a47-3164-4edd-ae54-9ffd5d613dca, execution_plan_id: 39c8b7eb-3bcd-4897-a138-09c5557ccc3e} state changed: running
2025-04-20T14:40:24 [I|bac|74f1585b] Task {label: Actions::Katello::Repository::CapsuleSync, id: 5e055a47-3164-4edd-ae54-9ffd5d613dca, execution_plan_id: 39c8b7eb-3bcd-4897-a138-09c5557ccc3e} state changed: stopped result: success
2025-04-20T14:40:25 [I|bac|74f1585b] Task {label: Actions::Katello::Repository::Sync, id: fa8f64ee-ec02-47e2-b7f6-07c54392d2be, execution_plan_id: 5e613d90-f3a1-4bd0-96f0-4943710e40f9} state changed: stopped result: warning
The task stops with state == āwarningā and the following message:
Error message: the server returns an error
HTTP status code: 502
Response headers: {"date"=>"Sun, 20 Apr 2025 14:30:42 GMT", "server"=>"Apache", "content-length"=>"341", "content-type"=>"text/html; charset=iso-8859-1"}
Response body: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>502 Proxy Error</title>
</head><body>
<h1>Proxy Error</h1>
<p>The proxy server received an invalid
response from an upstream server.<br />
The proxy server could not handle the request<p>Reason: <strong>Error reading from remote server</strong></p></p>
</body></html>
For testing purposes, I was using the following requirements.yml:
---
collections:
- name: ansible.posix
- name: ansible.utils
- name: community.general
...
Expected outcome:
The sync runs successfully.
Foreman and Proxy versions:
# rpm -qa | grep -iIE '^foreman-[0-9]\.[0-9]|^katello-[0-9]\.[0-9]'
foreman-3.14.0-1.el9.noarch
katello-4.16.0-1.el9.noarch
Foreman and Proxy plugin versions:
# rpm -qa | grep -iIE '^rubygem-pulp_ansible'
rubygem-pulp_ansible_client-0.22.3-1.el9.noarch
Distribution and version:
# cat /etc/redhat-release
AlmaLinux release 9.5 (Teal Serval)
Other relevant data:
As mentioned above, Iām trying to sync a few collections from https://galaxy.ansible.com. Iām not using a proxy in this environment, nor did I set up any authentication towards the upstream repo.
If any more information is required, please let me know.
Thanks