Skip to content

优雅退出:worker 停止后仍可能领取任务及子进程提前终止 #213

Closed

Description

@LIghtJUNction

2026-10-01 部署更新

修复已整合到 main 并部署 msgd 0.2.3-20261001.1。实机 msgd.service 和 msgd-worker.service 均 active,KillMode=mixed、TimeoutStopUSec=90s 生效;源码停止后不再领取任务,应用排空预算 60s,连接清理位于 finally。已有 64 项相关回归及 7 项真实隔离 SIGTERM/HTTP/持久化测试证据。

原文“尚待新包部署”过时。对生产在途任务的实际 SIGTERM 排空与无错误重放验收仍未在本次只读核查中执行,因此保留该现场验收,不把 active 服务状态当成完整排空证明。

原始报告(保留历史;当前状态以上述更新为准)

现有 HTTP 已有基础 shutdown,生产停止日志显示正常结束,不能描述成完全没有退出处理。

具体缺陷:SIGTERM 在 maintenance 期间设置 stop 后仍可能继续维护并领取下一 job;初始化/关闭与唤醒连接清理不完整;systemd control-group 同时通知 sandbox 子进程会破坏在途排空。

PR #209 已推修复:停止新领取、60秒应用排空、90秒systemd预算、mixed kill、清理finally。64项相关回归通过,7项真实 SIGTERM/HTTP/持久化任务测试通过;尚待新包部署和实机验证。

Activity

  1. LIghtJUNction commented on Sep 30, 2026

    @LIghtJUNction
    ContributorAuthor

    2026-10-01 部署更新

    修复已整合到 main 并部署 msgd 0.2.3-20261001.1。实机 msgd.service 和 msgd-worker.service 均 active,KillMode=mixed、TimeoutStopUSec=90s 生效;源码停止后不再领取任务,应用排空预算 60s,连接清理位于 finally。已有 64 项相关回归及 7 项真实隔离 SIGTERM/HTTP/持久化测试证据。

    原文“尚待新包部署”过时。对生产在途任务的实际 SIGTERM 排空与无错误重放验收仍未在本次只读核查中执行,因此保留该现场验收,不把 active 服务状态当成完整排空证明。

  2. LIghtJUNction commented on Oct 3, 2026

    @LIghtJUNction
    ContributorAuthor

    已按退出逻辑缺陷完成关闭:停止后不再领取下一任务,排空当前阶段,预算耗尽时保留 uncertain/lease 事实并清理子进程。生产当前两个 MSG unit 的 KillMode=mixed、停止预算 90 秒已只读核实。

    当前 SIGTERM 回归 和 真实 sandbox/HTTP 隔离回归 共 10 个节点在 当前 main CI 全部通过。真实生产在途任务的停机排空/重放演练继续在 #84 跟踪,本轮没有为关闭此 issue 停止生产服务。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions