feat(cdc): add Re-sync sources button + auto-heal for Debezium connectors

- streaming_ops: add connector status discovery, manual resync endpoint
  (POST /api/pipeline/streaming/resync), connectors status endpoint, and a
  background connector_autoheal_loop that restarts FAILED tasks automatically
- main: wire connector_autoheal_loop into app lifespan
- api.ts: add resyncSources() helper
- ChangesView: add "Re-sync sources" header button with live status
This commit is contained in:
mo
2026-06-29 13:31:11 +00:00
parent 1e2cfe80f2
commit d066def8b4
4 changed files with 173 additions and 2 deletions
+3
View File
@@ -47,6 +47,7 @@ from elasticsearch_api import router as elasticsearch_router
from sql_console import router as sql_router
from agent_ops import router as agent_ops_router, agent_dml_loop, etl_agent_loop, custodian_offload_loop
from agent_activity import agent_activity_loop
from streaming_ops import connector_autoheal_loop
from cdc_consumer import router as cdc_router, cdc_consumer_loop
from movements import router as movements_router
from movements import MOVEMENT_BY_ID, trigger_and_watch
@@ -737,6 +738,7 @@ async def lifespan(app: FastAPI):
etl_task = asyncio.create_task(etl_agent_loop())
cust_task = asyncio.create_task(custodian_offload_loop())
act_task = asyncio.create_task(agent_activity_loop())
heal_task = asyncio.create_task(connector_autoheal_loop())
add_feed("infra-sentinel", "ATC Command Center API online", "info")
yield
task.cancel()
@@ -745,6 +747,7 @@ async def lifespan(app: FastAPI):
etl_task.cancel()
cust_task.cancel()
act_task.cancel()
heal_task.cancel()
if redis_client:
await redis_client.close()