| 1234567891011121314151617181920212223242526272829 |
- // 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"
- #include "test_util/sync_point.h"
- #include "util/hash.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 (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
|