---
type: "query"
date: "2026-07-12T22:09:47.294749+00:00"
question: "Как безопасно заменить tenant DataSource без потери рабочего подключения?"
contributor: "graphify"
outcome: "useful"
source_nodes: ["DatabaseController", "TenantRoutingDataSource", "TenantConfigWatcher", "TenantConfig"]
---

# Q: Как безопасно заменить tenant DataSource без потери рабочего подключения?

## Answer

Expanded from original query via vocab: [database, tenant, routing, flyway, hikari, secret, config, updater, watcher, controller]. Граф связал DatabaseController с TenantRoutingDataSource и Hikari/Flyway. Актуальные исходники подтвердили destructive remove старого pool, ленивый candidate, проглоченную ошибку Flyway и отсутствие rollback при отказе Secret. Безопасный локальный протокол: prepare, explicit connection validation, Flyway на candidate, persistence prospective snapshot, atomic swap, compensation и закрытие old только после успеха. ResourceVersion между pod относится к отдельному пункту №10.

## Outcome

- Signal: useful

## Source Nodes

- DatabaseController
- TenantRoutingDataSource
- TenantConfigWatcher
- TenantConfig