mirror of
https://github.com/facebook/rocksdb.git
synced 2024-11-30 22:41:48 +00:00
c57f914482
Summary: Since the hashes should not be persisted in output_validator nor mock_env. Also updated NPHash64 to use 64-bit seed, and comments. Pull Request resolved: https://github.com/facebook/rocksdb/pull/7632 Test Plan: make check, and new build setting that enables modification to NPHash64, to check for behavior depending on specific values. Added that setting to one of the CircleCI configurations. Reviewed By: jay-zhuang Differential Revision: D24833780 Pulled By: pdillinger fbshipit-source-id: 02a57652ccf1ac105fbca79e77875bb7bf7c071f
31 lines
1.2 KiB
C++
31 lines
1.2 KiB
C++
// Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under both the GPLv2 (found in the
|
|
// COPYING file in the root directory) and Apache 2.0 License
|
|
// (found in the LICENSE.Apache file in the root directory).
|
|
//
|
|
#include "db/output_validator.h"
|
|
|
|
namespace ROCKSDB_NAMESPACE {
|
|
Status OutputValidator::Add(const Slice& key, const Slice& value) {
|
|
if (enable_hash_) {
|
|
// Generate a rolling 64-bit hash of the key and values
|
|
paranoid_hash_ = NPHash64(key.data(), key.size(), paranoid_hash_);
|
|
paranoid_hash_ = NPHash64(value.data(), value.size(), paranoid_hash_);
|
|
}
|
|
if (enable_order_check_) {
|
|
TEST_SYNC_POINT_CALLBACK("OutputValidator::Add:order_check",
|
|
/*arg=*/nullptr);
|
|
if (key.size() < kNumInternalBytes) {
|
|
return Status::Corruption(
|
|
"Compaction tries to write a key without internal bytes.");
|
|
}
|
|
// prev_key_ starts with empty.
|
|
if (!prev_key_.empty() && icmp_.Compare(key, prev_key_) < 0) {
|
|
return Status::Corruption("Compaction sees out-of-order keys.");
|
|
}
|
|
prev_key_.assign(key.data(), key.size());
|
|
}
|
|
return Status::OK();
|
|
}
|
|
} // namespace ROCKSDB_NAMESPACE
|