Just some more details to clarify the issue: If I do a `BEGIN IMMEDIATE` on one connection, and then a `PRGAMA journal_mode` on another, BUSY is not returned (as expected).
But if I have around 7 connections contending for a write lock via `BEGIN IMMEDIATE`, and a different connection runs `PRGAMA journal_mode` (with no `BEGIN`), it returns BUSY (not expected). I also occasionally get a "SQLITE_BUSY_RECOVERY", but all API usages are using finalize/close to give back any sqlite API resources. *Questions:* A. In which cases will BUSY be returned for read only queries when in WAL mode? - I assumed this was never, as WAL mode allows many concurrent readers. - How can I find out exceptions to this rule? B. Is there any method for determining lock transitions for connections? - Is there an API? - Would it be possible to use dtrace to instrument SQLite to detect lock transitions? - Where should I be looking? Id really appreciate any pointers, Thanks. On Wed, Aug 28, 2019 at 9:46 PM test user <example.com.use...@gmail.com> wrote: > Hello, > > Im getting this message in the log: > > `SQLITE_BUSY, database is locked in "PRAGMA journal_mode"` > > I get this response when running the query `PRAGMA journal_mode`. > > The file is in journal_mode=WAL. > > Another connection holds a write transaction. > > Seeing as `PRAGMA journal_mode` is just a read, why would this return BUSY? > > I assumed that in WAL mode you can have many reads and a single writer at > the same time? > > Thanks > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users