see on GitHub

Recovering from Voron Errors


Voron errors described in this article are indicators that something had horribly gone wrong.
If such errors happen, they need to be reported as soon as possible to RavenDB Support.

Symptoms

  • RavenDB info level logs will contain the following exceptions:
    • VoronUnrecoverableErrorException: Index points to a non leaf page
    • VoronUnrecoverableErrorException: Was unable to retrieve the correct node. Data corruption possible
    • VoronUnrecoverableErrorException: Error syncing the data file. The last sync tx is...

Possible Causes

  • Such exceptions are caused by the corruption of a Voron data file, which could occur due to a few reasons:

RavenDB Hardware And OS Requirements

  • A filesystem and hard-drive backing up a RavenDB server should have the following properties:
    • support for fsync
    • support for write-through on windows and O_DIRECT on Linux based OS.

Read more about fsync across platforms here

Resolution

For the best results, simply restore a new database from a backup.
For more information, read this article about backup configuration.

If there is no recent/relevant backup available, it is possible to use the Voron Recovery Tool.
This tool can be used to recover intact data from the corrupted file and import it to a newly created database.

If the corruption has affected an index, it should simply be reset in order to restore normal functionality.

Note

If the corruption is caused by a hardware failure, identify and replace the faulty disk.