Timo Sirainen wrote:
On Tue, 2007-04-17 at 15:41 -0400, Justin McAleer wrote:
In my testing of using sql dictionary for quota, it appears pretty
buggy. Are you aware of such problems? Either way, would you consider
reliable dictionary quota support a target for 1.1?
Actually I think I did it today. The biggest problem with v1.0
implementation was that expunges could be counted multiple times if
multiple processes were running.
I ran imaptest for a while with 10 connections and in 3 different tests
the dict quota always contained correct values, so I thought it was
probably working.
I was having problems with it seemingly not making updates at all. It
would do the initial usage calculation when I logged in, but never
updated when I sent a message or expunged anything. In the past (months
ago) I also saw problems when sending a message to multiple
recipients... I believe it would only update the first recipient or
something like that. I was quite astounded by that, since deliver is run
once per user, of course. So I was figuring there may be a problem in
the dictionary proxy. But, let me double-check all of my configs. If 1.0
should be reliable except for the expunge problem, I'll spend some time
today giving it a more thorough examination.
While I'm talking about dictionary quota, do you think it could be
configurable how to identify the users? I'd like to use uid rather than
username/email address, as our users can change their userids. It's not
a huge deal, I can make deleting/updating the quota table row part of
the rename process, but it would be nice and maybe others would benefit
from being able to tweak it.
I did find that it
seemed to blow maildir++ away in terms of performance. We have a few
really large maildirs that basically choke when quota is enabled
using
maildir++ (200,000+ messages).
Even if filenames had the ,S=size? Another problem is that the quota is
read, and possibly recalculated, much more often than is really
necessary.. I haven't fixed that yet in v1.1.
Yes, even then. Perhaps I made it sound a little worse than it was, but
expunging a single message made the imap process hang for a while. I'm
not sure how long, but definitely long enough that users would
(rightfully) complain. I was expecting just an incremental update to be
made to maildirsize, but it did the same after every single expunge.
I'll do an strace on the process to get a better idea of what exactly is
taking so long, but it's fine with quota set to 0, bad when set to
anything else (enabled).