Hi Bron, the first rough version of the lock validator is running and already has some interesting results:
The cyrus flat "db" backend doesn't do proper locking. 1. When it opens a file in myopen(), the file is not locked. This is a common pattern in cyrus code and harmless. myfetch() acquires an EXCLUSIVE lock when called with a tid pointer only. Funnily the code mentions in multiple places it should release the read-only lock and even calls lock_unlock(). No lock_shared() in the code at all. 2. When storing data, the xxx.NEW file is not locked. Or did I miss anything? I'll try to fix this and also introduce a db->locktype variable to keep track of the current locking state if you don't mind. Cheers, Thomas