Data::Dedup::Engine calls digest functions on objects, in order to compute blocking keys to help it detect duplicates. (Look for lines referring to $blockingsub.) It is possible that one of these functions might fail and call die. For example, if we are deduplicating files, the engine might get to computing the very last, longest, fullest digest on a particular file, and then encounter a read error because of a hardware problem.
As the code is now written, this will result in the entire process coming to a screaming halt, which is a reasonable response to that scenario. However, it might be even better instead to warn, remove that file from the block (and maybe the block itself if it is now empty, and the key-slot that referred to that block, and the keystore if there are no other keys, and...)
Data::Dedup::Engine calls digest functions on objects, in order to compute blocking keys to help it detect duplicates. (Look for lines referring to
$blockingsub.) It is possible that one of these functions might fail and calldie. For example, if we are deduplicating files, the engine might get to computing the very last, longest, fullest digest on a particular file, and then encounter a read error because of a hardware problem.As the code is now written, this will result in the entire process coming to a screaming halt, which is a reasonable response to that scenario. However, it might be even better instead to
warn, remove that file from the block (and maybe the block itself if it is now empty, and the key-slot that referred to that block, and the keystore if there are no other keys, and...)