我们使用mapdb来存储在长时间运行的过程中访问过的文件列表,这样如果我们需要中止或者如果进程崩溃,我们就可以从中断的地方恢复。
我们希望防止崩溃破坏我们的mapdb文件存储。
所以我们正在使用我们定期提交磁盘更改的事务。
然后我注意到一些有趣的事情,如果我们在某些时候崩溃了我们的过程,我们仍然会得到错误
标头校验和已损坏。存储未正确关闭,可能已损坏。使用
DBMaker.checksumHeaderBypass()
恢复您的数据。使用干净关闭或启用事务以保护将来的商店。
但确实设置checksumHeaderBypass
会使错误消失。使用此checksumHeaderBypass
设置的成本是多少?
答案 0 :(得分:1)
如果您在springboot应用程序中使用mapdb
中的@postcontruct
,则会引发此错误。避免在应用启动之前初始化mapdb
(不要从@postconstruct
初始化)。
答案 1 :(得分:0)
这里没有任何流量,因为在SOF上有很多mapdb人。所以我会发布我认为是最好的答案
基本上,如果允许绕过校验和标头,则可以加载mapdb,但是mapdb中可能包含无效的条目。因为如果校验和不匹配,则表明内容不是应有的内容。因此您的mapdb中可能会有一些不良数据。取决于您提交存储的频率,可能会导致大量或少量数据损坏。