List what a hold export can't read instead of skipping it (LH-12) #75

Merged
jcoffey-dev merged 1 commits from fix/hold-export-exceptions into main 2026-09-28 06:09:20 +00:00
Owner

A hold export (LH-12, #73) skipped any item it couldn't read: a message or file whose content wasn't in the blob store, or a calendar event, contact or file whose stored record was missing. The ZIP gave no sign anything was left out, so it couldn't show it was complete.

Now each such item goes in exceptions.csv with the path it would have had, its account, kind, folder, date, whether it was archived, and the reason (content not found in the blob store or stored record not found). The file is always in the ZIP, so a header-only one shows nothing was missed, and manifest.sha256 carries its hash beside the manifest's. Listed items don't count toward the export's item count.

Tests:

  • cargo test -p jmap --lib hold_export: new what_cant_be_read_is_listed_not_dropped; the existing ZIP test checks the empty exceptions.csv.
  • legal_hold_tests (RocksDB, -- --ignored): the export carries a header-only exceptions.csv.

No new UI strings.

A hold export (LH-12, #73) skipped any item it couldn't read: a message or file whose content wasn't in the blob store, or a calendar event, contact or file whose stored record was missing. The ZIP gave no sign anything was left out, so it couldn't show it was complete. Now each such item goes in `exceptions.csv` with the path it would have had, its account, kind, folder, date, whether it was archived, and the reason (`content not found in the blob store` or `stored record not found`). The file is always in the ZIP, so a header-only one shows nothing was missed, and `manifest.sha256` carries its hash beside the manifest's. Listed items don't count toward the export's item count. Tests: - `cargo test -p jmap --lib hold_export`: new `what_cant_be_read_is_listed_not_dropped`; the existing ZIP test checks the empty `exceptions.csv`. - `legal_hold_tests` (RocksDB, `-- --ignored`): the export carries a header-only `exceptions.csv`. No new UI strings.
jcoffey-dev added 1 commit 2026-09-28 05:15:37 +00:00
List what a hold export can't read instead of skipping it (LH-12)
ci / fork-checks (pull_request) Successful in 49s
ci / build (pull_request) Successful in 11m32s
5c506b9d2b
An item the hold covers whose stored record or content can't be read
goes in exceptions.csv with the path it would have had and the reason,
rather than being left out silently. The file is always in the ZIP, so a
header-only one shows nothing was missed, and manifest.sha256 carries
its hash beside the manifest's.
jcoffey-dev merged commit 5ba54e8fb7 into main 2026-09-28 06:09:20 +00:00
jcoffey-dev referenced this issue from a commit 2026-09-28 07:15:36 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: inbuxa/inbuxa-server#75