Commit ed023d7
committed
ConnectionManager に probeReplicas() を追加 (Phase 5-1 サブ C-5)
cron からの能動的 health probe を v0.1 でカバーするため、全 read replica
を順次 PDO 接続 + DO 1 ping で検査し、host:port → healthy のマップを返す
public メソッドを追加した。失敗時は connection() と同じ規則で dead cache
に記録する (auth → markPoolDead、それ以外 → markServerDead)。
設計判断:
- dead-cache 状態に関わらず全 replica を probe する。プローブの目的は実時点
の健全性把握であり、既に dead 化された replica の現在状態も計測対象に
含める方が運用上有用なため
- healthy probe で既存の dead mark をクリアしない。DeadReplicaCache 抽象は
mark-alive を持たず、recovery は TTL 自然減衰に委ねる設計
- health_check 設定に関わらず常に DO 1 を発行する。プローブの目的が PDO
接続確認 + サーバー応答確認の両方を含むため
- probe 用 Connection はインスタンスにキャッシュしない。リクエスト経路で
使われる replica 選択ロジックを probe 側が汚染しない構造を維持
テスト 14 件追加 (空 read / 全 healthy / 混在 / connect 失敗 / auth 失敗 /
ping 失敗 / dead-cache 透過 + 成功時 mark 保持 / 失敗時 TTL リフレッシュ /
probe 後の selection キャッシュ非汚染 / 既定 pool / 明示 pool 名 /
undefined pool / バリデーション伝播 / port 反映)。1 parent 4183761 commit ed023d7
2 files changed
Lines changed: 460 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
32 | 32 | | |
33 | 33 | | |
34 | 34 | | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
35 | 41 | | |
36 | 42 | | |
37 | 43 | | |
| |||
189 | 195 | | |
190 | 196 | | |
191 | 197 | | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
192 | 237 | | |
193 | 238 | | |
194 | 239 | | |
| |||
0 commit comments