From ce66744a9e66833c03c25db25d207af170d8fccc Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Mon, 19 Jan 2026 23:44:54 -0300 Subject: [PATCH] fix: gate provisioning on mailu mailbox --- ariadne/manager/provisioning.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/ariadne/manager/provisioning.py b/ariadne/manager/provisioning.py index 82ca26f..b8c9416 100644 --- a/ariadne/manager/provisioning.py +++ b/ariadne/manager/provisioning.py @@ -307,6 +307,7 @@ class ProvisioningManager: # Task: trigger Mailu sync start = datetime.now(timezone.utc) + mailbox_ready = True try: if not settings.mailu_sync_url: detail = "sync disabled" @@ -314,13 +315,22 @@ class ProvisioningManager: self._record_task(request_code, "mailu_sync", "ok", detail, start) else: mailu.sync(reason="ariadne_access_approve", force=True) + mailbox_ready = mailu.wait_for_mailbox( + mailu_email, settings.mailu_mailbox_wait_timeout_sec + ) + if not mailbox_ready: + raise RuntimeError("mailbox not ready") self._upsert_task(conn, request_code, "mailu_sync", "ok", None) self._record_task(request_code, "mailu_sync", "ok", None, start) except Exception as exc: + mailbox_ready = False detail = safe_error_detail(exc, "failed to sync mailu") self._upsert_task(conn, request_code, "mailu_sync", "error", detail) self._record_task(request_code, "mailu_sync", "error", detail, start) + if not mailbox_ready: + return ProvisionOutcome(ok=False, status="accounts_building") + # Task: trigger Nextcloud mail sync start = datetime.now(timezone.utc) try: