cyr_expire (2.3.16) problem

Julien Coloos julien.coloos at gmail.com
Thu Feb 14 12:28:48 EST 2013


Hi,

Le 13/02/2013 14:02, Frank Elsner a écrit :
> Hello,
>
> from time to time we have this type of problem during the nightly cyr_expire:
>
> Feb 10 04:01:50 mailbackend-4 cyrus-backend/cyr_expire[15569]: IOERROR: user.<username> zero index/expunge record 299/301
> Feb 10 04:01:50 mailbackend-4 cyrus-backend/cyr_expire[15569]: failure expiring user.<username>: System I/O error
> Feb 11 04:01:48 mailbackend-4 cyrus-backend/cyr_expire[2010]: IOERROR: user.<username> zero index/expunge record 299/301
> Feb 11 04:01:48 mailbackend-4 cyrus-backend/cyr_expire[2010]: failure expiring user.<username>: System I/O error
> Feb 12 04:02:19 mailbackend-4 cyrus-backend/cyr_expire[27580]: IOERROR: user.<username> zero index/expunge record 299/301
> Feb 12 04:02:19 mailbackend-4 cyrus-backend/cyr_expire[27580]: failure expiring user.<username>: System I/O error
> Feb 13 04:03:15 mailbackend-4 cyrus-backend/cyr_expire[19753]: IOERROR: user.<username> zero index/expunge record 299/301
> Feb 13 04:03:15 mailbackend-4 cyrus-backend/cyr_expire[19753]: failure expiring user.<username>: System I/O error
>
> This leaves cyrus.*.NEW files in the mailbox directory of the user and
> requires a reconstruct.
>
> What's behind? And how can we avoid this problem?
If you got into a situation like ours, you may have reached the limit 
for the number of opened file descriptors at some point on your server. 
If so you may find a bunch of errors at that time in your logs; there 
should also be some of the messages mentioning "Too many open files in 
system" or similar.
In such a situation, there is a bug that can lead to empty (zeros) index 
records being added when a message is received, which later triggers 
"zero index/expunge record" errors.
If that's the case, you may try to find how many cyrus processes can run 
at the same time (maxchild of each service) and how many file 
descriptors each usually consume to determine a "safe" limit on your 
system. Note that each shared library consume one file descriptor (mmap 
by the run-time linker apparently).

I believe this situation should not happen anymore in cyrus 2.4 (there 
is an assertion preventing that). But I don't know what happens for 
those empty records upon migrating from cyrus 2.3 to 2.4.


Regards,
Julien



More information about the Info-cyrus mailing list