Feature #1496
Integrate extended recovery features
Status: | Resolved | Start date: | 05/10/2013 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assignee: | J. Moringen | % Done: | 100% | |
Category: | TIDELog Backend | |||
Target version: | Robotics Service Bus - rsb-0.9 |
Associated revisions
Added test for recovering from missing index in CMakeLists.txt
refs #1496
- CMakeLists.txt: store TIDELog files into new variables
{VALID,RECOVERABLE}_TIDE_FILES; use these variables in test to
decide where error recovery is necessary; adapted to renamed files - test/data/*/*.tide: renamed files; added prefix "valid-" for valid
files and prefix "recoverable-" for files with recoverable errors - test/data/0.9/recoverable-missing-index.tide: new file; test data
for recovering from missing index
Extended error recovery in TIDELog backend
refs #1496
- src/backend/tidelog/repair.lisp: new file; contains functions for
rebuilding missing or damaged indices - src/backend/tidelog/util.lisp (read-chunk-of-length): allow
continuing with incomplete block via `continue' restart after short
read - src/backend/tidelog/generator.lisp (type-spec->deserializer):
generate a `continue' with allow continuing without reading a
complete sequence of records - src/backend/tidelog/io.lisp (scan stream eql :tide): allow ignore
the remainder of a stream's content via a `continue' restart
(unpack stream eql :block-header): signal error with more
descriptive report
(unpack stream eql :block): check whether the block is within the
bounds of the file; allow trying to read it anyway via `continue'
restart - src/backend/tidelog/file.lisp (shared-initialize :after file): when
chunks are read but no index, signal an error and allow to continue
by regenerating indices - cl-rsbag.asd (system cl-rsbag-tidelog): added file
src/backend/tidelog/repair.lisp
History
#1 Updated by J. Moringen almost 11 years ago
- % Done changed from 70 to 90
#2 Updated by J. Moringen over 10 years ago
- Status changed from In Progress to Resolved
- % Done changed from 90 to 100
Recovery from different kinds of problems, most importantly missing indices and incomplete chunks, is implemented and tested automatically.