You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
crates/rustmail-storage/src/migrate/restore.rs).dbis then missing and.schema0.bakexists, and both a new restore and a normal start refuse that state. The data survives; recovery is manual.451(crates/rustmail-server/src/main.rsstore_group, and the timeout incrates/rustmail-smtp/src/session.rs). The session times out whileinsert_batchwaits 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.ui/src/stores/messages.ts, reconcile). For example, a message starred during a disconnect, whose date lands inside the loaded window, never appears.ui/src/stores/messages.tsreplay,crates/rustmail-tui/src/app.rsreplay). This happens with more than one page of arrivals during one fetch, and the total ends up one too high.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.