From b7bf423b8fd1ea5d20c7910fb126a75b024c6f8b Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Fri, 6 Dec 2024 10:33:44 +0000 Subject: [PATCH] fix(backups): do not use post_restore on backup --- selfprivacy_api/backup/__init__.py | 1 - selfprivacy_api/backup/tasks.py | 2 +- selfprivacy_api/services/__init__.py | 8 ++------ tests/test_backup.py | 4 ++-- 4 files changed, 5 insertions(+), 10 deletions(-) diff --git a/selfprivacy_api/backup/__init__.py b/selfprivacy_api/backup/__init__.py index c80464c..69522a2 100644 --- a/selfprivacy_api/backup/__init__.py +++ b/selfprivacy_api/backup/__init__.py @@ -258,7 +258,6 @@ class Backups: Backups._on_new_snapshot_created(service_name, snapshot) if reason == BackupReason.AUTO: Backups._prune_auto_snaps(service) - service.post_restore() except Exception as error: Jobs.update(job, status=JobStatus.ERROR, error=str(error)) raise error diff --git a/selfprivacy_api/backup/tasks.py b/selfprivacy_api/backup/tasks.py index 00d2578..15a6f53 100644 --- a/selfprivacy_api/backup/tasks.py +++ b/selfprivacy_api/backup/tasks.py @@ -181,7 +181,7 @@ def which_snapshots_to_full_restore() -> list[Snapshot]: autoslice = Backups.last_backup_slice() api_snapshot = None for snap in autoslice: - if snap.service_name == "api": + if snap.service_name == ServiceManager.get_id(): api_snapshot = snap autoslice.remove(snap) if api_snapshot is None: diff --git a/selfprivacy_api/services/__init__.py b/selfprivacy_api/services/__init__.py index 4625ee0..2a74f37 100644 --- a/selfprivacy_api/services/__init__.py +++ b/selfprivacy_api/services/__init__.py @@ -226,12 +226,8 @@ class ServiceManager(Service): @classmethod def pre_backup(cls): tempdir = cls.dump_dir() - if not path.exists(tempdir): - makedirs(tempdir) - - paths = listdir(tempdir) - for file in paths: - remove(file) + rmtree(join(tempdir), ignore_errors=True) + makedirs(tempdir) for p in [USERDATA_FILE, SECRETS_FILE, DKIM_DIR]: cls.stash_a_path(p) diff --git a/tests/test_backup.py b/tests/test_backup.py index d087782..16589ec 100644 --- a/tests/test_backup.py +++ b/tests/test_backup.py @@ -828,7 +828,7 @@ def test_cache_invalidaton_task(backups, dummy_service): def test_service_manager_backup_snapshot_persists(backups, generic_userdata, dkim_file): # There was a bug with snapshot disappearance due to post_restore hooks, checking for that - manager = ServiceManager.get_service_by_id("api") + manager = ServiceManager.get_service_by_id(ServiceManager.get_id()) assert manager is not None snapshot = Backups.back_up(manager) @@ -844,7 +844,7 @@ def test_service_manager_backs_up_without_crashing( """ Service manager is special and needs testing. """ - manager = ServiceManager.get_service_by_id("api") + manager = ServiceManager.get_service_by_id(ServiceManager.get_id()) assert manager is not None snapshot = Backups.back_up(manager)