On 29 Oct 2016, at 10:42pm, Yuri <y...@rawbw.com> wrote:

> On a busy system one write operation might fail with disk-full, while the 
> rest are fine, because other processes will write and delete data 
> continuously. This is what I suspect: that SQLite failed to handle one or a 
> few such failures.

I believe SQLite handled the failure correctly.  It returned SQLITE_FULL and it 
did not corrupt its database.  SQLITE_FULL is documented as an error code, not 
a warning, in section 1 of

<https://www.sqlite.org/rescode.html>

From what you describe, your application didn't handle this error correctly, it 
ignored it.  At minimum the programmer needs to consider what to do with the 
data it was trying to write, given that it couldn't write it to the database.  
Even if that data isn't important, SQLite documentation has recommendations:

<https://www.sqlite.org/lang_transaction.html>

"It is recommended that applications respond to the errors listed above by 
explicitly issuing a ROLLBACK command. If the transaction has already been 
rolled back automatically by the error response, then the ROLLBACK command will 
fail with an error, but no harm is caused by this."

And of course, if the ROLLBACK command itself fails, the program needs to 
handle that.  Since it means that recovery from the error condition failed.

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

Reply via email to