docs: RELEASES.md entry for 8.0.17 (canonical count recovery + dead-machinery sweep)
This commit is contained in:
parent
352e2da88f
commit
6b8b9cba18
1 changed files with 23 additions and 0 deletions
23
RELEASES.md
23
RELEASES.md
|
|
@ -10,6 +10,29 @@ Full auto-generated changelog: `CHANGELOG.md` · Releases: https://github.com/so
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## v8.0.17 — 2026-07-08 (count recovery scans the real layout · ~1,100 lines of dead 7.x machinery removed)
|
||||||
|
|
||||||
|
A cleanup of the vestigial 7.x "hnsw sharding" machinery that turned up two real fixes.
|
||||||
|
|
||||||
|
**1 — Count recovery now scans the layout the database actually uses.** When `counts.json` is
|
||||||
|
lost or corrupted (container restarts, partial copies), the recovery scan rebuilt the entity/
|
||||||
|
relationship counters by counting files in `entities/*/hnsw/` — directories the 8.0 write path
|
||||||
|
never populates — so an established store recovered to **zero counts** on real data: wrong
|
||||||
|
`getNounCount()`/stats, a "New installation"-style boot log, and a mis-sized rebuild-strategy
|
||||||
|
decision at open. The scan now counts the canonical `entities/<kind>/<shard>/<id>/` tree.
|
||||||
|
Regression-tested: delete `counts.json` from a populated store → reopen → exact counts.
|
||||||
|
|
||||||
|
**2 — A latent init-time deadlock removed.** The recovery scan's type-distribution sampler called
|
||||||
|
a guarded accessor (`getNounMetadata` → `ensureInitialized`) from **inside** `init()`, which
|
||||||
|
re-enters `init()` and hangs the open. It was unreachable before only because the old scan never
|
||||||
|
found anything to sample; the fix reads the sampled metadata files directly.
|
||||||
|
|
||||||
|
**3 — The dead machinery itself is gone (−1,138 lines).** Twenty-three methods with zero callers:
|
||||||
|
the 7.x hnsw-layout entity/edge CRUD, the sharding-depth prober + depth-migration engine, and an
|
||||||
|
orphaned streaming paginator. Verified by reachability analysis before deletion; no public API
|
||||||
|
touched; the full suite is green. New stores no longer carry the always-empty legacy directories'
|
||||||
|
scan cost, and the boot log keeps the truthful new-vs-established wording from v8.0.13.
|
||||||
|
|
||||||
## v8.0.16 — 2026-07-08 (concurrency fast-follow: atomic `ifAbsent`/`upsert` + exact blob reference counts)
|
## v8.0.16 — 2026-07-08 (concurrency fast-follow: atomic `ifAbsent`/`upsert` + exact blob reference counts)
|
||||||
|
|
||||||
Closes the two remaining check-then-act races found in the sweep that followed v8.0.15's CAS fix
|
Closes the two remaining check-then-act races found in the sweep that followed v8.0.15's CAS fix
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue