Skip to content

P4/P5 代码审查后续:计算层 / 存储层 / 调度层问题收敛 #48

Description

@chengda-wu

背景

基于一次只读代码审查报告,已人工复核当前代码。原报告中部分项严重度偏高或不属实,本 issue 只记录确认属实、值得后续修复/收敛的问题。

当前状态:非计算层主要问题已由 PR #47 修复并合入;计算层问题仍待后续 PR 处理。

参考对照:

  • Mooncake transfer-engine:Transport::{allocateBatchID, submitTransfer, getTransferStatus, freeBatchID},用于校准 transfer/batch 生命周期。
  • SGLang:free_group / inc_lock_ref / dec_lock_ref,用于校准 in-flight 冻结与 ref 归零语义。
  • Dynamo KVBM:logical / physical / engine 分层,用于校准存储层原型与后续扩展边界。

计算层(待处理)

  • runtime/node_scheduler.py::_process_batch_resultself._reqs[rid] 直接索引,遇到 stop / abandon / result queue 滞后时可能 KeyError。建议改为 .get(rid) 并跳过已释放请求。
  • runtime/role.py::_env_int 遇到非数字环境变量会直接抛 ValueError,导致 worker 启动失败且错误不友好。建议给出明确配置错误或 fallback。
  • runtime/worker.py::_abort_rpc 虽然 context.abort() 会 raise,不会真的把 UNAVAILABLE 覆盖成 INTERNAL,但建议显式 return / raise,避免误读和 mock context 下行为不一致。
  • runtime/node_scheduler.py_waiting.pop(0) 是 O(n),schedule() 方法较长;这是后续可维护性/性能优化项,不阻塞当前功能。
  • engine/pool_iface.pyfrom_grpc 缺类型标注、probe_prefix 使用 isinstance(InMemoryAgent) 特判,后续可收敛到更明确的 Protocol / adapter 边界。

存储层

调度层

不纳入本 issue 的误报/降级项

  • _abort_rpcUNAVAILABLE 正常不会被覆盖成 INTERNAL,因为 context.abort() 会 raise;仅作为可读性修复保留在计算层。
  • putend.rs 中 rollback 的 let _ = store.unpin(...) 不会导致“永久 pinned”:未 pin 时才报错,且 discard_settled 会移除 pin。此项不作为正确性 blocker。

下一步

  1. 新 PR 处理计算层 5 个待办。
  2. P7 性能校准时处理 BlockMeta clone 与 put_durable L2 order 快照成本。
  3. 引入统一日志框架时替换 controlplane poison 的 eprintln!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions