Unstick analysis running when the worker is dead.
A container rebuild left Emmaforo status=running with no process, so PCB start kept 409. Heal on GET now matches placement/PCB: complete if report.json exists, otherwise error.
This commit is contained in:
@@ -170,7 +170,27 @@ def test_pcb_busy_helpers():
|
||||
assert draft.status in analysis
|
||||
|
||||
|
||||
def test_pcb_start_requires_board(tmp_path: Path):
|
||||
def test_heal_dead_analysis_worker_unblocks_pcb(tmp_path: Path, monkeypatch):
|
||||
from backend.services import job_runner, projects as proj_svc
|
||||
from backend.services.storage import LocalStorageBackend
|
||||
|
||||
storage = LocalStorageBackend(tmp_path)
|
||||
meta = proj_svc.create_project(storage, "usr_jwt", "board")
|
||||
proj_svc.update_project(
|
||||
storage, "usr_jwt", meta.id,
|
||||
status=STATUS_RUNNING,
|
||||
has_pcb=True,
|
||||
has_bom=True,
|
||||
has_netlist=True,
|
||||
pcb_status="draft",
|
||||
)
|
||||
monkeypatch.setattr(job_runner, "get_execution_state", lambda _n: "failed")
|
||||
healed = proj_svc.heal_if_pipeline_finished(storage, "usr_jwt", meta.id)
|
||||
assert healed is not None
|
||||
assert healed.status == "error"
|
||||
from backend.services.pcb_pipeline import analysis_busy
|
||||
|
||||
assert not analysis_busy(healed)
|
||||
from fastapi.testclient import TestClient
|
||||
from backend.main import app
|
||||
from backend.services.storage import LocalStorageBackend
|
||||
|
||||
Reference in New Issue
Block a user