diff --git a/nixos/module.nix b/nixos/module.nix index d1cec98..4eebd19 100644 --- a/nixos/module.nix +++ b/nixos/module.nix @@ -50,6 +50,7 @@ in ]; after = [ "network-online.target" ]; wants = [ "network-online.target" ]; + wantedBy = [ "multi-user.target" ]; serviceConfig = { User = "root"; ExecStart = "${selfprivacy-graphql-api}/bin/app.py"; @@ -84,6 +85,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"; @@ -116,7 +118,7 @@ in ExecStart = '' ${nixos-rebuild} switch --flake .#${config-id} ''; - KillMode = "none"; + KillMode = "mixed"; SendSIGKILL = "no"; }; restartIfChanged = false; @@ -143,7 +145,7 @@ in ExecStart = '' ${nixos-rebuild} switch --flake .#${config-id} ''; - KillMode = "none"; + KillMode = "mixed"; SendSIGKILL = "no"; }; restartIfChanged = false; @@ -165,7 +167,7 @@ in ExecStart = '' ${nixos-rebuild} switch --rollback --flake .#${config-id} ''; - KillMode = "none"; + KillMode = "mixed"; SendSIGKILL = "no"; }; restartIfChanged = false; 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 beefdc9..782e37e 100644 --- a/selfprivacy_api/services/__init__.py +++ b/selfprivacy_api/services/__init__.py @@ -234,12 +234,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)