On Vas, Szeptember 9, 2007 06:01, Timo Sirainen wrote:
On Sat, 2007-09-08 at 15:04 +0200, Farkas Levente wrote:
But since there's still a chance that index files could break (although v1.1 tries harder than v1.0 to fix problems), it would be nice if the flags/keywords were written to metadata block once in a while. So if
Timo Sirainen wrote: the
index files are lost, flag changes wouldn't be completely lost. Metadata updates of course use disk I/O so they shouldn't be done too often.
I was thinking that the metadata could be updated:
- if IMAP connection has been idling for 4 hours (not changing flags)
- when closing mailbox and there are changes older than 4h
- immediately if there are changes older than 24h (whenever mailbox is being synced, e.g. SELECT/NOOP/STATUS)
Or something like that. Those rules can of course be changed, but I'm not sure if I should bother making them configurable from dovecot.conf. There are already too many settings.
what about a maintanance srcipt/daemon which can be run from cron and every sysadm can decided when and how often he'd like to update metadatas?
That would require keeping the "<mailbox>: <last updated>" information in some central database. Otherwise if you had lots of mailboxes it would waste a lot of disk I/O in such run. And I'm not really interested in creating such a database at least yet. :)
than may ber move this code to lda also helps. my main reason to suugest the above is the same why i like lda: try to distribute the system load in time. that's the main problem with indexing at reading time. every morning when most people start to read his mail dovecot start to index all mail which creates high load with lda we distribute this load from mail read time to mail arrival time which is much better place! the same should have to be do with metadata update. somehow distribute the load eg. move to some time which is not so important during the night or move to lda which happend during arrival time in stead of read time or any other place but not during read.
--