Repository navigation
chore: merge release-v1.4.1 back into master - #2134
nullPointerEnjoyer wants to merge 13 commits into
Conversation
- Bump workspace version to 1.4.1 - Changelog: 1.4.1 section (wallet rescan fix; neutral PoS seal indexing entry) - Extend testnet checkpoints to height 818500 (step 500, from local synced testnet node via chainstate_get_block_ids_as_checkpoints; ~2.5k blocks behind tip 821011 at generation time)
- release_linux.yml: the RPM smoke-test step never sourced packaging/images.env, so $FEDORA_IMAGE was empty and docker tried to pull the script path as an image name. - win installers: declare TARGETDISTARCH x64. Without it the installers are 32-bit, so their HKLM\SOFTWARE uninstall entries land in WOW6432Node and the (64-bit PowerShell) smoke check cannot see them; files and PATH install fine, masking the issue until the registry assertion.
- rpc docs: regenerate node-daemon/docs/RPC{,_DEV}.md and
wallet-rpc-daemon/docs/RPC.md for the 1.4.1 version bump; the
expect-file tests embed CARGO_PKG_VERSION and failed on all three
OS legs of the build workflow.
- win installers: replace the invalid TARGETDISTARCH x64 line with the
proper NSIS mechanism: a shared MintlayerRequireX64 macro
(common.nsh) that aborts on 32-bit Windows and switches the registry
view to 64-bit via SetRegView, inserted from .onInit and un.onInit
(the uninstaller is a separate process). This keeps the uninstall
entries in the native HKLM\SOFTWARE hive as the smoke test expects,
which the previous commit intended but implemented as a command NSIS
rejects ("Invalid command: TARGETDISTARCH").
- arch smoke test: pacman has no IgnoreArch directive (that is a
makepkg flag), so installing the foreign-architecture package failed
with "package architecture is not valid". Add the foreign arch to
the Architecture option of /etc/pacman.conf instead, and update the
stale IgnoreArch comments in test-local.sh and release_linux.yml.
The previous fix added the foreign arch to pacman's Architecture list, which lets the amd64-only Arch image *install* the aarch64 package, but its binaries still cannot execute there: there is no aarch64 userland, so every binary dies under qemu with exit 255 (the ELF interpreter /lib/ld-linux-aarch64.so.1 does not exist). Docker Hub publishes no arm64 Arch image at all (library/archlinux and archlinux/archlinux are both amd64-only), so unlike the deb/rpm legs there is no --platform linux/arm64 escape hatch. For foreign-architecture packages, smoke-arch.sh now assembles a chroot of the Arch Linux ARM rootfs and runs the same checks inside it: pacman -U installs the package with dependencies from the arm repos, pacman hooks run under emulation (sysusers creates the mintlayer user), and the binaries execute through the host's qemu binfmt handlers already registered for the deb/rpm arm64 legs. Chroot quirks handled: - pacman's download sandbox user switch fails under the container seccomp profile: pass --disable-sandbox inside the chroot - /proc is not mounted, so /etc/mtab (pacman free-space check) is a static copy of the container's mount table - pacman-key --populate needs process substitution (/dev/fd), which requires /proc: initialize the chroot keyring with the container's amd64 pacman-key via --gpgdir instead of the emulated one - /work is not visible in the chroot: script, lib.sh and the package are copied in Verified locally against the pinned CI image with a synthetic aarch64 package exercising install, sysusers hook, binaries, systemd-analyze, and man page checks, plus an x86_64 package for the native path.
Accepted: * rpc: reclassify ClientError::RequestTimeout as application-level. jsonrpsee does not terminate the WS client's background task on a timeout, so the connection may still be usable; tearing down a healthy client after one slow response churned connections under transient load. Genuinely dead connections are now detected instead by enabling WS-level pings in new_ws_client (failed pings terminate the background task and surface as RestartNeeded, i.e. a connection-level error), which also gives every consumer of the client half-dead-connection detection it previously lacked. The request timeout is pinned explicitly to 60 seconds (matching the previous default) so the daemons' no-wedge guarantees do not depend on a library default. * scanner-daemon: wait one second after a successful sync before polling the node again. sync_once returns Ok immediately when the scanner is already at the tip, so the loop previously hammered the node's chainstate RPC thousands of times per second; the one-second cadence bounds the explorer's tip latency while keeping the node load gentle. * scanner-daemon: document the ping-based dead-connection detection and the pinned request timeout in the supervision loop. * tests: the scanner reconnect test logs its entropy seed (from_entropy_and_print) so CI failures are locally reproducible. Rejected: * 'make the supervision loop shutdown-aware': none of the mintlayer daemons install signal handling (documented in the web server's supervisor); graceful shutdown is a codebase-wide concern outside this PR's scope. * 'reap a proxy connection pair as soon as either direction finishes': contradicts the previous round's own request (which asked for the either-finished reaping that the comment now documents); a half-drained pair still forwards in one direction and ends on its own once the peer socket closes, and the registry stays bounded.
Carries the release-line fixes onto master: foreign-arch packaging smoke tests, release changelog backfill, checkpoint updates, and the api-server/rpc/wallet OpenCodeReview follow-ups. # Conflicts: # .gitignore
|
🔍 OpenCodeReview found 6 issue(s) in this PR.
📄
|
Summary
Carries the release-line v1.4.1 work onto master so the two lines are aligned after the v1.4.1 ship:
One conflict resolved:
.gitignore(kept master's# local agent workspacecomment alongside the.opencode/ignore). No code conflicts.Verified:
release-v1.4.1and tagv1.4.1point at the same commit (190cf62); after this merge master contains every commit reachable fromv1.4.1.