From b7bf423b8fd1ea5d20c7910fb126a75b024c6f8b Mon Sep 17 00:00:00 2001 From: Houkime <> Date: Fri, 6 Dec 2024 10:33:44 +0000 Subject: [PATCH 1/2] 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) From 25b6b9ca7722358630e84a8e054be8f9fb9d67b3 Mon Sep 17 00:00:00 2001 From: Inex Code Date: Sun, 8 Dec 2024 16:39:30 +0300 Subject: [PATCH 2/2] fix: SelfPrivacy API didn't load on system startup --- nixos/module.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/nixos/module.nix b/nixos/module.nix index 2f7a164..6199597 100644 --- a/nixos/module.nix +++ b/nixos/module.nix @@ -49,6 +49,7 @@ in ]; after = [ "network-online.target" ]; wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; serviceConfig = { User = "root"; ExecStart = "${selfprivacy-graphql-api}/bin/app.py"; @@ -83,6 +84,7 @@ in ]; after = [ "network-online.target" ]; wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; serviceConfig = { User = "root"; ExecStart = "${pkgs.python312Packages.huey}/bin/huey_consumer.py selfprivacy_api.task_registry.huey"; @@ -115,7 +117,7 @@ in ExecStart = '' ${nixos-rebuild} switch --flake .#${config-id} ''; - KillMode = "none"; + KillMode = "mixed"; SendSIGKILL = "no"; }; restartIfChanged = false; @@ -142,7 +144,7 @@ in ExecStart = '' ${nixos-rebuild} switch --flake .#${config-id} ''; - KillMode = "none"; + KillMode = "mixed"; SendSIGKILL = "no"; }; restartIfChanged = false; @@ -164,7 +166,7 @@ in ExecStart = '' ${nixos-rebuild} switch --rollback --flake .#${config-id} ''; - KillMode = "none"; + KillMode = "mixed"; SendSIGKILL = "no"; }; restartIfChanged = false;