Repairing Logs

If a log has become unreadable due to missing or corrupt data (for example, due to a drive failure, a partial offload, or some other type of corruption), the system will refuse to read that log.

You can use the “repair” functionality to generate an amendment of the original log with the corrupt data removed, allowing you to at least read through the available data.

This functionality is provided through the ark::logging::repair_log API. You can call this on a manifest, and an amendment will be generated (in memory) that allows you to play back the broken manifest.

More commonly, you can use the ark-logtool command --repair to repair a log. For example:

~/ark$ ./build/ark-logtool ~/broken_logs/manifests/d2a873f7-4fa6-4733-a5c0-fc0c06039bb3 --repair
Error while reading split file '02af2f18-ab1e-4e26-adb5-61245a71300a': Failed to open the split file at 02af2f18-ab1e-4e26-adb5-61245a71300a: Failed to open the file at /home/mistake/outside_logs/broken/d2a8/splits/02af2f18-ab1e-4e26-adb5-61245a71300a: No such file or directory
Error while reading split file '7fe46db2-847d-455b-8bbb-3b0a39a8d3ce': Failed to open the split file at 7fe46db2-847d-455b-8bbb-3b0a39a8d3ce: Failed to open the file at /home/mistake/outside_logs/broken/d2a8/splits/7fe46db2-847d-455b-8bbb-3b0a39a8d3ce: No such file or directory
Removed 2 split file(s) from the manifest.
Wrote new manifest out with identifier '962f6022-d8a9-4131-9539-9b4aecbf37f9'.

You can now look at the new manifest in ~/broken_logs/manifests/962f6022-d8a9-4131-9539-9b4aecbf37f9 and you should be able to read through the entire log (albeit with missing data).