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).