Какова стоимость использования `checkumHeaderBypass` в mapdb?

Мы используем mapdb для хранения списка файлов, которые были посещены во время длительного процесса, чтобы, если нам нужно прервать работу или произошел сбой процесса, мы могли продолжить с того места, где остановились.

мы хотим защитить от сбоев, которые портят наше хранилище файлов mapdb.

поэтому мы используем транзакции, в которых мы периодически фиксируем изменения на диске.

но потом я заметил кое-что интересное, что, если в определенный момент мы потерпим крах, мы все равно получим ошибку

Контрольная сумма заголовка повреждена. Магазин был закрыт неправильно и может быть поврежден. использование DBMaker.checksumHeaderBypass() восстановить ваши данные. Используйте чистое отключение или включите транзакции, чтобы защитить магазин в будущем.

Но на самом деле накрывает checksumHeaderBypass делает ошибку исчезнуть Какова стоимость использования этого checksumHeaderBypass установка?

1 ответ

Решение

Здесь нет трафика, потому что на софе замечено много людей из mapdb. Так что я выложу ответ, который я считаю лучшим

По сути, если вы разрешите обход заголовка контрольной суммы, вы можете загрузить карту mapdb, но она может содержать недопустимые записи в карте mapdb. потому что, если контрольная сумма не совпадает, это означает, что содержимое не является тем, чем должно быть. так что у вас, скорее всего, будут плохие данные в mapdb. в зависимости от того, как часто вы фиксируете данные в хранилище, это может привести к большому или небольшому количеству поврежденных данных.

Если вы используете mapdb от @postcontructв приложении springboot выдает эту ошибку. Избегайте инициализацииmapdb до запуска приложения (не инициализировать с @postconstruct).

Другие вопросы по тегам