Repository navigation
Recover node installs that never registered - #728
Merged
Merged
Conversation
An install that failed before Core recorded the node no longer dead-ends after a sandbox configuration change or a Core upgrade: the next command replaces the earlier attempt's configuration and mismatching cached files and continues. A registered node keeps its state, and a rerun that meets a newer node program or a changed configuration says what is true and the Remove node, uninstall and Add node steps. The installer checks free disk before downloading, shows a full disk as such, and deletes the Runtime archives once the image is imported. It drops the unused --update and --bundle options, keeps the local provider check's class on a failed registration, and names the cause in a dozen smaller messages.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Node installs that never registered recover on their own, and the node installer's messages say what is true.
--updateand--bundle(no caller outside tests; F2's Range resume does not need--bundle).distribution.load_manifest(offline_root=)stays:deploy/install-source.pyuses it.oac-node register's local provider readiness class is mapped to a fixed message (P2-2);curl -fsS(P2-5); bootstrap directory/file refusals name the path and the failed check, with the root-owned~/.oachint (P2-6); no "Installation failed:" prefix for uninstall and helper errors (P2-10); a non-UUID--installation-idsays where the ID comes from (P2-11); uninstall printssudo docker image rmand no contradictory "No node ... was installed with sudo" line on the second run (P2-12); a Docker network with no containers and no record no longer blocks adding the node (P2-14); an interrupted lease says what to check and delete (P2-15); the Python message names the interpreter sudo ran (P2-16); service start failure carries the journal hint (P2-18); the busy install lock mentions a configuration in preparation (P2-19); a metadata body shorter than its Content-Length is retried (P2-21).source_hashrefreshed):nodes.mdHost requirements, Rerun/expiry, Installer messages;deploy/node/README.md; the Add node checklist item (Web, en and zh-CN, e2e) now says "about 3 GB of free disk while the Runtime image installs".Why
Audit findings 2, 7 (message), 8 and P2 1, 2, 5, 6, 7, 10, 11, 12, 14, 15, 16, 18, 19, 21 (
audit-node.md). Lane H owns the uninstall hint string and #717's node logging; this PR does not touch them. The messages follow #720's tone: what happened, the next step, no errno text.Decisions
No new setting, flag, field, route or command. New code:
UnrecordedIdentity(node_spec signal for "Core rejected the retained credential of a node it never recorded"; replaces the token fallback request),require_disk,refuse_newer_node_software,drop_runtime_archives,micro_image_ready(extracted fromprepare_runtimeso the preflight can ask whether the image is already imported),docker_image(split fromensure_docker_imagefor the same reason).Disk measurement (release v0.0.12-rc.1):
runtime.tar.gz372,902,718 B; its gzip trailer gives 1,044,846,592 B unpacked; programs 16.4 + 49.9 + 41.9 + 21.6 MB; local Runtime image 1.49 GB. Before, a node kept the archive, the unpacked tar and the image (about 2.9 GB, Docker). Now it keeps the image and the programs. The audit's ~3.5 GB figure for microsandbox could not be measured here (the microsandbox store size needs the live check).Verification
python3 -m unittestindeploy/node: test_node_install (72), test_node_spec (10), test_distribution (21), test_node_generations (13), test_generation_review_regressions (14), test_node_helper_transfer, test_node_proxy (4), test_node_readiness (9): all OK.deploy/test_install_source.py: OK.pnpm --filter @oac/web typecheck; vitest forenrollment-command.test.ts,node-enrollment.test.ts,i18n: pass.scripts/check-names.py: pass.go run ./services/core/cmd/specification-contract -write: no change.node --test website/tests/translations.test.mjs: tests 1-2 pass; test 3 needs vitepress, which is not installed here (skipped).nodes.spec.tstext updated, not run), fullmake check, and any root install.Left for the live check on mx2
Root install of both providers after a forced early failure (rerun after a sandbox size change and after a Core upgrade); the real
oac-node registerstderr line for a failed local provider check; disk usage after a microsandbox install (store size); a registered host rerun after upgrading Core; a full disk on a small loop mount; the rerun message fromsudowith a differentpython3.Need help on this PR? Tag
@codesmith-botwith what you need.