Hello.

We have an embedded system out in the wild with a DB in WALL mode that we set a 
max_pages value on to keep its size constrained. The system is more or less a 
data logger. We run a "purger" thread at intervals to DELETE records when it 
discovers free space is running below a threshold. 

The purger starts a transaction, does a query to figure out the time range to 
delete, and then does a delete with that time range. (I realize now I could 
combine the DELETE and SELECT into one statement) and then ends the transaction.

Thing is, the delete sometimes (very rarely) fails with a 13 "disk or database 
full" error. I assume because the purger is late to the party and it needs 
pages in the WAL to be able to rollback if necessary.

I figure I can run the purger more often, or raise my "must keep free" 
threshold, but it is hard to know the rate at which data will be generated and 
it can be really "bursty" -- so such fixes are a bit hand-wavy and unsatisfying.

So, I thought I'd check with you folks and see if: 

1. The operational assumption (delete need pages) I've asserted here is 
correct, and
2. There is some trick I can use to force a delete of records when the DB pages 
are already maxed out -- esp. if I don't need to roll this back.

This is sqlite 3.10.1.

Thanks

-- Ward

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

Reply via email to