Limits and open measurements¶
These are the limits the code and the design note record. The recommendations are the ones in DESIGN.md, included as Design.
What a successful run guarantees¶
RENAME_EXCHANGEchanges which inode a stable path names. A process that opens one file before the swap and another after it can still mix generations.A process killed with
SIGKILLduring the ordinary-rename fallback cannot roll back in process. The nextresumerepairs the journaled names. The missing-name window is part of that fallback.A transaction that covers more than one module directory is a sequence of exchanges and replaces. It is one atomic directory operation per module directory.
The unsandboxed install-path fallback cannot constrain an EasyBuild hook that writes outside the generation.
gcand the grace period cannot see open files on every cluster node.A module-file replacement keeps ownership, mode, and the listed ACL bytes when those bytes read back unchanged. The known names are the POSIX access list, the generic NFSv4 list, and the native General Parallel File System list. The recorded checks are on ext4.
open-004¶
The dual lock from two build nodes is unmeasured. General Parallel File System is unmeasured. Recorded checks use ext4.
Before enabling the wrapper on a shared filesystem:
Run
bwrap --dev-bind / / trueas the account that will build. Use the bwrap backend when it succeeds; otherwise use the userns backend when that probe succeeds.Keep
user.max_user_namespacesnon-zero for the build account when the userns backend is required. A zero value does not by itself refuse a setuid bubblewrap that passesbwrap --dev-bind / / true.Run
eb-staged-rebuild probe --path <software>on the shared software filesystem. Require exchange for prefixes where a transient missing name is unacceptable. Otherwise the restoring fallback belongs in a frozen release window.Contend for the same lock from two build nodes. If both acquire it, use a scheduler singleton or another measured distributed lock before deployment.
Pin the pipeline to EasyBuild 5.4.2 or a newer version the integration test has run.
The walk-through host answered (1) with bwrap is not installed, (2) with user.max_user_namespaces: 192727 and a usable userns sandbox, and (3) with RENAME_EXCHANGE: yes on ext4. Items (4) and (5) were not run on that host. The integration test in tests/test_easybuild_integration.py is the EasyBuild 5.4 check, and it runs when EB_STAGED_REBUILD_INTEGRATION=1.