Bug 2077850

Summary: Puppet purge fails on an upgraded Satellite
Product: Red Hat Satellite Reporter: Vladimír Sedmík <vsedmik>
Component: PuppetAssignee: satellite6-bugs <satellite6-bugs>
Status: CLOSED ERRATA QA Contact: Vladimír Sedmík <vsedmik>
Severity: high Docs Contact:
Priority: unspecified    
Version: 6.11.0CC: oezr, pcreech, zhunting
Target Milestone: 6.11.0Keywords: Triaged
Target Release: Unused   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: rubygem-foreman_puppet-2.0.6 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-07-05 14:35:13 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:
Bug Depends On:    
Bug Blocks: 1809769    

Description Vladimír Sedmík 2022-04-22 12:38:57 UTC
Description of problem:
Puppet purge fails on an upgraded setup (while on fresh setup it works well).


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


How reproducible:
always


Steps to Reproduce:
1. Have a 6.10 Satellite with registered external Capsule.
2. Upgrade the Satellite to 6.11
3. Upgrade the Capsule to 6.11
4. Disable puppet on Capsule - it succeeds.
5. Try to disable puppet on Satellite - it fails.


Actual results:
[root@satellite ~]# foreman-maintain plugin purge-puppet
Running Remove Puppet feature
================================================================================
Check for Puppet capsules from the database:                          [OK]
--------------------------------------------------------------------------------
Remove Puppet feature:                                                [FAIL]
Failed executing foreman-rake db:migrate VERSION=0 SCOPE=foreman_puppet, exit status 1:
 'ErbParser' is ignored.
'RubyParser' is ignored.
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::DependentObjectsStillExist: ERROR:  cannot drop table environments because other objects depend on it
DETAIL:  constraint hostgroups_environment_id_fk on table hostgroups depends on table environments
constraint hosts_environment_id_fk on table hosts depends on table environments
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
/opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `async_exec'
/opt/theforeman/tfm/root/usr/share/gems/gems/activerecord-6.0.4.7/lib/active_record/connection_adapters/postgresql/database_statements.rb:92:in `block (2 levels) in execute'
/opt/theforeman/tfm/root/usr/share/gems/gems/activesupport-6.0.4.7/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
...


Expected results:
No errors and successful purge.

Comment 2 Ondřej Ezr 2022-04-25 13:37:52 UTC
In the upstream investigation, we found out that the down migration repopulates the core data structures with data (specifically we repopulate Host table with environment_id) and thus the migration fails to drop Puppet owned tables.

Bit more detail is in a https://github.com/theforeman/foreman_puppet/pull/271 and discussion there. Also the PR would fix the issue, we are just thinking if it is the best way.

Comment 3 Ondřej Ezr 2022-04-27 15:10:16 UTC
This is merged upstream, but not yet released

Comment 10 errata-xmlrpc 2022-07-05 14:35:13 UTC
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 (Moderate: Satellite 6.11 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-2022:5498