The 7.x branch system stored Virtual Filesystem content as blobs in its
copy-on-write area (`_cow/`). 8.0 removed that system and stores content blobs
in the content-addressed store (`_cas/`), but the one-time layout migration only
moves entities — it never adopted the `_cow/` content blobs. A store that used
the VFS was left with every VFS-backed read throwing "Blob metadata not found"
and its pages 500ing, with no first-party recovery and the pre-upgrade backup
already removed on entity-migration "success".
Add an on-open recovery pass (`autoAdoptLegacyVfsBlobsIfNeeded`) that runs right
after the layout migration and adopts every orphaned `_cow/` blob into `_cas/` —
copying both the bytes and the metadata via the raw object primitives,
idempotently and non-destructively (the `_cow/` originals are never deleted). It
is a separate phase, not folded into the migration, so it also heals a store
already upgraded by an earlier 8.0.x that stranded the blobs (whose layout-
migration marker is stamped): it is gated on the presence of `_cow/` and its own
`_system/vfs-blob-adoption.json` marker. Filesystem-only; native-8.0 and non-VFS
stores no-op on a cheap existence check.
- `BaseStorage.adoptLegacyCowBlobs()` — the scan/copy primitive, returning
`{ cowBlobs, adopted, alreadyPresent, incomplete }`; skips (does not half-adopt)
a blob missing its bytes or metadata.
- `brain.vfs.adoptOrphanedBlobs()` — the explicit force path; self-initializes.
- Backup retention: the automatic pre-upgrade backup is now kept if any blob
can't be fully adopted (`incomplete > 0`), instead of being removed on
entity-migration success alone — a blob-parity gate the migration signal
cannot provide.
Adds an end-to-end integration test (storage-level adopt with idempotency and
incomplete handling; self-heal on reopen; the explicit API) and an upgrade guide.
|
||
|---|---|---|
| .. | ||
| aggregation.md | ||
| enterprise-for-everyone.md | ||
| export-and-import.md | ||
| find-limits.md | ||
| framework-integration.md | ||
| import-anything.md | ||
| import-flow.md | ||
| import-progress-examples.md | ||
| import-progress-implementation.md | ||
| import-quick-reference.md | ||
| inspection.md | ||
| installation.md | ||
| migrating-to-v4.md | ||
| MIGRATING_TO_V5.11.md | ||
| migration-3.36.0.md | ||
| model-loading.md | ||
| natural-language.md | ||
| nextjs-integration.md | ||
| optimistic-concurrency.md | ||
| quick-start.md | ||
| schema-migrations.md | ||
| snapshots-and-time-travel.md | ||
| standard-import-progress.md | ||
| storage-adapters.md | ||
| streaming-imports.md | ||
| subtypes-and-facets.md | ||
| upgrading-7-to-8.md | ||
| vue-integration.md | ||