Expand description
v1.4.92 P1-D Tier A1: in-process relogin trigger (AuthRefresher trait + DefaultAuthRefresher). v1.4.92 P1-D Tier A1: in-process relogin trigger.
用途: 让 gateway 的 qot_logined self-heal loop (run_qot_login_health_loop,
30s tick) 在 should_attempt_relogin() 触发时真调一次 in-process relogin
而不只 loud warn (v1.4.91 observability-only) — 与 v1.4.34 daemon-reload
路径同语义.
设计: 抽象成 AuthRefresher trait + DefaultAuthRefresher 默认实装,
这样 unit test 可以 mock (success / HTTP fail / TCP fail / cipher reject)
而 production 复用现有 crate::auth::refresh_credentials_on_disk 的 HTTP
/authority/ POST → remember-login → save credentials 路径.
不做 (v1.4.92 边界):
- 不重建 TCP — 现有连接复用 (CMD 6001 InitConnect 留作未来真 TCP 重建场景)
- 不刷 per-broker cipher (CMD 2900) — 那个绑用户显式
unlock-tradeaction - 不做交互式 SMS — daemon 运行时不可能交互, refresh 失败必 fall-through 到 v1.4.91 行为 (loud warn + counter), 等 supervisor restart 介入
错误语义: 任何步骤失败 (HTTP 超时 / tgtgt 过期 / backend 拒) → 返
Err, 调用方 (run_qot_login_health_loop) 按 record_relogin_failure()
推 backoff. 连续 5 次失败后 (Tier A2 circuit-breaker) 跳 10 min.
超时: 整个 refresh_qot_login() honor 10 秒预算
(REFRESH_TIMEOUT) — 不能阻塞 polling loop.
Modules§
- test_
util - Test fixtures for v1.4.92 P1-D AuthRefresher.
Structs§
- Default
Auth Refresher - Production 实装 — 通过
refresh_credentials_on_disk走 v1.4.34 daemon-reload 的 HTTP /authority/ POST 路径.
Constants§
- REFRESH_
TIMEOUT - 整个
refresh_qot_login的超时预算 (10 秒). 超时即视为失败.
Traits§
- Auth
Refresher - In-process qot login refresh 抽象.