QA batch 4b - logical size and content mtime survive the backend (v0.6.252) #701

Merged
Cordy merged 8 commits from fix-qa4b into main 2026-09-23 19:58:57 +00:00
Owner

Second slice of the storage cluster: sizes and times tell the truth on encrypted/object backends.

  • ownermeta.Rec gains Size/MTime (nil = pre-upgrade entry, fall back to backend). Recorded at write via a plaintext-counting reader, overlaid in List and Stat, carried across rename/move by the existing record migration — that preservation IS the #664 fix; the overlay IS the #659 fix (PROPFIND, the web listing and /api/v1/files all flow through this layer).
  • Copies inherit the source's logical size with a fresh content time.
  • .cairn-meta.json writes no longer mint versions of the manifest itself (#670 side-finding — one guard in the versions layer, shared by Write and Delete).

Known limits (in the changelog too): files written before this release keep backend values until their next write; a trash-restore returns to backend values until rewritten.

Red-green: internal/storage/ownermeta/qa4b_test.go drives an inflating fake backend (+3000-byte envelope, rewrite-time renames) and asserts 10 plaintext bytes and a preserved Modified through the layer.

Closes #659
Closes #664

Second slice of the storage cluster: sizes and times tell the truth on encrypted/object backends. - `ownermeta.Rec` gains `Size`/`MTime` (nil = pre-upgrade entry, fall back to backend). Recorded at write via a plaintext-counting reader, overlaid in `List` and `Stat`, carried across rename/move by the existing record migration — that preservation IS the #664 fix; the overlay IS the #659 fix (PROPFIND, the web listing and `/api/v1/files` all flow through this layer). - Copies inherit the source's logical size with a fresh content time. - `.cairn-meta.json` writes no longer mint versions of the manifest itself (#670 side-finding — one guard in the versions layer, shared by Write and Delete). Known limits (in the changelog too): files written before this release keep backend values until their next write; a trash-restore returns to backend values until rewritten. Red-green: internal/storage/ownermeta/qa4b_test.go drives an inflating fake backend (+3000-byte envelope, rewrite-time renames) and asserts 10 plaintext bytes and a preserved Modified through the layer. Closes #659 Closes #664
The owner manifest now records the plaintext byte count and content mtime at write; List and Stat overlay them, and the existing move machinery carries them across rename - so encrypted and S3 instances stop reporting ciphertext sizes in listings and PROPFIND, and rename/move stop resetting Modified. Copies inherit the source's logical size. The manifest itself no longer mints versions on every metadata write (#670 side-finding). Files written before this release keep backend values until their next write.
changelog: v0.6.252
All checks were successful
ci / test-and-build (pull_request) Successful in 1m9s
b13f7573f5
Cordy merged commit d89279c125 into main 2026-09-23 19:58:57 +00:00
Cordy deleted branch fix-qa4b 2026-09-23 19:59:00 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#701
No description provided.