feat: OS-limit detection for pool-scale deployments
- New src/utils/osLimits.ts: reads RLIMIT_NOFILE (soft/hard, from /proc/self/limits) and vm.max_map_count at open — once per process, Linux-only, measurement-only — and warns loudly when either sits below the pool-scale floors (soft NOFILE < 65536, max_map_count < 262144), with the exact raise commands. On stock defaults the failure otherwise arrives as EMFILE or a failed mmap deep inside an index open, long after the cause stopped being visible. An unreadable limit produces NO warning — no measurement, no claim — so non-Linux platforms stay silent. - Exported for ops doors: checkOsLimits() returns the full OsLimitsReport; floors exported as constants. Wired fire-and-forget in performInit after storage init; the check can never affect open. - Unit tests pin the parser (incl. 'unlimited'), the floor thresholds, the null-never-warns rule, and the off-Linux silent path.
This commit is contained in:
parent
dcd5036fe9
commit
16a73b8475
5 changed files with 246 additions and 0 deletions
15
RELEASES.md
15
RELEASES.md
|
|
@ -10,6 +10,21 @@ Full auto-generated changelog: `CHANGELOG.md` · Releases: https://github.com/so
|
|||
|
||||
---
|
||||
|
||||
## v8.8.0 — 2026-07-17 (OS-limit detection for pool-scale deployments)
|
||||
|
||||
Small minor: brains now detect the two OS limits that bite at pool scale and warn **before**
|
||||
the incident instead of during it.
|
||||
|
||||
- At open (once per process, Linux-only, measurement-only), Brainy reads `RLIMIT_NOFILE`
|
||||
(soft/hard, from `/proc/self/limits`) and `vm.max_map_count`, and warns loudly when either
|
||||
sits below the pool-scale floors (soft NOFILE < 65 536; max_map_count < 262 144) — with the
|
||||
exact raise commands (`ulimit -n` / `LimitNOFILE=` / `sysctl vm.max_map_count`). On stock
|
||||
defaults the failure otherwise arrives as `EMFILE` or a failed mmap deep inside an index
|
||||
open, long after the real cause stopped being visible. An unreadable limit produces **no**
|
||||
warning — no measurement, no claim (non-Linux platforms stay silent).
|
||||
- Exported for ops doors: `checkOsLimits()` returns the full `OsLimitsReport`
|
||||
(values + warnings) programmatically, with the floors exported as constants.
|
||||
|
||||
## v8.7.1 — 2026-07-17 (writer-lock acquisition is race-proof + machine-readable through init)
|
||||
|
||||
Two hardenings of the multi-process writer lock (the `locks/_writer.lock` lease that makes a
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue