Bug 2111835

Summary: LEAPP upgrade hangs if /var/opt/rh/rh-postgresql12/lib/pgsql/data is mounted
Product: Red Hat Satellite Reporter: Lukas Pramuk <lpramuk>
Component: UpgradesAssignee: Evgeni Golov <egolov>
Status: CLOSED ERRATA QA Contact: Lukas Pramuk <lpramuk>
Severity: high Docs Contact:
Priority: high    
Version: 6.11.1CC: ahumbe, aruzicka, ehelms, lstejska, pstodulk
Target Milestone: UnspecifiedKeywords: Triaged, Upgrades
Target Release: Unused   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: leapp-repository-0.16.0-8.el7_9 Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2022-08-23 20:14:19 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 Lukas Pramuk 2022-07-28 09:47:44 UTC
Description of problem:
LEAPP upgrade hangs if /var/opt/rh/rh-postgresql12/lib/pgsql/data is mounted and after forced reboot a machine is unusable. 

For mountpoints at /var/opt/rh/rh-postgresql12/lib/pgsql or higher in directory structure this issue do not occur


Version-Release number of selected component (if applicable):
Satellite 6.11.1
leapp-0.14.0-1.el7_9.noarch
leapp-upgrade-el7toel8-0.16.0-7.el7_9.noarch (brew)


How reproducible:
deterministic


Steps to Reproduce:
1. Switch over PostgreSQL to be mounted at /var/opt/rh/rh-postgresql12/lib/pgsql/data
# eval $(blkid -o export /dev/vdb1)
# echo "UUID=$UUID /var/opt/rh/rh-postgresql12/lib/pgsql/data xfs defaults 0 2">> /etc/fstab
# satellite-maintain service stop
# mv /var/opt/rh/rh-postgresql12/lib/pgsql/data{,-orig}
# mkdir /var/opt/rh/rh-postgresql12/lib/pgsql/data
# mount -a
# mv /var/opt/rh/rh-postgresql12/lib/pgsql/data-orig/* /var/opt/rh/rh-postgresql12/lib/pgsql/data
# chown postgres:postgres /var/opt/rh/rh-postgresql12/lib/pgsql/data
# chmod 700 /var/opt/rh/rh-postgresql12/lib/pgsql/data
# restorecon -v /var/opt/rh/rh-postgresql12/lib/pgsql/data
# satellite-maintain service start

1a. Optionally reboot to verify fstab entry

2.Run LEAPP upgrade of Satellite 6.11 to RHEL8
# leapp upgrade --reboot

3. After leapp reboots closely monitor console
...
[ 3777.369142] upgrade[32930]: ====> * satellite_upgrade_data_migration
[ 3777.370667] upgrade[32930]:         Reconfigure Satellite services and migrate PostgreSQL data
[ 3783.262630] upgrade[33762]: Process Process-208:
[ 3783.263682] upgrade[33762]: Traceback (most recent call last):
[ 3783.264878] upgrade[33762]:   File "/usr/lib64/python3.6/shutil.py", line 550, in move
[ 3783.266362] upgrade[33762]:     os.rename(src, real_dst)
[ 3783.267405] upgrade[33762]: OSError: [Errno 16] Device or resource busy: '/var/opt/rh/rh-postgresql12/lib/pgsql/data/' -> '/var/lib/pgsql/data/'
[ 3783.269717] upgrade[33762]: During handling of the above exception, another exception occurred:
[ 3783.271343] upgrade[33762]: Traceback (most recent call last):
[ 3783.272545] upgrade[33762]:   File "/usr/lib64/python3.6/multiprocessing/process.py", line 258, in _bootstrap
[ 3783.274636] upgrade[33762]:     self.run()
[ 3783.275617] upgrade[33762]:   File "/usr/lib64/python3.6/multiprocessing/process.py", line 93, in run
[ 3783.277396] upgrade[33762]:     self._target(*self._args, **self._kwargs)
[ 3783.278818] upgrade[33762]:   File "/root/tmp_leapp_py3/leapp/repository/actor_definition.py", line 72, in _do_run
[ 3783.280702] upgrade[33762]:     actor_instance.run(*args, **kwargs)
[ 3783.281962] upgrade[33762]:   File "/root/tmp_leapp_py3/leapp/actors/__init__.py", line 290, in run
[ 3783.283662] upgrade[33762]:     self.process(*args)
[ 3783.284724] upgrade[33762]:   File "/etc/leapp/repos.d/system_upgrade/el7toel8/actors/satellite_upgrade_data_migration/actor.py", line 45, in process
[ 3783.287147] upgrade[33762]:     shutil.move(POSTGRESQL_SCL_DATA_PATH, POSTGRESQL_DATA_PATH)
[ 3783.288724] upgrade[33762]:   File "/usr/lib64/python3.6/shutil.py", line 562, in move
[ 3783.290316] upgrade[33762]:     rmtree(src)
[ 3783.291364] upgrade[33762]:   File "/usr/lib64/python3.6/shutil.py", line 490, in rmtree
[ 3783.293121] upgrade[33762]:     onerror(os.rmdir, path, sys.exc_info())
[ 3783.294613] upgrade[33762]:   File "/usr/lib64/python3.6/shutil.py", line 488, in rmtree
[ 3783.296237] upgrade[33762]:     os.rmdir(path)
[ 3783.297329] upgrade[33762]: OSError: [Errno 16] Device or resource busy: '/var/opt/rh/rh-postgresql12/lib/pgsql/data/'

>>> satellite_upgrade_data_migration actor tries to move the mountpoint


Actual results:
leapp upgrade hangs forever and renders system unusable

Expected results:
leapp upgrade successfully finishes

Comment 3 Lukas Pramuk 2022-08-18 07:48:38 UTC
VERIFIED.

@Satellite 6.11.1.1
leapp-0.14.0-1.el7_9.noarch
leapp-upgrade-el7toel8-0.16.0-8.el7_9.noarch

by the following manual reproducer described in comment#0:
...

3) After leapp reboots closely monitor console or check /var/log/leapp/leapp-upgrade.log afterwards

Aug 17 16:31:51 localhost upgrade[33059]: ====> * satellite_upgrade_data_migration
Aug 17 16:31:51 localhost upgrade[33059]:         Reconfigure Satellite services and migrate PostgreSQL data

>>> satellite_upgrade_data_migration actor successfully moved data under the mountpoint

Comment 5 errata-xmlrpc 2022-08-23 20:14:19 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 (leapp-repository bug fix update), 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/RHBA-2022:6141