[odb-users] odb::timeout on sqlite

Boris Kolpackov boris at codesynthesis.com
Tue May 24 19:54:56 EDT 2016


Hi Steve,

Hales, Steve <Steve.Hales at garmin.com> writes:

> My team is developing an iOS app using ODB 2.4.0 on a sqlite3 database.
> Our app has a number of background processes that access the database
> from multiple threads.

By "processes" you don't mean actual operating system processes, correct?
In other words, you have a single application (process) that runs multiple
threads.


> Occasionally, our app receives an odb::timeout exception. I looked in
> the ODB code and found that this exception might be thrown as a result
> of a SQLITE_LOCKED or SQLITE_BUSY error. It is my limited understanding
> that this may be caused by multithreaded access to the database. Can
> you provide any guidance on how to debug this problem?

Quoting the "Requirements" sections from libodb-sqlite's INSTALL file:

"If you plan to access an SQLite database from multiple threads, then
you will need SQLite version 3.5.0 or later built with the unlock notify
feature (SQLITE_ENABLE_UNLOCK_NOTIFY) enabled."

My guess would be the stock iOS SQLite is built without this feature.
Normally, in this sutuation, one would use a custom build of SQLite.
This earlier post has more details:

http://www.codesynthesis.com/pipermail/odb-users/2014-November/002239.html

Boris



More information about the odb-users mailing list