Size of transaction log file is increasing continuously if dsync is failed
Duc Anh Do
doducanh2710 at gmail.com
Thu Apr 22 10:02:59 EEST 2021
Hi Dovecot community,
I would like to share a problem I saw a few days ago. Any comment is highly
appreciated.
*Steps to reproduce*
0. Version of Dovecot I use is v2.3.11.3.
1. Prepare 2 Dovecot backends:
- One backend is used as the source of dsync command. Other backend is
used as the destination of the dsync command.
- Mailbox format is Maildir. Mail dir of two test accounts is empty.
2. Prepare the test account in the source of dsync:
- Send a test message to the test account. For example, I use swaks:
swaks --server 127.0.0.1 --port 24 --protocol LMTP --to user1 at local
- Use doveadm expunge command to clean mail dir of the test account:
doveadm expunge -u user1 at local mailbox INBOX all
3. Prepare the test account in the destination of dsync:
- Log in test account via IMAP then select INBOX first:
telnet 127.0.0.1 imap
...
s login user1 at local 1
...
s select INBOX
...
s logout
- Then perform dsync:
doveadm -o imapc_host=backend2.local -o imapc_port=143 -o
imapc_user=user1 at local -o imapc_password=1 backup -s '' -R -u user1 at local
imapc:
- Confirm error occurs when using dsync:
dsync(user1 at local): Info: imapc(backend2.local:143): Connected to
192.168.100.2:143 (local 192.168.100.27:58850)
dsync(user1 at local): Error: Mailbox INBOX sync: mailbox_delete failed: INBOX
can't be deleted.
AQAAAHm4+Jk=
4. Log in the test account in dsync destination then select INBOX. Repeat
many times. I can see the size of the transaction log file is increasing
continuously.
*Before*:
-rw-------. 1 vmail vmail 456 Apr 22 10:54 dovecot.index.log
*After*:
-rw-------. 1 vmail vmail 544 Apr 22 10:59 dovecot.index.log
-rw-------. 1 vmail vmail 632 Apr 22 11:00 dovecot.index.log
-rw-------. 1 vmail vmail 720 Apr 22 11:00 dovecot.index.log
*Problems*
- Size of the transaction log file is increasing continuously. Do you
think this is an issue of Dovecot?
- The value of *mail_index_log_rotate_max_size* is 1M by default.
However the transaction log file dovecot.index.log is not rotated when its
size exceeds limit.
- Because the size of the transaction log file is too big and it is not
rotated, I think "out of memory" error will occur when I try to use IMAP
SELECT or POP3 STAT command (if the virtual size limit is small enough).
- If "size of the transaction log file is increasing continuously" is an
issue, what should I do to avoid it or is there any workaround? I
understand I should fix the error *Error: Mailbox INBOX sync:
mailbox_delete failed: INBOX can't be deleted* first before doing
anything next. I think removing the transaction log file is an
understandable workaround.
*Investigaton*
- About the error *Error: Mailbox INBOX sync: mailbox_delete failed:
INBOX can't be deleted*, I can understand the cause after reading this
thread https://dovecot.org/pipermail/dovecot/2014-April/095588.html
2) Maildir + INBOX + backup/sync/replicate
> In the test scenarios where the INBOX on one side was to be completely
> removed, e.g. doveadm backup -R the dsync failed and
> nothing was synced to the target. This is because before moving the source
> mails to the mailbox, dsync cleans out the old ones (
> -R preserves nothing) and in Maildir the INBOX can not be removed. This is
> a feature/not easily solvable, because in Maildir
> INBOX is different from other folders.
>
- The transaction log file is rotated whenever there's any change in
index file. I can confirm by sending a test message to the test account in
dsync destination. I can see that logic in
*src/lib-index/mail-index-sync.c* and *src/lib-index/mail-index-write.c*.
After that, the size of the new transaction log file is not increasing
anymore.
- When the error *Error: Mailbox INBOX sync: mailbox_delete failed:
INBOX can't be deleted* occurred, I tried to dump the transaction log
file and I saw these records:
record: offset=432, type=index-deleted (ext), size=12
record: offset=444, type=index-undeleted (ext), size=12
- Do you think these records relate to the issue that the size of the
transaction log file is increasing continuously?
- Did the error *Error: Mailbox INBOX sync: mailbox_delete failed: INBOX
can't be deleted* make content of transaction log file
incomplete/incorrect?
Regards,
Anh Do
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://dovecot.org/pipermail/dovecot/attachments/20210422/ae5c4d65/attachment-0001.html>
More information about the dovecot
mailing list