Files
inbuxa-migrate/tests
jcoffey-dev 2f33cd76a1
ci / test (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 2m51s
ci / announce (pull_request) Skipped
import: keep what an interrupted IMAP or Maildir import wrote
IMAP import wrote a whole folder in one transaction and stopped the folder
at the first message it could not import. A crash near the end of a large
INBOX kept nothing, and one bad INTERNALDATE lost the rest of the folder.
Worse, when a folder stopped early, fetches still in flight for it could be
filed into the next folder's mailbox.

- The transaction is committed after every fetch chunk. Each message is
  written in its own savepoint, so what is committed is always whole, and a
  rerun fetches only the UIDs still missing.
- A message that cannot be imported is rolled back on its own, logged with
  its folder and UID, and counted as failed; the folder carries on, and the
  message stays out of the UID map so the next run tries it again. Archive
  and I/O errors still stop the run.
- Fetch jobs and events carry a folder generation. Moving to a new folder
  cancels queued work for older ones, and any event from an older
  generation is dropped, never filed. Shutdown drains in-flight events
  before joining the workers, so it cannot hang on a blocked worker.
- INTERNALDATE month names are matched in any case.
- Maildir import gets the same per-message savepoint, and commits every 500
  new messages instead of once per folder.
2026-09-30 12:24:37 -07:00
..
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-05-29 18:02:15 +02:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00
2026-09-30 10:09:10 -07:00