We're upgrading an app from 2.8.11 to 3.0.7 and are seeing fairly
frequent "database is locked" errors that would be explained if this
were not the case. It seems to be happening when two threads start a
transaction; one does its first INSERT ok but the second one gets a
SQLITE_BUSY error when it tries to INSERT.

Our busy timeout is set high (several minutes) so it's pretty obvious
that the timeout handler doesn't seem to be kicking in. What I would
like is for the second thread to block until the first one commits i.e.
2.8.11 behaviour.

I don't know the SQLite code so well but given that the busy timeout
handler is invoked at the pager level, maybe this is why (i.e. because
no pages are being changed, the handler is not being called).

Reply via email to