Задачи помнят процесс-владельца: при старте панель больше не объявляет прерванными задачи, которые ведёт другой живой процесс
Этот коммит содержится в:
@@ -139,6 +139,31 @@ def test_orphaned_operations_are_closed_on_startup(data_dirs):
|
||||
assert core.active_operations_for("web01") == []
|
||||
|
||||
|
||||
def test_interrupt_leaves_operations_of_other_live_processes(data_dirs):
|
||||
"""Копии по расписанию идут в отдельной службе: перезапуск панели не должен объявлять их прерванными."""
|
||||
import subprocess
|
||||
|
||||
import core
|
||||
|
||||
sleeper = subprocess.Popen(["sleep", "30"])
|
||||
finished = subprocess.Popen(["sleep", "0.1"])
|
||||
finished_owner = core.process_owner(finished.pid)
|
||||
finished.wait()
|
||||
try:
|
||||
scheduled = core.new_operation("backup", "Резервная копия web01 по расписанию", vm_name="web01")
|
||||
core.update_operation(scheduled, status="running", owner=core.process_owner(sleeper.pid))
|
||||
dead = core.new_operation("backup", "Резервная копия db01", vm_name="db01")
|
||||
core.update_operation(dead, status="running", owner=finished_owner)
|
||||
legacy = core.new_operation("backup", "Задача старой версии без владельца", vm_name="db01")
|
||||
core.update_operation(legacy, status="running", owner=None)
|
||||
assert core.interrupt_orphaned_operations() == 2
|
||||
assert core.read_operation(scheduled["id"])["status"] == "running"
|
||||
assert core.read_operation(dead["id"])["interrupted"] and core.read_operation(legacy["id"])["interrupted"]
|
||||
finally:
|
||||
sleeper.kill()
|
||||
sleeper.wait()
|
||||
|
||||
|
||||
def test_snapshot_names_with_spaces_are_listed():
|
||||
from features import snapshots
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user