On 26/02/2026 21:20, Philip Iezzi via dovecot wrote:
...
Hi John

Thanks for looking into this. Yes, those were the last lines of `doveadm -Dv 
quota get -A` debug output, all related to the same user - I have simply 
redacted the user with [email protected], but did not change anything else / did 
not remove any lines. And yes, the problem always occurs on another user and is 
definitely not related to a specific user.
I don't really understand the logic here - so maybe it's just some kind of 
chained request that triggers the next one (2802712577) via `userdb list`.

I also don't quite remember why I added `quota_storage_size` to the iterate_query. 
Somehow I struggled to get quotas working during Dovecot 2.3 => 2.4 config 
migration. I have removed it now and all still seems to be working with:

iterate_query = SELECT username AS user FROM mailaccounts WHERE active = 1

Thanks for this input. But this doesn't make a difference. I always get the 
same Error:

$ doveadm -f json quota get -A >/dev/null; echo $?
doveadm([email protected]): Error: auth-master: userdb list: User listing 
returned failure
doveadm: Error: cmd quota get: Failed to iterate through some users
75

correlating with exactly 1 such line in mail.log:

dovecot: auth: Error: auth-worker: Aborted LIST request for *: Shutting down

Here's the thing: This only happens on my mail server with 2200 users, not on the other 
with "only" 1200 users, both running the exact same config/versions.
I have now invented this nice funky workaround to completely do without 
depending on the iterate_query. I don't even need to grab a subset of the users 
/ do any sharding, just pipe all users into `-F`:

$ mysql --quick -srN maildb -e 'SELECT username FROM mailaccounts WHERE 
active=1' | doveadm -f json quota get -F -

It always works, always gives me the full data (checked with `wc -c`, while 
`-A` always broke in the middle and never returned the quotas for all users), 
and it never provokes a crashed auth-worker, above Error no longer showing up.

But I'd like to emphasize, that on Dovecot 2.3, I was running `doveadm quota 
get -A` for years, without ever running into this issue. It ran as a cache 
warmup job from my application and pulled all quota usages from Dovecot server, 
every 4 minutes! I know this is probably not recommended and I could easily 
reduce it to run only every 15mins or even less frequently. But no matter how 
often I run it on that server with 2200 users, it always runs fast enough, but 
always breaks since upgrading to Dovecot 2.4

Cheers,
Philip

Hi Philip, it really does look like you're hitting some kind of limit. 
Potentially it could be a mysql timeout but seems unlikely you would have 
changed mysql_read_timeout from its default 30s.
I wonder if it's an issue only for quota or whether it happens on other 
iteration queries, for example doveadm user '*'.
John

_______________________________________________
dovecot mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to