0

我们正在使用 mapdb 存储在长时间运行的进程中访问过的文件列表,这样如果我们需要中止或进程崩溃,我们可以从中断的地方继续。

我们希望防止崩溃破坏我们的 mapdb 文件存储。

所以我们正在使用我们定期将更改提交到磁盘的事务。

但后来我注意到一些有趣的事情,如果我们在某些时候崩溃我们的进程,我们仍然会收到错误

标头校验和损坏。商店未正确关闭,可能已损坏。用于DBMaker.checksumHeaderBypass()恢复您的数据。将来使用干净关闭或启用事务来保护商店。

但确实设置checksumHeaderBypass会使错误消失。checksumHeaderBypass使用此设置的成本是多少?

4

2 回答 2

1

如果您在 springboot 应用程序中使用mapdbfrom @postcontruct,则会引发此错误。避免mapdb在应用程序启动之前进行初始化(不要从 初始化@postconstruct)。

于 2020-01-09T13:23:55.650 回答
0

这里没有任何流量,因为在 sof 上有很多 mapdb 人。所以我会发布我认为最好的答案

基本上,如果您允许校验和标头绕过,您可以加载 mapdb,但它可能在 mapdb 中有无效条目。因为如果校验和不匹配,则表明内容不是应有的内容。所以你可能会在 mapdb 中有一些错误的数据。根据您提交存储的频率,可能会导致大量或少量损坏的数据。

于 2018-07-02T14:19:12.247 回答