diff --git a/changelog.d/20240612_121019_jb_running_backup_sla.rst b/changelog.d/20240612_121019_jb_running_backup_sla.rst new file mode 100644 index 00000000..a612f630 --- /dev/null +++ b/changelog.d/20240612_121019_jb_running_backup_sla.rst @@ -0,0 +1,3 @@ +.. A new scriv changelog fragment. + +- Ignore currently running backups for SLA calculation diff --git a/src/backy/scheduler.py b/src/backy/scheduler.py index eb04d5f9..7c879074 100644 --- a/src/backy/scheduler.py +++ b/src/backy/scheduler.py @@ -91,8 +91,6 @@ def sla_overdue(self) -> int: """Amount of time the SLA is currently overdue.""" if not self.backup.clean_history: return 0 - if self.status.startswith("running"): - return 0 age = backy.utils.now() - self.backup.clean_history[-1].timestamp max_age = min(x["interval"] for x in self.schedule.schedule.values()) if age > max_age * 1.5: diff --git a/src/backy/tests/test_daemon.py b/src/backy/tests/test_daemon.py index b0a5af84..d8829ff9 100644 --- a/src/backy/tests/test_daemon.py +++ b/src/backy/tests/test_daemon.py @@ -250,6 +250,12 @@ def test_sla_over_time(daemon, clock, tmp_path, log): job.backup.scan() assert job.sla is False + # a running backup does not influence this. + job.update_status("running (slow)") + r = Revision.create(job.backup, {"daily"}, log) + r.write_info() + assert job.sla is False + def test_incomplete_revs_dont_count_for_sla(daemon, clock, tmp_path, log): job = daemon.jobs["test01"]