I'm accessing an SQLite database from two processes simultaneously. If there's contention, one process will receive an SQLITE_BUSY; that's fine. However, occasionally a process will receive an SQLITE_IOERR with the extended result code SQLITE_IOERR_LOCK. This seems to occur if the other process is in the middle of committing (at least, that's the only time I've been able to observe it). Is this reasonable behavior? I was expecting to get SQLITE_BUSY and nothing else. (SQLite 3.7.0.1 on Solaris 10; database on local filesystem.)

Here's a log showing the serial actions of two processes, 9157 and 9096:

9157: opening cursor
9157: got cursor
9157: issuing begin immediate
9157: begun
9157: issuing delete
9157: deleted
9157: issuing commit
9096: opening cursor
9096: got cursor
9096: issuing begin immediate
9096: exception: IOError: disk I/O error, errcode=10, extended=3850
9096: closing cursor
9096: closed
9157: committed
9157: closing cursor
9157: closed

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to