Philip Martin <philip.mar...@wandisco.com> writes:

> Stefan Fuhrmann <stefan.fuhrm...@wandisco.com> writes:
>
>> But we do write the database strictly in revision order.
>> So, if we could simply read the latest record once upon
>> opening the DB. If that refers to a future revision, read
>> "current" and compare. If the DB it still "in the future",
>> abort txn, i.e. prevent any future commit until rep-cache.db
>> gets deleted by the admin.
>
> That might work.  The rep-cache for a new revision is not written
> strictly in revision order but is written after updating HEAD.  So such
> a check would not be as strong as "highest revision" but would be a
> useful extra check if we can implement it efficiently it without a table
> scan.  Is sqlite3_last_insert_rowid() the function we want?

Bert pointed out that is the wrong function and there isn't really a
suitable function.  So to do this check we need something like
Julian'ssuggestion: a one row table containing the most recent revision
added to the rep-cache that gets updated with each write.  It doesn't
catch every possible failure but it does catch some.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to