Repository navigation
Persist manual nodes in the broker - #60
Noah-Tervalon-Nvidia merged 1 commit into
Conversation
|
This makes sense. Moving MR against develop branch. |
|
I'm working on a massive overhaul to the TUI that we will want to bring in before we make other TUI changes. As soon as that comes in I'd love to get this updated and then will verify it against the new codebase. |
|
Thanks Noah, and thanks Sherief for moving this onto develop. Makes sense. I’ll rebase and adapt the persistence change once the TUI overhaul lands so it fits the new structure cleanly. |
|
@sylvesterkaczmarek can you have a look at the major overhaul I made to the TUI - #117. Would love to get eyes there, I think we will still need this fix. |
|
I reviewed the manual-node/persistence path in #117. The new node-first TUI is compatible with this PR and does not replace it: the manual-nodes worker is still in-memory only, the broker still documents restart loss, and the desktop still owns replay. The TUI keeps the existing node/add, node/remove and nodes/list contract and correctly preserves the manual alias separately from the stable node key. So I agree this fix is still needed. I’ll adapt/rebase #60 once #117 lands rather than racing the overhaul. |
Signed-off-by: Sylvester Kaczmarek <16242628+sylvesterkaczmarek@users.noreply.github.com>
ec6f655 to
6281a4c
Compare
|
@Noah-Tervalon-Nvidia @ckelseynv I have now done the adaptation we deferred until the TUI overhaul landed. This PR is rebased onto current develop, no longer conflicts, and keeps manual-node persistence in nvpair-ui-broker while removing the old Electron-owned persistence/replay path. It also follows the current release-intent/versioning rules, with no direct services/versions.json edit. Validation on the current head 6281a4c: full broker Go tests pass; desktop typecheck and lint pass; all 231 desktop unit tests pass; dead-code, service-contract, SPDX, and git diff checks pass. The commit is signed and GitHub Verified. Could you re-review the current head when convenient? |
|
@sylvesterkaczmarek we were figuring out getting in llama.cpp and the updated TUI along with a handful of other small fixes. Sorry for the slow response here. This looks good to me, I'd love to merge it in on Wednesday next week. |
…#172) ## Description Follow-up to [#60](#60), which moved manual-node persistence into `nvpair-ui-broker`. The broker now saves each successful `node/add` to `configs/manual-nodes.json` and replays the list whenever it starts. That left a gap in the terminal interface. Pressing `r` on a cluster member sent only `nodes:remove`, so a peer first added with `f` kept its manual entry on disk and came back as a manual row after the next restart, in the terminal interface and in the desktop app, which share that file. #60 already made the desktop app send `node/remove` alongside `nodes:remove`; this brings the terminal interface in line. After a successful un-pair, the Nodes tab now also sends `node/remove` with the row's manual id. If the un-pair fails, the manual entry is kept: the peer is still a member, and that address is how it is reached. If forgetting the entry fails, the status line reads `remove manual entry <name> failed`, and pressing `r` again on the now non-member row retries it. ## Release intent <!-- pair-release-intent:v1 --> ### Changelog title Removing a machine you added by address forgets it in the terminal interface ### Changelog body - In the terminal interface, removing a cluster member that you added with `f` now also forgets its address, so it no longer reappears after a restart. ### Bumps - services: patch - nvpair-cluster-manager: none - nvpair-engine-manager: none - nvpair-errors: none - nvpair-job-scheduler: none - nvpair-manual-nodes: none - nvpair-node-info: none - nvpair-node-scanner: none - nvpair-node-settings: none - nvpair-proxy: none - nvpair-tui: patch - nvpair-ui-broker: none - nvpair-workload-manager: none <!-- /pair-release-intent:v1 --> ## Scope - `services/nvpair-tui/ui/nodes.go`: forget the manual entry after a successful `nodes:remove`. - `services/nvpair-tui/ui/toast_test.go`: two tests against a fake broker, for the success and failure paths. - `docs/terminal-interface.mdx`: the `r` key description. The broker and desktop app are unchanged. ## Validation - `cd services/nvpair-tui && gofmt -l . && go vet ./... && go build ./... && go test ./... -count=1`: passed. - With the callback reverted to the old one-step removal, `TestRemoveMemberForgetsItsManualEntry` fails with `broker never received node/remove`. - From `desktop/`: `verify:build-scripts`, `service-contracts:check`, `typecheck`, `lint`, `dead-code:check`, and `test:unit` (282 tests) all passed. - `node scripts/spdx-headers.mjs`: no findings in tracked files. - Not run: the `services/tests` cross-process suite, which does not build or drive `nvpair-tui`, and a manual check against a live peer. ## Risk Terminal interface only. No JSON-RPC method or payload changes: the Nodes tab already sent `node/remove` for manual rows that are not members. ## Checklist - [x] I have read the [Contributing Guidelines](https://github.com/NVIDIA/Personal-AI-Router/blob/main/CONTRIBUTING.md). - [x] Every commit is signed off (`git commit -s`), certifying the [Developer Certificate of Origin](https://developercertificate.org/). - [x] New or existing tests cover the change. - [x] Relevant documentation is updated. - [x] I checked the diff, changed filenames, and commit messages for credentials, private data, internal URLs, internal issue identifiers, and generated artifacts. - [x] I recorded the validation commands and results above. - [x] I declared version bumps in the release-intent block above. `services/versions.json` is written by automation — do not edit it by hand. --------- Signed-off-by: Terve <ntervalon@nvidia.com> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Changelog title
Manual nodes persist across restarts
Changelog body
Bumps
Description
Closes #58.
Move manual-node durability into
nvpair-ui-brokerso headless TUI/service nodes keep manual peers across broker and worker restarts. Successful add/remove operations update the existingconfigs/manual-nodes.json, and a restarted manual-nodes worker is repopulated automatically.This version is rebased and adapted to the current
developarchitecture after the TUI overhaul. The obsolete Electron-owned store/replay path is removed so the broker is the single persistence owner.Scope
nvpair-ui-brokerthrough release intent; do not editservices/versions.jsonmanuallyValidation
cd services/nvpair-ui-broker && go test ./...— passedcd desktop && npm run typecheck— passedcd desktop && npm run lint— passedcd desktop && npm run test:unit -- modular/modular-supervisor-readiness.test.ts— 4 passedcd desktop && npm run test:unit— 39 files, 231 tests passedcd desktop && npm run dead-code:check— passed with zero findingscd desktop && npm run service-contracts:check— passed with no unignored driftnode scripts/spdx-headers.mjs— 1027 checked, 0 missinggit diff --check— passedRisk
The JSON-RPC surface and persisted file schema are unchanged. Existing
manual-nodes.jsonentries remain readable. The ownership change removes the duplicate Electron persistence path and makes broker/TUI-only deployments durable as well.Checklist
services/versions.jsonis written by automation and is not edited in this PR.