Description
Even though the Oak's segment header format defines a version, that version is not checked when running Oak. In effect this means current Oak versions pretend to be infinitely forward compatible.
To prevent older versions of Oak to run with incompatible, newer storage formats we need to devise a way for Oak to fail fast in that scenario.
One thing we could do to introduce versions checking retroactively is to redefine the segment header format from:
+--------+--------+--------+--------+--------+--------+--------+--------+ | magic bytes: "0aK\n" in ASCII |version |idcount |rootcount | +--------+--------+--------+--------+--------+--------+--------+--------+
to:
+--------+--------+--------+--------+--------+--------+--------+--------+ | magic bytes: "0aK" ASCII |version |reserved|idcount |rootcount | +--------+--------+--------+--------+--------+--------+--------+--------+
where version would be 10 for the current storage format and 11 for the next storage format.
Attachments
Issue Links
- blocks
-
OAK-2294 Corrupt repository after concurrent version operations
-
- Closed
-