cyrusdb_flat and locking

Thomas Jarosch thomas.jarosch at intra2net.com
Tue Jul 21 17:12:34 EDT 2015


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


More information about the Cyrus-devel mailing list