[odb-users] odb::timeout on sqlite
boris at codesynthesis.com
Tue May 24 19:54:56 EDT 2016
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
> 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:
More information about the odb-users