pub enum ReloadRefreshStatus {
NeverRun,
Running {
started_ms: u64,
},
Succeeded {
finished_ms: u64,
refreshed: bool,
},
Failed {
finished_ms: u64,
error: String,
},
Skipped {
finished_ms: u64,
reason: String,
},
NotApplicable {
finished_ms: u64,
},
}Expand description
v1.4.106 codex 0554 F3 [P2]: /api/admin/reload 两阶段拆分后, 后台
credentials refresh 任务的状态机。
背景: v1.4.34 之前 reload() 是同步组合: 清 cipher → POST
/authority/ 刷 tgtgt → 写盘 → return. 网络 I/O 几秒, axum handler
整段 await 期间客户端 hang. 用户报告“reload 偶尔超时但 cipher 已清“
状态不可见 (response 没回 → 不知道 cipher 已清没).
v1.4.106 拆: 阶段 1 (sync) 立即清 cipher + bump version → return ok;
阶段 2 (async, spawn) 后台跑 refresh_credentials_on_disk, 状态写
last_reload_refresh, /api/admin/status 暴露给 ops 看进度.
6 状态机:
NeverRun: 自启动以来从没调过 reload (status=null, 也是Default)Running { started_ms }: refresh 任务在跑 (sync clear 已完成)Succeeded { finished_ms, refreshed }: 上一次 refresh 成功Failed { finished_ms, error }: 上一次 refresh 报错 (cipher 仍已清)Skipped { finished_ms, reason }: 没 reload_state (offline mode 启动 / 无凭据)NotApplicable { finished_ms }: refresh helper 报 “credentials already fresh” (有些 backend 路径不需要刷, 直接 OK)
Variants§
Trait Implementations§
Source§impl Clone for ReloadRefreshStatus
impl Clone for ReloadRefreshStatus
Source§fn clone(&self) -> ReloadRefreshStatus
fn clone(&self) -> ReloadRefreshStatus
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for ReloadRefreshStatus
impl Debug for ReloadRefreshStatus
Source§impl Default for ReloadRefreshStatus
impl Default for ReloadRefreshStatus
Source§fn default() -> ReloadRefreshStatus
fn default() -> ReloadRefreshStatus
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for ReloadRefreshStatus
impl RefUnwindSafe for ReloadRefreshStatus
impl Send for ReloadRefreshStatus
impl Sync for ReloadRefreshStatus
impl Unpin for ReloadRefreshStatus
impl UnsafeUnpin for ReloadRefreshStatus
impl UnwindSafe for ReloadRefreshStatus
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more