fix(observatory): reject duplicate active portable computations atomically

This commit is contained in:
DCCONSTRUCTIONS
2026-09-02 23:15:39 +03:00
parent 941183d624
commit 35c1249631
6 changed files with 226 additions and 3 deletions
+9
View File
@@ -53,6 +53,7 @@ from k1link.observatory.recorded_jobs import (
ObservatoryRecordedJobQueue,
ObservatoryRecordedQueueCapacityError,
ObservatoryRecordedQueueConflictError,
ObservatoryRecordedQueueDuplicateError,
ObservatoryRecordedQueueError,
ObservatoryRecordedQueueNotFoundError,
)
@@ -929,6 +930,14 @@ def build_observatory_router(
status_code=409,
detail="Portable-привязка источника не прошла проверку целостности.",
) from exc
except ObservatoryRecordedQueueDuplicateError as exc:
raise HTTPException(
status_code=409,
detail=(
"Такой расчёт уже выполняется или ожидает публикации. "
"Обновите список расчётов; повторный запуск не создан."
),
) from exc
except ObservatoryRecordedQueueConflictError as exc:
try:
raced = recorded_job_queue.get_by_idempotency_key(request.idempotency_key)