Sqlite cache needs updating
This should cause it to throw during creation, which should cause it to fall over to no persistence.This is how things worked in the esent days as well.(this is important since 8 out of 10 db will be in corrupted state, according to data I saw from esent, and if it can't recover it needs to rebuild from scratch and that is basically same as not having persisted storage) As far as I understand how SQLite works, locking mode is set for a connection, but exclusive mode never unlocks the database until this connection is closed (as SQLite docs say: "When the locking-mode is set to EXCLUSIVE, the database connection never releases file-locks.The first time the database is read in EXCLUSIVE mode, a shared lock is obtained and held.You are advised to avoid using SQLite on a network filesystem in the first place, since performance will be slow.
Concurrent writes should be faster (because of append-only nature), reads are same or single-digit-percent slower according to documentation.
Post haste :) Once that is done, evaluate if changing journal mode is desirable.
If so, figure out a plan to put it in without causing any sort of destabilizing issues (like corrupted data).
As mentioned above, I would stick with the DB approach that still provides strong consistency and integrity, and I would see what could be tweaked within those boundaries to make it not a bottleneck.
@sharwell I would also note, that the original cause of "slowness" described was precisely because SQLite tested a file to exist on each operation.
We have received reports of implementations of both Windows network filesystems and NFS in which locking was subtly broken.