[odb-users] Query Abort Error

Boris Kolpackov boris at codesynthesis.com
Mon Mar 18 08:31:38 EDT 2013


Hi Eric,

Ok, I've added the odb::sqlite::forced_rollback recoverable exception.
Here is the relevant part from the updated manual:

"In SQLite 3.7.11 or later, if one of the connections participating in the
shared cache rolls back a transaction, then ongoing transactions on other
connections in the shared cache may also be forced to rollback. An example of
such behavior would be a read-only transaction that is forced to rollback
while iterating over the query result because another transaction on another
connection was rolled back.

If a transaction is being forced to rollback by SQLite, then ODB throws
odb::sqlite::forced_rollback (Section 16.4, "SQLite Exceptions") which is a
recoverable exception (3.7 Error Handling and Recovery). As a result, the
recommended way to handle this exception is to re-execute the affected
transaction."

I also tried to reproduce this behavior using the 'threads' test in the
ODB test suite but couldn't. While the 'threads' test doesn't abort any
transactions explicitly, it can cause deadlocks which then will lead to
transaction aborts. Is your application aborting transactions explicitly
or does this also happen because of the deadlocks?

I packaged the 2.2.1 bugfix. Can you give it a try and let me know if 
everything works for you:

http://www.codesynthesis.com/~boris/tmp/odb/libodb-sqlite-2.2.1.tar.gz

Once you confirm that everything is ok, I will make the bugfix release
official.

Boris



More information about the odb-users mailing list