Skip to content

fix: clean up clone dataset on destroy

Description

  • clean up clone dataset on automatic destroy
  • adjust snapshot properties in logical mode after that

Thread: https://postgres-ai.slack.com/archives/CSXS2JV6W/p1755519123479739

Related issue

Examples

Note that there is an exception - grep -Ev 'test_dblab_pool@snapshot_20250821141912_pre' because this clone exists

2025/08/21 14:42:00 runners.go:106: [DEBUG]  Run(Local): "zfs list -S clones -o name,origin -H -r test_dblab_pool"
2025/08/21 14:42:00 runners.go:151: [DEBUG]  Run(Local): output "test_dblab_pool	-
test_dblab_pool/branch	-
test_dblab_pool/branch/main	-
test_dblab_pool/branch/main/clone_pre_20250821141912	-
test_dblab_pool/branch/main/clone_pre_20250821141912/r0	test_dblab_pool@snapshot_20250821141912_pre
test_dblab_pool/branch/main/clone_pre_20250821142000	-
test_dblab_pool/branch/main/clone_pre_20250821142500	-
test_dblab_pool/branch/main/clone_pre_20250821142500/r0	test_dblab_pool@snapshot_20250821142500_pre
test_dblab_pool/branch/main/clone_pre_20250821143000	-
test_dblab_pool/branch/main/clone_pre_20250821143000/r0	test_dblab_pool@snapshot_20250821143000_pre
test_dblab_pool/branch/main/clone_pre_20250821143500	-
test_dblab_pool/branch/main/clone_pre_20250821143500/r0	test_dblab_pool@snapshot_20250821143500_pre
test_dblab_pool/branch/main/clone_pre_20250821144000	-
test_dblab_pool/branch/main/clone_pre_20250821144000/r0	test_dblab_pool@snapshot_20250821144000_pre
test_dblab_pool/branch/main/d2jio1gn9i6s73e5q2ag	-
test_dblab_pool/branch/main/d2jio1gn9i6s73e5q2ag/r0	test_dblab_pool/branch/main/clone_pre_20250821141912/r0@snapshot_20250821141913"
2025/08/21 14:42:00 runners.go:106: [DEBUG]  Run(Local): "zfs list -t snapshot -H -o name -s dblab:datastateat -s creation -r test_dblab_pool | grep -v clone | grep _pre$ | head -n -3 | grep -Ev 'test_dblab_pool@snapshot_20250821141912_pre' | xargs -n1 --no-run-if-empty zfs destroy -R"
2025/08/21 14:42:00 runners.go:151: [DEBUG]  Run(Local): output ""

Idle clone cleanup

2025/08/21 14:45:33 base.go:778: [DEBUG]  Not found recent activity for session: "1". Clone name: "d2jio1gn9i6s73e5q2ag"
2025/08/21 14:45:33 base.go:794: [DEBUG]  Check an active query for: "1".
2025/08/21 14:45:33 base.go:742: [INFO]   Idle clone "d2jio1gn9i6s73e5q2ag" is going to be removed.
2025/08/21 14:45:33 postgres.go:142: [DEBUG]  Stopping Postgres container...
2025/08/21 14:45:33 runners.go:106: [DEBUG]  Run(Local): "rm -rf /var/lib/test/dblab_mount/test_dblab_pool/sockets/d2jio1gn9i6s73e5q2ag/.*9000"
2025/08/21 14:45:33 runners.go:151: [DEBUG]  Run(Local): output ""
2025/08/21 14:45:33 runners.go:106: [DEBUG]  Run(Local): "zfs destroy -R test_dblab_pool/branch/main/d2jio1gn9i6s73e5q2ag"
2025/08/21 14:45:33 observer.go:222: [DEBUG]  Observing clone has been removed:  d2jio1gn9i6s73e5q2ag
2025/08/21 14:45:33 runners.go:151: [DEBUG]  Run(Local): output ""
2025/08/21 14:45:33 webhooks.go:95: [DEBUG]  Skipped unknown hook:  clone_delete

...

2025/08/21 14:48:00 runners.go:106: [DEBUG]  Run(Local): "zfs list -t snapshot -H -o name -s dblab:datastateat -s creation -r test_dblab_pool | grep -v clone | grep _pre$ | head -n -3 | xargs -n1 --no-run-if-empty zfs destroy -R"
2025/08/21 14:48:00 runners.go:151: [DEBUG]  Run(Local): output ""
$ zfs list -S clones -o name,origin -H -r test_dblab_pool
test_dblab_pool	-
test_dblab_pool/branch	-
test_dblab_pool/branch/main	-
test_dblab_pool/branch/main/clone_pre_20250821141912	-
test_dblab_pool/branch/main/clone_pre_20250821142000	-
test_dblab_pool/branch/main/clone_pre_20250821142500	-
test_dblab_pool/branch/main/clone_pre_20250821143000	-
test_dblab_pool/branch/main/clone_pre_20250821143500	-
test_dblab_pool/branch/main/clone_pre_20250821143500/r0	test_dblab_pool@snapshot_20250821143500_pre
test_dblab_pool/branch/main/clone_pre_20250821144000	-
test_dblab_pool/branch/main/clone_pre_20250821144000/r0	test_dblab_pool@snapshot_20250821144000_pre
test_dblab_pool/branch/main/clone_pre_20250821144500	-
test_dblab_pool/branch/main/clone_pre_20250821144500/r0	test_dblab_pool@snapshot_20250821144500_pre

$ zfs list -t snapshot
NAME                                                                              USED  AVAIL     REFER  MOUNTPOINT
test_dblab_pool@snapshot_20250821143500_pre                                       179K      -     23.3M  -
test_dblab_pool@snapshot_20250821144000_pre                                        17K      -     23.3M  -
test_dblab_pool@snapshot_20250821144500_pre                                        17K      -     23.3M  -
test_dblab_pool/branch/main/clone_pre_20250821143500/r0@snapshot_20250821143500     0B      -     23.4M  -
test_dblab_pool/branch/main/clone_pre_20250821144000/r0@snapshot_20250821144000     0B      -     23.4M  -
test_dblab_pool/branch/main/clone_pre_20250821144500/r0@snapshot_20250821144500     0B      -     23.4M  -

Checklist

  • MR description has been reviewed
  • MR changes are functionally tested
  • MR does NOT have API/CLI changes OR there are API/CLI changes and they have been reviewed & DOCS ARE ADJUSTED (reference doc, etc)
  • MR does NOT have UI changes OR there are UI changes and they have been reviewed & UX IS REVIEWED

Closes #605 (closed)

Edited by Artyom Kartasov

Merge request reports

Loading