Project

General

Profile

Bug #31340

Satellite Snapshot Backup Fails Erroneously if File Exists in Backup Directory

Added by Suraj Patil 2 months ago. Updated 13 days ago.

Status:
Ready For Testing
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Difficulty:
Triaged:
No
Bugzilla link:
Fixed in Releases:
Found in Releases:

Description

Cloned from https://bugzilla.redhat.com/show_bug.cgi?id=1889856

Description of problem:

While using the "foreman-maintain backup snapshot" command, if any file exists in the /var/snap/pgsql/ directory, the backup script thinks the pgsql snapshot has already been mounted. And later fails saying it isn't mounted.

The code from this script:

"/usr/share/gems/gems/foreman_maintain-0.5.4/definitions/procedures/backup/snapshot/mount_candlepin_db.rb"

Shows we only check if the directory is empty. If it is not, we assume the Postgres snapshot has been mounted:

35         if directory_empty?(mount_point)
36 with_spinner('Creating snapshot of Postgres') do |spinner|
37 lv_info = get_lv_info(feature(:candlepin_database).data_dir)
38 create_lv_snapshot('pgsql-snap', @block_size, lv_info[0])
39 spinner.update("Mounting snapshot of Postgres on #{mount_point}")
40 mount_snapshot('pgsql', lv_info[1])
41 end
42 else
43 puts 'Snapshot of Postgres is already mounted'
44 end

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

How reproducible:
always

Steps to Reproduce:
1. Run a "foreman-maintain backup snapshot" (which creates the snap and pgsql directories from /var/snap/pgsql)
2. After backup finishes successfully, the /var/snap/pgsql directory should be unmounted, and therefore empty. Now we can create a file "touch /var/snap/pgsql/file.txt"
3. Run the backup script again.

Actual results:
Script says both snapshots are mounted:

--------------------------------------------------------------------------------
Create and mount snapshot of Candlepin DB:
Snapshot of Postgres is already mounted [OK]
--------------------------------------------------------------------------------
Create and mount snapshot of Foreman DB:
Snapshot of Postgres is already mounted [OK]
--------------------------------------------------------------------------------

But later fails saying they are not mounted:
--------------------------------------------------------------------------------
Backup Candlepin DB offline: [FAIL]
Snapshot of Candlepin DB was not found mounted in /var/snap/pgsql
--------------------------------------------------------------------------------

Expected results:
Backup script should check further than just diretory_empty? method. We should see if the snapshot is actually mounted or not. Then we can error out with the correct error message (or try to mount over top of the current filesystem if that is permissible).

Additional info:

History

#1 Updated by The Foreman Bot 2 months ago

  • Status changed from New to Ready For Testing
  • Pull request https://github.com/theforeman/foreman_maintain/pull/422 added

Also available in: Atom PDF