Skip to content

[TENT] Add native UB transport with bonding fixes (rebased on latest main) - #40

Open
Connor-Matthew wants to merge 11 commits into
mainfrom
ub/bonding-upstream
Open

[TENT] Add native UB transport with bonding fixes (rebased on latest main)#40
Connor-Matthew wants to merge 11 commits into
mainfrom
ub/bonding-upstream

Conversation

@Connor-Matthew

Copy link
Copy Markdown

Summary

  • Rebase/merge of ub/bonding-device-selection onto the latest LinQuick main (synced with upstream).
  • Keep both official decodeBootstrapResponse (RDMA bootstrap validation) and UB bootstrapUb APIs.
  • Same feature set as internal PR [TENT] Add native UB transport with bonding device selection fixes #38, retargeted so GitHub can auto-merge against current main for CI.

This PR is for CI only — do not merge.

Module

  • Transfer Engine (mooncake-transfer-engine)
  • CI/CD

Type of Change

  • Bug fix
  • New feature

How Has This Been Tested?

Test results:

  • Unit tests pass (await CI)
  • Manual dual-node testing done

Checklist

  • I have performed a self-review of my own code
  • Conflicts with latest main resolved (control_plane keeps RDMA + UB paths)
  • Dual-node re-verified on this tip

Made with Cursor

Le1zyCatt and others added 8 commits August 31, 2026 10:35
Avoid initializing underlying udmac* contexts alongside bonding_dev_0
by default, which can bypass UBAGG and cause cross-node LOC_ACCESS_ERR.

Co-authored-by: Cursor <cursoragent@cursor.com>
Bring over the local working-tree fixes needed for bonding_dev_0:
SET_BONDING_MODE, CTP priority/multi_path jetty config, and token_id
segment registration. Also wire topology discover_ub from ub/enable.

Co-authored-by: Cursor <cursoragent@cursor.com>
Reuse device_selection helpers in urma_adapter and install path so heuristics cannot drift, and always free token_id when unregister fails.

Co-authored-by: Cursor <cursoragent@cursor.com>
Apply clang-format-20 to changed lines in ub_transport.cpp and
urma_adapter.cpp so CI code format check passes.

Co-authored-by: Cursor <cursoragent@cursor.com>
tebench --help exits 1 under gflags; tolerate that so the UB benchmark
CLI smoke step checks help text instead of failing early under set -e.

Co-authored-by: Cursor <cursoragent@cursor.com>
Resolve control_plane conflicts by keeping both official
decodeBootstrapResponse (RDMA) and UB bootstrapUb APIs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Re-apply the ub-mock CLI help smoke test that was dropped while
resolving the merge onto the latest LinQuick main.

Co-authored-by: Cursor <cursoragent@cursor.com>
Connor-Matthew and others added 3 commits September 1, 2026 20:36
…nflight token, decouple Topology from UB enable

- scanTimeouts(): after a successful quiesce fence, explicitly remove and
  release a still-present timed-out token before scheduling its retry. A
  provider-lost completion previously left the token in inflight_, so
  releaseInflight() never ran and endpoint outstanding/quota stayed charged
  until stop(), which could exhaust capacity and stall later transfers.
- Topology::discover(): drop the transport-policy discover_ub flag and keep
  discovery transport-agnostic (always attempt UB when the platform supports
  it); UbTransport activation remains gated by transports/ub/enable in the
  transport loader.
- Add regression test ProviderLostCompletionIsReclaimedAfterSuccessfulFence
  with a fake-adapter switch that makes quiesce succeed without returning the
  token, asserting inflight/quota/outstanding accounting return to zero and
  subsequent transfers still make progress.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…complete teardown

- Add transports/ub/max_slices_per_task (default 64k) and reject requests
  whose slice count exceeds it in submitTransferTasks, bounding per-task
  memory/scheduling footprint.
- EndpointStore: treat retire() as incomplete when the endpoint does not
  reach kDestroyed, quarantine it instead of replacing it, and retry
  getOrCreate() so a same-key endpoint is not reused while cleanup is still
  in progress.
- Tests: fake adapter gains reset-failure injection; new
  EndpointStoreDoesNotReplaceEndpointWhenCleanupCannotComplete plus slice-cap
  rejection coverage.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants