fix: keep provisioning loop alive

This commit is contained in:
Brad Stein 2026-01-22 18:26:48 -03:00
parent fbe516bac7
commit f7eca83ff0

View File

@ -106,7 +106,13 @@ class ProvisioningManager:
continue continue
candidates = self._storage.list_provision_candidates() candidates = self._storage.list_provision_candidates()
for request in candidates: for request in candidates:
self.provision_access_request(request.request_code) try:
self.provision_access_request(request.request_code)
except Exception:
logger.exception(
"provisioning loop error",
extra={"event": "provision_loop_error", "request_code": request.request_code},
)
time.sleep(settings.provision_poll_interval_sec) time.sleep(settings.provision_poll_interval_sec)
def _sync_status_metrics(self) -> None: def _sync_status_metrics(self) -> None:
@ -168,6 +174,7 @@ class ProvisioningManager:
self._log_provision_start(request_code) self._log_provision_start(request_code)
with self._db.connection() as conn: with self._db.connection() as conn:
conn.autocommit = True
lock_id = _advisory_lock_id(request_code) lock_id = _advisory_lock_id(request_code)
locked_row = conn.execute("SELECT pg_try_advisory_lock(%s) AS locked", (lock_id,)).fetchone() locked_row = conn.execute("SELECT pg_try_advisory_lock(%s) AS locked", (lock_id,)).fetchone()
if not locked_row or not locked_row.get("locked"): if not locked_row or not locked_row.get("locked"):
@ -175,7 +182,13 @@ class ProvisioningManager:
try: try:
return self._provision_locked(conn, request_code, required_tasks) return self._provision_locked(conn, request_code, required_tasks)
finally: finally:
conn.execute("SELECT pg_advisory_unlock(%s)", (lock_id,)) try:
conn.execute("SELECT pg_advisory_unlock(%s)", (lock_id,))
except Exception:
logger.warning(
"failed to release advisory lock",
extra={"event": "provision_unlock_error", "request_code": request_code},
)
def _provision_locked( def _provision_locked(
self, self,