Skip to main content

Module refresh

Module refresh 

Source
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-trade action
  • 不做交互式 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§

DefaultAuthRefresher
Production 实装 — 通过 refresh_credentials_on_disk 走 v1.4.34 daemon-reload 的 HTTP /authority/ POST 路径.

Constants§

REFRESH_TIMEOUT
整个 refresh_qot_login 的超时预算 (10 秒). 超时即视为失败.

Traits§

AuthRefresher
In-process qot login refresh 抽象.