review(data-core): below-cut nits #313

Closed
opened 2026-07-04 06:52:53 +00:00 by JMR-dev · 0 comments
JMR-dev commented 2026-07-04 06:52:53 +00:00 (Migrated from github.com)

Phase-3 review — below-the-cut LOW findings (Backlog):

  • SignatureRepository.delete(:41): non-atomic delete+promote-default (crash between → account left with no default). Wrap in one @Transaction.
  • MessageDao.observeSummaries(:23): dead production API (only tests use it; superseded by Paging #124/#214) — a full-scan footgun; remove it.
  • Unchunked IN(:ids) in MailRepositoryImpl expunge/move (:326/:382) — safe today via maxSize=200 cap but latent SQLITE_MAX_VARIABLE_NUMBER (999) crash; chunk like MailPruner does.
  • AccountDataMigrator(:100) stale KDoc (says v1/1.json, DDL is v2 with sortOrder).
  • DatabaseEncryption.migrate(:82) doesn't sweep stale -journal sidecar (AccountDataMigrator does).
  • AccountSettingsRepository.update/SignatureRepository.create non-atomic read-modify-write / check-then-act (concurrent setX clobber; two first-creates both default) — unlikely, tighten with @Transaction.
Phase-3 review — below-the-cut LOW findings (Backlog): - `SignatureRepository.delete`(:41): non-atomic delete+promote-default (crash between → account left with no default). Wrap in one @Transaction. - `MessageDao.observeSummaries`(:23): dead production API (only tests use it; superseded by Paging #124/#214) — a full-scan footgun; remove it. - Unchunked `IN(:ids)` in `MailRepositoryImpl` expunge/move (:326/:382) — safe today via maxSize=200 cap but latent `SQLITE_MAX_VARIABLE_NUMBER` (999) crash; chunk like `MailPruner` does. - `AccountDataMigrator`(:100) stale KDoc (says v1/1.json, DDL is v2 with sortOrder). - `DatabaseEncryption.migrate`(:82) doesn't sweep stale `-journal` sidecar (AccountDataMigrator does). - `AccountSettingsRepository.update`/`SignatureRepository.create` non-atomic read-modify-write / check-then-act (concurrent setX clobber; two first-creates both default) — unlikely, tighten with @Transaction.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: JMR-dev/LibreMail#313