[Xapian-tickets] [Xapian] #708: Implemnt database fixing for glass
Xapian
nobody at xapian.org
Wed Mar 16 04:12:42 GMT 2016
#708: Implemnt database fixing for glass
----------------------------------+------------------------
Reporter: olly | Owner: olly
Type: defect | Status: new
Priority: normal | Milestone: 1.4.x
Component: Backend-Glass | Version: git master
Severity: normal | Keywords:
Blocked By: | Blocking:
Operating System: All |
----------------------------------+------------------------
For chert, we have the `DBCHECK_FIX` mode for database checking (which you
can activate from `xapian-check` by passing `F` in the flags) which will
attempt to fix some problems:
* Regenerate `iamchert` if not valid
* Regenerate `.baseA`/`.baseB` files from `.DB` files
While glass should be less susceptible to small, frequently-replaced files
getting truncated or otherwise corrupted (because it no longer has the
`.baseA` or `.baseB` files, we ought to have the equivalent support for
glass - that's probably means regenerating `iamglass` if not valid.
The complex part of this is fixing up the freelists, which are now stored
in unused blocks in the database. That requires writing to the table
file, which is potentially unwise if there's been damage, as it could make
things worse. The simplest approach would be to set up empty freelists
(which would potentially mean lost space that couldn't be reclaimed in
normal use). Then you'd have a database which could read and compacted.
If we implement regenerating missing freelists, that could easily be
triggered if the freelists don't match the blocks in use.
--
Ticket URL: <https://trac.xapian.org/ticket/708>
Xapian <//xapian.org/>
Xapian
More information about the Xapian-tickets
mailing list