fix: keep provisioning loop alive
This commit is contained in:
parent
fbe516bac7
commit
f7eca83ff0
@ -106,7 +106,13 @@ class ProvisioningManager:
|
||||
continue
|
||||
candidates = self._storage.list_provision_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)
|
||||
|
||||
def _sync_status_metrics(self) -> None:
|
||||
@ -168,6 +174,7 @@ class ProvisioningManager:
|
||||
self._log_provision_start(request_code)
|
||||
|
||||
with self._db.connection() as conn:
|
||||
conn.autocommit = True
|
||||
lock_id = _advisory_lock_id(request_code)
|
||||
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"):
|
||||
@ -175,7 +182,13 @@ class ProvisioningManager:
|
||||
try:
|
||||
return self._provision_locked(conn, request_code, required_tasks)
|
||||
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(
|
||||
self,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user