在mapdb中使用`checksumHeaderBypass`的成本是多少?

时间:2018-06-06 14:41:05

标签: java consistency mapdb

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

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

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

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

  

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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