Skip to main content

admin_shutdown

Function admin_shutdown 

Source
pub async fn admin_shutdown(
    __arg0: State<RestState>,
) -> Result<Json<Value>, (StatusCode, Json<Value>)>
Expand description

POST /api/admin/shutdown — 优雅退出

返回 200 给客户端前调用 daemon-owned shutdown handler。

REST crate 不能自己 process::exit:那会绕过 opend phase4 已经维护的 shutdown 广播、surface JoinHandle await、超时 abort fallback 与日志收口。

为什么不做更精细的 drain(等正在执行的 trade 请求完成):

  • opend 典型部署在 systemd / Docker 里,shutdown 语义就是“请求 daemon 进入统一退出路径,supervisor 按策略决定是否重启“。
  • 正在执行的 broker trade 请求 client 端自己会超时重试,drain 没明显收益。
  • 并发场景(例如 LLM 同时 100 个 GetFunds)drain 逻辑复杂度 >> 简单 exit。

如果未来真需要 drain:可以加 shutdown flag,listener 进 “拒新收旧” 状态, 等所有 in-flight 完成再 exit(类似 nginx -s quit)。目前不做。