On 05/06/2017 02:13 PM, Philip Warner wrote:
I have an Android app that does work in the database every five minutes (at least). Every few days I am seeing:

org.sqlite.database.sqlite.SQLiteDiskIOException: disk I/O error (code 1034)

Code 1034 is SQLITE_IOERR_FSYNC.

This is using a custom build of the Sqlite bindings but I should note that this also occurred under the vanilla build as well as in SqlCipher.

This leads me to believe it's a problem with the underlying code (or my use of it).

The app has multiple threads. It's always a background thread that throws this error.

I believe that the specific Sqlite3 api being called in sqlite3_step, but can not be sure. The android stack trace is:

Caused by: org.sqlite.database.sqlite.SQLiteDiskIOException: disk I/O error (code 1034) at org.sqlite.database.sqlite.SQLiteConnection.nativeExecuteForChangedRowCount(Native Method) at org.sqlite.database.sqlite.SQLiteConnection.executeForChangedRowCount(SQLiteConnection.java:776) at org.sqlite.database.sqlite.SQLiteSession.executeForChangedRowCount(SQLiteSession.java:759) at org.sqlite.database.sqlite.SQLiteStatement.executeUpdateDelete(SQLiteStatement.java:68) at net.philipwarner.platforms.android <http://net.philipwarner.platforms.android>.sqlitenative.NativeStatement.execute(NativeStatement.java:74)

Any comments or thoughts on what this might mean? Fsync in multiple threads? Fysnc while doing IO elsewhere?

Is the storage media very close to full?

If you are able to enable sqlite3_log() output (see docs for SQLITE_CONFIG_LOG) it will log a message identifying the file that the fsync() failed on. And the output of strerror().

Dan.



_______________________________________________
sqlite-users mailing list
[email protected]
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to