On 2025-08-14 6:22 PM, Jonathan Kamens wrote:

On 8/14/25 2:23 PM, Nels Lindquist wrote:
What configuration directives do you have for the conversations database (which is required for xapian) and for search?

conversations: 1
conversations_db: twoskip
search_engine: xapian
defaultsearchtier: default
defaultsearchpartition-default: /var/spool/imap-search
sync_log: on
sync_log_channels: squatter

You probably also want to add:

search_fuzzy_always: yes

That won't affect the behaviour you're seeing, but since Xapian can only use fuzzy searches, it'll translate client requests for standard searches for use with the Xapian engine which may increase client performance.

There's a longstanding issue with xapian indexing which can be worked around by setting search_batchsize to a very large number (like 1000000), blowing away the contents of your search partition and then regenerating with "squatter -v -i".

Yes, that sort of resolves the issue. I was able to rebuild my indexes, but squatter -R still appears to be doing a ton of extra work every time it starts up and causing excessive locking which is blocking clients from functioning for noticeable delays while it is considering reindexing every single message in every mailbox every time it starts up.

It's disappointing that this longstanding issue hasn't been fixed and doesn't seem to have been documented anywhere obvious that I could find. Because of that I wasted many hours upgrading to 3.12.1 and then digging into squatter in a debugger to try to figure out what's going on.

Of note: when I said in my last message that the rolling squatter process was doing the right thing I was mistaken. In fact the rolling squatter was having the same problem, it was just rotating through the mailboxes and reindexing the same messages in each one in turn, rather than sticking with a single mailbox and indexing the same messages in that mailbox over and over, so I didn't notice right away that it was also malfunctioning.

Is your "squatter -R" setup in cyrus.conf still in the EVENTS section, by chance?

If so, it should be moved to the DAEMON section. Once it's up and running it should be continuously rolling search indexing from the squatter replication channel you've defined, and shouldn't be doing much of anything otherwise.

If you set up multiple search tiers for different types of storage, you might still need some squatter EVENTS for periodically repacking the search indexes between storage tiers. We haven't bothered with that as the performance has been great with a single tier with our typical loads. (See http://lists.tartarus.org/pipermail/xapian-discuss/2014-October/009112.html for some examples.)

We haven't noted mailbox locking due to squatter activity (even on startup) in our environment, but we're still running Cyrus IMAPD 3.8.5 (self-built RPMs) on AlmaLinux 8, so no idea whether the behaviour's changed in 3.10.x or 3.12.x

What kind of squatter logs are you seeing? This is pretty typical for us:

Aug 15 11:54:35 edm-cmbe01 cyrus/squatter[2716]: indexing mailbox user/[redacted1]@maei.ca... Aug 15 11:54:35 edm-cmbe01 cyrus/squatter[2716]: Xapian committed 3 updates in 0.353203 sec Aug 15 12:10:49 edm-cmbe01 cyrus/squatter[2716]: indexing mailbox user/[redacted2]/[email protected]... Aug 15 12:10:53 edm-cmbe01 cyrus/sync_client[2700]: Reprocessing sync log file /var/lib/imap/sync/squatter/log-run Aug 15 12:10:54 edm-cmbe01 cyrus/squatter[2716]: Xapian committed 2 updates in 4.963152 sec Aug 15 12:10:54 edm-cmbe01 cyrus/squatter[2716]: mappedfile: longlock /var/lib/imap/user/uuid/5/c/5cf27ed7-050e-44dd-924d-eefb6835df76/xapianactive.db for 5.0 seconds



--
Nels Lindquist
[email protected]


------------------------------------------
Cyrus: Info
Permalink: 
https://cyrus.topicbox.com/groups/info/T5a3c00cdf15ad8da-Md013a07964c79d42e9c7c413
Delivery options: https://cyrus.topicbox.com/groups/info/subscription

Reply via email to