Ryan Curtin writes:
However, no messages are actually relayed to subscribers. I spent a while digging into logs and found that every message sent to the list results in an error like this in /var/log/mailman3/mailman.log:
Oct 02 17:01:26 2023 (2957556) Uncaught runner exception: (raised as a result of Query-invoked autoflush; consider using a session.no_autoflush block if this flush is occurring prematurely) (sqlite3.OperationalError) database is locked
This is the whole problem. Here's a list of possibilities: https://bobbyhadz.com/blog/operational-error-database-is-locked
My best guess is that you have multiple Mailman instances running, but it could also be that you've got the database open in a console tool or something like that. I don't think it's timeouts nor related to the autoflush -- that should work, it does for lots of people.
If nothing else works you can reboot the whole system, and that should take care of it.
We don't recommend using sqlite in production, but you know your needs. However, this might be a good moment to switch to a database server like PostgreSQL or MySQL. In my experience, PostgreSQL just works. MySQL has one nit, namely it assumes that UTF-8 is at most 3 bytes, but emoji and a few other special characters in common use, as well as characters required by some less common languages, need 4 bytes. So make sure that the Mailman database are configured for utf8mbcs4 (or something like that, you'll know it when you see it in the docs).