From d3533d382fdcd749f8c6857734ea0c0330a60dc2 Mon Sep 17 00:00:00 2001 From: Joseph Magly <1159087+jmagly@users.noreply.github.com> Date: Sat, 29 Aug 2026 01:36:37 -0400 Subject: [PATCH] fix: align broker pending window with cold loads (#185) --- .../70-obliteratus-loading-window.conf | 6 ++++++ docs/deployment/shared-gpu-host.md | 7 +++++++ 2 files changed, 13 insertions(+) create mode 100644 deployment/systemd/ollama-unify-negotiator.service.d/70-obliteratus-loading-window.conf diff --git a/deployment/systemd/ollama-unify-negotiator.service.d/70-obliteratus-loading-window.conf b/deployment/systemd/ollama-unify-negotiator.service.d/70-obliteratus-loading-window.conf new file mode 100644 index 0000000..81f6402 --- /dev/null +++ b/deployment/systemd/ollama-unify-negotiator.service.d/70-obliteratus-loading-window.conf @@ -0,0 +1,6 @@ +[Service] +# A cold Qwen3.8-27B load can exceed the negotiator's five-minute pending +# transition deadline when the shared host is storage-bound. Keep the broker +# drained until OBLITERATUS reports ready, while its persistent heartbeat and +# fail-closed supervisor continue to enforce lease ownership. +Environment=OLLAMA_UNIFY_PENDING_TIMEOUT=7200 diff --git a/docs/deployment/shared-gpu-host.md b/docs/deployment/shared-gpu-host.md index 3de0d46..d91a202 100644 --- a/docs/deployment/shared-gpu-host.md +++ b/docs/deployment/shared-gpu-host.md @@ -117,6 +117,13 @@ Environment=OBLITERATUS_RUN_ARCHIVE=/srv/obliteratus/run-archive ExecStart=/srv/obliteratus/current/.venv/bin/obliteratus ui --host 127.0.0.1 ``` +The broker's absolute pending-transition deadline must also cover the largest +expected cold model load. Broker heartbeats renew lease ownership but do not +extend this fail-closed deadline. On the shared A100 host, install +`deployment/systemd/ollama-unify-negotiator.service.d/70-obliteratus-loading-window.conf` +to use the same 120-minute budget; otherwise a healthy storage-bound load is +revoked after the negotiator's five-minute default. + Create the archive before starting the service and make it writable only by the service account (for example, owner `obliteratus`, mode `0750`). Every UI and headless run receives a stable `run-*` ID and writes `manifest.json`,