ReleaseNovita AINovita AIpublished Jul 16, 2026seen 1w

novitalabs/pegaflow v0.23.4

novitalabs/pegaflow

Open original ↗

Captured source

source ↗
published Jul 16, 2026seen 1wcaptured 1whttp 200method plain

v0.23.4

Repository: novitalabs/pegaflow

Tag: v0.23.4

Published: 2026-07-16T07:41:24Z

Prerelease: no

Release notes:

Highlights

  • Fixed a production transfer-lock leak on multi-node clusters: RDMA peer sessions were keyed by the remote QPN, which is only unique within one remote HCA. Peers booted from the same image collide, and a collision let one peer's handshake silently overwrite — and one peer's invalidation destroy — another peer's sessions, wedging the connection permanently and leaking transfer locks (blocks pinned for the full 120 s timeout) on every subsequent fetch. Connections now own their per-NIC sessions and remote-memory snapshots directly, making the collision unrepresentable (#399).
  • P/D serving: the router now forwards the first token from P, and P saves partial tail blocks, improving prefill/decode handoff (#395).

Reliability and transfer behavior (#399)

  • Requester-side transfer-lock release is now RAII-guarded: the session is released on every exit path — completion, handled error, panic unwind, or a dropped future — with a WARN identifying any abnormal path. Previously a panic in the fetch task silently leaked the holder-side lock until GC.
  • Session worker threads no longer leak: workers held a strong reference cycle that kept the thread, QP, and CQ alive forever after a connection was invalidated or a handshake aborted. Workers now hold a weak reference and exit once the session is dropped; commands accepted before an invalidation now fail with an explicit "session invalidated before batch execution" error instead of a generic channel-closed.
  • RDMA fetch staging chunks are now sized min(remaining bytes on that NUMA, 256 MiB). The previous fixed 256 MiB floor made small fetches fail outright on pinned pools smaller than the cap; the cap on large fetches (reclaim-amplification bound from the previous release) is preserved.
  • The accept side of the RDMA handshake now aborts cleanly on completion failure instead of leaving the client permanently stuck in "connecting".
  • Validated end to end with the p2p_rdma integration test on an H200 node with 400G IB: it fails on the previous release (chunk allocation error) and passes on this one, with all session workers exiting cleanly on teardown.

Breaking metric change

  • pegaflow_rdma_qps now reports the actual number of active RC queue pairs, matching its description. It previously counted connection entries (peers × NICs), so dashboards will show a step up by a factor of qps_per_peer.

P/D and connector

  • NIXL pega-pull control-plane polling reduced (#388).

Full Changelog: https://github.com/novitalabs/pegaflow/compare/v0.23.3...v0.23.4