Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions knowledge/repos/vllm-omni/components/scheduler/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,3 +51,4 @@ sources: [vllm_omni/core/sched/omni_ar_scheduler.py, vllm_omni/core/sched/omni_g

- [native sender-only admission 与 opt-in first-chunk express](rules-first-chunk-express.md)。
- [Async-chunk prewarm 规则](rules-async-chunk-prewarm.md)
- [Scheduler:duplex 流式 context overflow 规则](rules-duplex-overflow.md)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Add the overflow rule to the Direct quick map

Linking this page only from _index.md makes the new rule unreachable in the required review flow: direct_review_plan() for the referenced PersonaPlex overflow change returns the scheduler rules.md quick map, which contains no overflow entry, while KnowledgeDocs.related() deliberately excludes type: rule pages and returns no related document. Because Direct then stops index navigation, reviewers never receive this rule; add it to the scheduler rules.md Direct map rather than only the index.

AGENTS.md reference: knowledge/AGENTS.md:L16-L16

Useful? React with 👍 / 👎.

Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
title: "Scheduler:duplex 流式 context overflow 规则"
created: 2026-10-12
updated: 2026-10-12
type: rule
tags: [vllm-omni, components, scheduler]
sources: ["PR #8683"]
---

# Scheduler:duplex 流式 context overflow 规则

## VLLM-OMNI-PR8683-DUPLEX-OVERFLOW-FENCE — 流式 context overflow 必须走 duplex 失败路径,overflow fence 只能由 FIFO abort 释放

- 触发:duplex/PersonaPlex streaming 会话的 prompt 达到或超过 `max_model_len`;或修改 `vllm_omni/core/sched/omni_ar_scheduler.py` 的 streaming context overflow 路径(`_overflowed_streaming_requests` fence、`release_overflowed_requests`)、`vllm_omni/engine/stage_engine_core_proc.py` 的 eager/FIFO abort 双队列处理,或 `vllm_omni/engine/duplex_orchestrator.py` 的终端错误路由。

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Move engine-side conclusions to the Serving owner

For changes limited to stage_engine_core_proc.py or duplex_orchestrator.py, these FIFO-abort, terminal-routing, and session-policy requirements are stored under Scheduler even though this directory's own _index.md assigns engine orchestration to Serving and the Serving index owns vllm_omni/engine/ and duplex orchestration. Owner-scoped Direct routing can therefore finish at Serving without loading this page; split the engine requirements into the existing Serving duplex/abort rules and keep only the scheduler fence contract here.

AGENTS.md reference: AGENTS.md:L12-L17

Useful? React with 👍 / 👎.

- 强制:终端错误(如 context overflow)必须经既有 duplex failure/cleanup 路由发布,保留 resident-session 与 per-turn 两种既有失败策略——per-turn 失败后同一 session 保持可用、后续 turn 仍可成功(Qwen session-runner 回归),且 stage replica 不再因 overflow 被杀。已 overflow 的 request 必须挂 admission fence:迟到 append 拒绝并打 debug 日志,直到 stage engine 从有序 input queue 处理完 owner 的 ABORT;eager abort 保持 fence,FIFO 侧清理释放 fence 并允许刻意的同 request-ID 复用。overflow 输出为 `FinishReason.ERROR`、空 `new_token_ids`,且 `is_segment_finished is False`(不是 segment boundary)。
- 禁止:用普通 request `ErrorMessage` 发布 overflow 终端错误——duplex 消费者只收 session 事件,绕过 duplex 失败/清理路径会让 stage 0 被杀、后续会话报 `stage 0 has no live replica`;eager abort drain 完就释放 fence(eager abort 可早于旧 append 的 FIFO drain 完成);维护无界 request-ID tombstone 阻止复用;放任迟到 append 重建已被移除的 overflowed request(症状:`PersonaPlex scheduler prompt reservation mismatch: reserved=1, prepared=90`);把 overflow error 当 segment boundary。
- 验收:覆盖 overflow 后迟到 append 在 eager abort 之后仍被拒;eager/FIFO 发布交叠(另一请求保持 running、socket 线程在 eager abort 发布后 FIFO 拷贝前暂停)时 overflowed request 不被重建,而 FIFO 先于 drain 完成发布的反例保持原正确行为;FIFO 最终清理后 fence 释放、同 ID replacement 可重新入队;未实现 overflow fence 的 scheduler 不回归;plugin error policy;同一 session 内失败 response 后成功的 turn。^[PR #8683]

<!-- kb:rule status=active since=v0.30.0 -->
Loading