v1.2.23: lock_check three-state return (True/False/None), None→503 DB unavailable

This commit is contained in:
2026-07-31 18:22:58 +04:00
parent 23688da90a
commit c1e7c4f9aa
3 changed files with 9 additions and 6 deletions
+4 -4
View File
@@ -215,10 +215,11 @@ def lock_check(client_id, stand):
Returns:
True — можно запускать (нет RUNNING в БД)
False — нельзя (уже есть RUNNING) → 409 Conflict"""
False — нельзя (уже есть RUNNING) → 409 Conflict
None — БД недоступна, нельзя проверить → 503 DB unavailable"""
conn = get_conn()
if not conn:
return False # без БД — не разрешаем (partial unique index недоступен)
return None # БД недоступна — не True и не False, вызывающий решит
try:
cur = conn.cursor()
cur.execute("""
@@ -231,7 +232,6 @@ def lock_check(client_id, stand):
return row is None # None = нет RUNNING = можно запускать
except Exception as e:
print(f"[DEFS] lock_check error: {e}", flush=True)
# При ошибке БД — НЕ разрешаем (безопасный fallback)
return False
return None # ошибка БД — не можем проверить
finally:
put_conn(conn)