Skip to content

Known issues shipped in v0.8.0 from the pre-release reviews #129

Description

@xsmyile

Pre-release reviews of v0.7.0..v0.8.0 found these issues and left them open for v0.8.0. None of them loses stored mail.

  • restore-backup can't resume after an interruption between its two renames (crates/rustmail-storage/src/migrate/restore.rs). db is then missing and .schema0.bak exists, and both a new restore and a normal start refuse that state. The data survives; recovery is manual.
  • A message can commit after SMTP has already answered 451 (crates/rustmail-server/src/main.rs store_group, and the timeout in crates/rustmail-smtp/src/session.rs). The session times out while insert_batch waits on the write lock, so the sender retries and the message is stored twice. The ack deadline needs to be coordinated with a write still in flight.
  • A reconcile in place drops new results that fall between rows already loaded (ui/src/stores/messages.ts, reconcile). For example, a message starred during a disconnect, whose date lands inside the loaded window, never appears.
  • Replay mistakes a snapshot row past the first page for a new arrival (ui/src/stores/messages.ts replay, crates/rustmail-tui/src/app.rs replay). This happens with more than one page of arrivals during one fetch, and the total ends up one too high.
  • A swap window during migration (crates/rustmail-storage/src/migrate.rs, swap). A v0.7.0 process on the same file could commit and close all its connections between the source lock's release and the renames; its write would then stay only in .schema0.bak. This needs two instances on one file and a window of a few milliseconds. The fix is to re-fingerprint the backup after the renames and roll back if it changed.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions