diff options
author | Robert Newson <rnewson@apache.org> | 2023-05-06 14:36:38 +0100 |
---|---|---|
committer | Robert Newson <rnewson@apache.org> | 2023-05-06 14:36:57 +0100 |
commit | f16953b26414f915b0d400f62cde1dfdd6f3c50c (patch) | |
tree | 253dce1c2b7af50257182405e5690c49ec199ae7 | |
parent | 2663bdc6bf3d7c512d6296026c11ef9d9f3c9465 (diff) | |
download | couchdb-f16953b26414f915b0d400f62cde1dfdd6f3c50c.tar.gz |
make legacy checksums a compile-time option
-rw-r--r-- | src/couch/src/couch_file.erl | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/couch/src/couch_file.erl b/src/couch/src/couch_file.erl index 315f3a795..0a9aaf49c 100644 --- a/src/couch/src/couch_file.erl +++ b/src/couch/src/couch_file.erl @@ -864,11 +864,11 @@ verify_checksum(Fd, Pos, IoList, Checksum) -> verify_checksum(Data, ExpectedChecksum) -> Bin = iolist_to_binary(Data), - case ExpectedChecksum == exxhash:xxhash128(Bin) of + case ExpectedChecksum == checksum(Bin) of true -> true; false -> - case ExpectedChecksum == couch_hash:md5_hash(Data) of + case ExpectedChecksum == legacy_checksum(Data) of true -> couch_stats:increment_counter([couch_file, old_checksums]), true; @@ -877,6 +877,18 @@ verify_checksum(Data, ExpectedChecksum) -> end end. +checksum(Bin) when is_binary(Bin) -> + exxhash:xxhash128(Bin). + +-ifdef(NO_MD5). +legacy_checksum(Bin) when is_binary(Bin) -> + true. +-else. +legacy_checksum(Bin) when is_binary(Bin) -> + couch_hash:md5_hash(Bin). +-endif. + + report_checksum_error(Fd, Pos) -> couch_log:emergency("File corruption in ~p at position ~B", [Fd, Pos]), exit({file_corruption, <<"file corruption">>}). |