Skip to content

[TransferEngine] Rebuild single Jetty on ACK timeout (status=9) - #33

Open
Connor-Matthew wants to merge 4 commits into
mainfrom
feat/jetty-ack-timeout-single-rebuild
Open

[TransferEngine] Rebuild single Jetty on ACK timeout (status=9)#33
Connor-Matthew wants to merge 4 commits into
mainfrom
feat/jetty-ack-timeout-single-rebuild

Conversation

@Connor-Matthew

@Connor-Matthew Connor-Matthew commented Aug 26, 2026

Copy link
Copy Markdown

Description

status=9(URMA_CR_ACK_TIMEOUT_ERR)时,不再很快把整条 endpoint 删掉,而是对本端故障 Jetty 做:

  1. modify(ERROR) 排空
  2. 等待 FLUSH_ERR_DONE
  3. flush → unbind/unimport → delete → create → 本端 re-import/rebind 原对端 jetty id

纯本地恢复,不引入对端同步协议。flush-done 超时(默认 3s)或重建失败则回退 deleteEndpointByPtr

设计说明:

  • 权威方案:docs/source/design/transfer-engine/jetty-single-rebuild-plan.md
  • 已废弃:docs/source/design/transfer-engine/jetty-ack-timeout-rebuild.md

Module

  • Transfer Engine (mooncake-transfer-engine)
  • Mooncake Store (mooncake-store)
  • Reshard (mooncake-reshard)
  • Mooncake EP (mooncake-ep)
  • Mooncake PG (mooncake-pg)
  • Integration (mooncake-integration)
  • P2P Store (mooncake-p2p-store)
  • Python Wheel (mooncake-wheel)
  • Common (mooncake-common)
  • Mooncake RL (mooncake-rl)
  • CI/CD
  • Docs
  • Other

Type of Change

  • Bug fix
  • New feature
  • Refactor
  • Breaking change
  • Documentation update
  • Performance improvement
  • Other

How Has This Been Tested?

Test commands:

# 需在带 UMDK / 真实 UB 的服务器上验证 status=9 注入与恢复

Test results:

  • Unit tests pass
  • Integration tests pass (if applicable)
  • Manual testing done (describe below)

本机无 liburma,无法在此完成硬件路径验证。请在服务器上验证:

  1. 注入 / 等待 status=9 后,日志出现 drain → flush-done → rebuilt
  2. 同 EP 其它 ACTIVE 槽可继续传
  3. flush-done 超时仍可降级删 EP

Checklist

  • I have performed a self-review of my own code
  • I have formatted my code using ./scripts/code_format.sh
  • I have run pre-commit on the files changed in this PR and all hooks pass
  • I have updated the documentation (if applicable)
  • I have added tests to prove my changes are effective
  • For changes >500 LOC: I have filed an RFC issue

Avoid deleting the whole endpoint after a transient ACK timeout by draining
the faulty Jetty, recreating it locally, and rebinding to the existing peer
id. Falls back to deleteEndpoint on flush-done timeout or rebuild failure.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation run-ci Transfer Engine labels Aug 26, 2026
Connor-Matthew and others added 3 commits August 26, 2026 19:20
Mark the jetty rebuild design doc as Sphinx orphan and apply clang-format
to the UrmaEndpoint changes so PR checks pass.

Co-authored-by: Cursor <cursoragent@cursor.com>
Defer endpoint deletion until after poll depth accounting to avoid UAF,
deliver flush completions during rebuild, and isolate stale CQEs with
per-slot jetty epochs. Align disconnect teardown with ERROR flush fence
constraints and document the updated rebuild accounting model.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation run-ci Transfer Engine

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant