Bind the metered owner route to worker leases and sandbox lifecycle
Some checks failed
Governed runtime contract / contract (push) Failing after 23s
Some checks failed
Governed runtime contract / contract (push) Failing after 23s
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a07ff8-19d0-7820-b4d0-1353833cb7fc
This commit is contained in:
parent
c30806b968
commit
3e4c976090
13 changed files with 502 additions and 9 deletions
|
|
@ -296,6 +296,10 @@ def process_one(
|
|||
|
||||
try:
|
||||
spend = worker_spend(cfg)
|
||||
if cfg.require_request_admission and cfg.messages_owner is None:
|
||||
raise SpendAdmissionError("required request owner is not configured")
|
||||
if cfg.messages_owner is not None and spend is None:
|
||||
raise SpendAdmissionError("request owner requires parent spend admission")
|
||||
if spend is not None:
|
||||
spend.preflight()
|
||||
except SpendAdmissionError as exc:
|
||||
|
|
@ -320,7 +324,15 @@ def process_one(
|
|||
try:
|
||||
# Make active lease ownership observable even for normal short jobs,
|
||||
# and fail closed before dispatch if Activity Core no longer accepts it.
|
||||
client.heartbeat(run.id, lease_seconds=cfg.lease_seconds)
|
||||
accepted = client.heartbeat(run.id, lease_seconds=cfg.lease_seconds)
|
||||
if cfg.messages_owner is not None:
|
||||
from rein_aharness.messages_owner import accepted_lease
|
||||
try:
|
||||
run.lease_until = accepted_lease(run, accepted, cfg.worker_id)
|
||||
except SpendAdmissionError:
|
||||
return ProcessResult(claimed=True, run_id=run.id, ok=False,
|
||||
retry_full_interval=True,
|
||||
reason="accepted queue lease required for metered route")
|
||||
logger.info("accepted initial heartbeat run_id=%s", run.id)
|
||||
except OpsRunError as exc:
|
||||
rejected = exc.status_code == 409
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue