fix: keep agent alive across worker crashes
This commit is contained in:
@@ -42,6 +42,7 @@ STATE_ALLOWLIST = (
|
||||
".modelhub_state/recovery_intents.jsonl",
|
||||
".modelhub_state/routing_intelligence.json",
|
||||
".modelhub_state/submission_exclusions.jsonl",
|
||||
".modelhub_state/worker_crashes.jsonl",
|
||||
"ledger/submissions.jsonl",
|
||||
"outcomes/submissions.jsonl",
|
||||
)
|
||||
@@ -276,7 +277,15 @@ class StateGitSync:
|
||||
destination = self.project_root / relative
|
||||
destination.parent.mkdir(parents=True, exist_ok=True)
|
||||
temporary = destination.with_name(f".{destination.name}.restore-{uuid.uuid4().hex}")
|
||||
shutil.copy2(source, temporary)
|
||||
if relative == ".modelhub_state/worker_crashes.jsonl":
|
||||
merged: dict[str, dict[str, Any]] = {}
|
||||
for row in [*read_jsonl(source), *read_jsonl(destination)]:
|
||||
key = json.dumps(row, ensure_ascii=False, sort_keys=True)
|
||||
merged[key] = row
|
||||
rows = sorted(merged.values(), key=lambda row: str(row.get("at") or ""))[-200:]
|
||||
write_jsonl(temporary, rows)
|
||||
else:
|
||||
shutil.copy2(source, temporary)
|
||||
os.replace(temporary, destination)
|
||||
self.log(
|
||||
f"[state-recovery] generation={self.generation} source=remote branch={self.branch} status=ok"
|
||||
|
||||
Reference in New Issue
Block a user