From 0db06419e769068c5e1aa58f4a87788b1fc92750 Mon Sep 17 00:00:00 2001 From: Jason Staack Date: Thu, 12 Mar 2026 21:47:51 -0500 Subject: [PATCH] feat(03-01): wire config snapshot subscriber into main.py lifespan - Start config_snapshot_subscriber in lifespan startup (non-fatal) - Stop config_snapshot_subscriber in lifespan shutdown - Placed after push_rollback_subscriber (near config-related subscribers) Co-Authored-By: Claude Opus 4.6 --- backend/app/main.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/backend/app/main.py b/backend/app/main.py index d2a05bd..057adc9 100644 --- a/backend/app/main.py +++ b/backend/app/main.py @@ -214,6 +214,17 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: except Exception as e: logger.error("Push rollback subscriber failed to start (non-fatal): %s", e) + # Config snapshot ingestion subscriber (Go poller -> PostgreSQL via Transit encryption) + config_snapshot_nc = None + try: + from app.services.config_snapshot_subscriber import ( + start_config_snapshot_subscriber, + stop_config_snapshot_subscriber, + ) + config_snapshot_nc = await start_config_snapshot_subscriber() + except Exception as e: + logger.error("Config snapshot subscriber failed to start (non-fatal): %s", e) + logger.info("startup complete, ready to serve requests") yield @@ -228,6 +239,8 @@ async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: await stop_config_change_subscriber() if push_rollback_nc: await stop_push_rollback_subscriber() + if config_snapshot_nc: + await stop_config_snapshot_subscriber() # Dispose database engine connections to release all pooled connections cleanly. from app.database import app_engine, engine