@nxtedition/rocksdb 8.1.2 → 8.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +0 -9
- package/deps/rocksdb/rocksdb/Makefile +1 -13
- package/deps/rocksdb/rocksdb/TARGETS +0 -4
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +0 -11
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -13
- package/deps/rocksdb/rocksdb/db/builder.h +1 -2
- package/deps/rocksdb/rocksdb/db/c.cc +0 -15
- package/deps/rocksdb/rocksdb/db/c_test.c +0 -3
- package/deps/rocksdb/rocksdb/db/column_family.cc +5 -11
- package/deps/rocksdb/rocksdb/db/column_family.h +0 -20
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +37 -31
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +1 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +26 -104
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +0 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +18 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +16 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +6 -19
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +52 -81
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +2 -8
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +0 -8
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +138 -266
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -86
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +123 -897
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -31
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +9 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +28 -121
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +0 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +0 -10
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +4 -325
- package/deps/rocksdb/rocksdb/db/db_test.cc +0 -3
- package/deps/rocksdb/rocksdb/db/db_test2.cc +8 -233
- package/deps/rocksdb/rocksdb/db/db_test_util.h +0 -3
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +0 -129
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +0 -21
- package/deps/rocksdb/rocksdb/db/dbformat.cc +0 -25
- package/deps/rocksdb/rocksdb/db/dbformat.h +0 -2
- package/deps/rocksdb/rocksdb/db/experimental.cc +2 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +0 -3
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +13 -92
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +1 -38
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +110 -14
- package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -6
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +0 -4
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +53 -56
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +4 -3
- package/deps/rocksdb/rocksdb/db/memtable.cc +1 -1
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +0 -4
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +22 -65
- package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -54
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +1 -3
- package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -90
- package/deps/rocksdb/rocksdb/db/version_builder.h +0 -20
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +93 -218
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -27
- package/deps/rocksdb/rocksdb/db/version_edit.h +9 -33
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +6 -13
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +6 -17
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +17 -19
- package/deps/rocksdb/rocksdb/db/version_set.cc +26 -166
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -32
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +31 -65
- package/deps/rocksdb/rocksdb/db/write_thread.cc +2 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +32 -31
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +1 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +6 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +4 -11
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +15 -16
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +1 -13
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +75 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +0 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +1 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +0 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +9 -69
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/arena.cc +87 -23
- package/deps/rocksdb/rocksdb/memory/arena.h +31 -25
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +0 -90
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
- package/deps/rocksdb/rocksdb/src.mk +0 -2
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +2 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/format.cc +20 -24
- package/deps/rocksdb/rocksdb/table/format.h +2 -5
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +105 -54
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +0 -80
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +6 -7
- package/deps/rocksdb/rocksdb/test_util/testutil.h +0 -10
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/status.cc +0 -7
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +74 -250
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -199
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +0 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +0 -39
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +0 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -59
- package/deps/rocksdb/rocksdb.gyp +0 -3
- package/index.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/port/mmap.cc +0 -98
- package/deps/rocksdb/rocksdb/port/mmap.h +0 -70
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +0 -142
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +0 -241
|
@@ -14,7 +14,6 @@
|
|
|
14
14
|
|
|
15
15
|
#include "db/db_test_util.h"
|
|
16
16
|
#include "db/read_callback.h"
|
|
17
|
-
#include "db/version_edit.h"
|
|
18
17
|
#include "options/options_helper.h"
|
|
19
18
|
#include "port/port.h"
|
|
20
19
|
#include "port/stack_trace.h"
|
|
@@ -34,18 +33,6 @@ namespace ROCKSDB_NAMESPACE {
|
|
|
34
33
|
class DBTest2 : public DBTestBase {
|
|
35
34
|
public:
|
|
36
35
|
DBTest2() : DBTestBase("db_test2", /*env_do_fsync=*/true) {}
|
|
37
|
-
std::vector<FileMetaData*> GetLevelFileMetadatas(int level, int cf = 0) {
|
|
38
|
-
VersionSet* const versions = dbfull()->GetVersionSet();
|
|
39
|
-
assert(versions);
|
|
40
|
-
ColumnFamilyData* const cfd =
|
|
41
|
-
versions->GetColumnFamilySet()->GetColumnFamily(cf);
|
|
42
|
-
assert(cfd);
|
|
43
|
-
Version* const current = cfd->current();
|
|
44
|
-
assert(current);
|
|
45
|
-
VersionStorageInfo* const storage_info = current->storage_info();
|
|
46
|
-
assert(storage_info);
|
|
47
|
-
return storage_info->LevelFiles(level);
|
|
48
|
-
}
|
|
49
36
|
};
|
|
50
37
|
|
|
51
38
|
#ifndef ROCKSDB_LITE
|
|
@@ -4536,7 +4523,7 @@ TEST_F(DBTest2, TraceAndReplay) {
|
|
|
4536
4523
|
ASSERT_OK(replayer->Prepare());
|
|
4537
4524
|
// Replay using 1 thread, 1x speed.
|
|
4538
4525
|
ASSERT_OK(replayer->Replay(ReplayOptions(1, 1.0), res_cb));
|
|
4539
|
-
|
|
4526
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4540
4527
|
ASSERT_EQ(res_handler.GetNumWrites(), 8);
|
|
4541
4528
|
ASSERT_EQ(res_handler.GetNumGets(), 3);
|
|
4542
4529
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 2);
|
|
@@ -4562,7 +4549,7 @@ TEST_F(DBTest2, TraceAndReplay) {
|
|
|
4562
4549
|
// Re-replay using 2 threads, 2x speed.
|
|
4563
4550
|
ASSERT_OK(replayer->Prepare());
|
|
4564
4551
|
ASSERT_OK(replayer->Replay(ReplayOptions(2, 2.0), res_cb));
|
|
4565
|
-
|
|
4552
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4566
4553
|
ASSERT_EQ(res_handler.GetNumWrites(), 8);
|
|
4567
4554
|
ASSERT_EQ(res_handler.GetNumGets(), 3);
|
|
4568
4555
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 2);
|
|
@@ -4572,7 +4559,7 @@ TEST_F(DBTest2, TraceAndReplay) {
|
|
|
4572
4559
|
// Re-replay using 2 threads, 1/2 speed.
|
|
4573
4560
|
ASSERT_OK(replayer->Prepare());
|
|
4574
4561
|
ASSERT_OK(replayer->Replay(ReplayOptions(2, 0.5), res_cb));
|
|
4575
|
-
|
|
4562
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4576
4563
|
ASSERT_EQ(res_handler.GetNumWrites(), 8);
|
|
4577
4564
|
ASSERT_EQ(res_handler.GetNumGets(), 3);
|
|
4578
4565
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 2);
|
|
@@ -4770,7 +4757,7 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
4770
4757
|
// end, or Prepare() was not called.
|
|
4771
4758
|
ASSERT_TRUE(s.IsIncomplete());
|
|
4772
4759
|
ASSERT_TRUE(replayer->Next(nullptr).IsIncomplete());
|
|
4773
|
-
|
|
4760
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4774
4761
|
ASSERT_EQ(res_handler.GetNumWrites(), 9);
|
|
4775
4762
|
ASSERT_EQ(res_handler.GetNumGets(), 3);
|
|
4776
4763
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 8);
|
|
@@ -4804,7 +4791,7 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
4804
4791
|
ASSERT_EQ("write1", value);
|
|
4805
4792
|
ASSERT_OK(db2->Get(ro, handles[0], "trace-record-write2", &value));
|
|
4806
4793
|
ASSERT_EQ("write2", value);
|
|
4807
|
-
|
|
4794
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4808
4795
|
ASSERT_EQ(res_handler.GetNumWrites(), 1);
|
|
4809
4796
|
ASSERT_EQ(res_handler.GetNumGets(), 0);
|
|
4810
4797
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 0);
|
|
@@ -4829,7 +4816,7 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
4829
4816
|
record.reset(new GetQueryTraceRecord(invalid_cf_id, "whatever", fake_ts++));
|
|
4830
4817
|
ASSERT_TRUE(replayer->Execute(record, &result).IsCorruption());
|
|
4831
4818
|
ASSERT_TRUE(result == nullptr);
|
|
4832
|
-
|
|
4819
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4833
4820
|
ASSERT_EQ(res_handler.GetNumWrites(), 0);
|
|
4834
4821
|
ASSERT_EQ(res_handler.GetNumGets(), 2);
|
|
4835
4822
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 0);
|
|
@@ -4858,7 +4845,7 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
4858
4845
|
ASSERT_TRUE(replayer->Execute(record, &result).IsCorruption());
|
|
4859
4846
|
ASSERT_TRUE(result == nullptr);
|
|
4860
4847
|
}
|
|
4861
|
-
|
|
4848
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4862
4849
|
ASSERT_EQ(res_handler.GetNumWrites(), 0);
|
|
4863
4850
|
ASSERT_EQ(res_handler.GetNumGets(), 0);
|
|
4864
4851
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 4); // Seek x 2 in two iterations
|
|
@@ -4913,7 +4900,7 @@ TEST_F(DBTest2, TraceAndManualReplay) {
|
|
|
4913
4900
|
std::vector<std::string>({"a"}), fake_ts++));
|
|
4914
4901
|
ASSERT_TRUE(replayer->Execute(record, &result).IsInvalidArgument());
|
|
4915
4902
|
ASSERT_TRUE(result == nullptr);
|
|
4916
|
-
|
|
4903
|
+
ASSERT_GT(res_handler.GetAvgLatency(), 0.0);
|
|
4917
4904
|
ASSERT_EQ(res_handler.GetNumWrites(), 0);
|
|
4918
4905
|
ASSERT_EQ(res_handler.GetNumGets(), 0);
|
|
4919
4906
|
ASSERT_EQ(res_handler.GetNumIterSeeks(), 0);
|
|
@@ -7338,218 +7325,6 @@ TEST_F(DBTest2, PointInTimeRecoveryWithSyncFailureInCFCreation) {
|
|
|
7338
7325
|
ReopenWithColumnFamilies({"default", "test1", "test2"}, options);
|
|
7339
7326
|
}
|
|
7340
7327
|
|
|
7341
|
-
#ifndef ROCKSDB_LITE
|
|
7342
|
-
TEST_F(DBTest2, SortL0FilesByEpochNumber) {
|
|
7343
|
-
Options options = CurrentOptions();
|
|
7344
|
-
options.num_levels = 1;
|
|
7345
|
-
options.compaction_style = kCompactionStyleUniversal;
|
|
7346
|
-
DestroyAndReopen(options);
|
|
7347
|
-
|
|
7348
|
-
// Set up L0 files to be sorted by their epoch_number
|
|
7349
|
-
ASSERT_OK(Put("key1", "seq1"));
|
|
7350
|
-
|
|
7351
|
-
SstFileWriter sst_file_writer{EnvOptions(), options};
|
|
7352
|
-
std::string external_file1 = dbname_ + "/test_files1.sst";
|
|
7353
|
-
std::string external_file2 = dbname_ + "/test_files2.sst";
|
|
7354
|
-
ASSERT_OK(sst_file_writer.Open(external_file1));
|
|
7355
|
-
ASSERT_OK(sst_file_writer.Put("key2", "seq0"));
|
|
7356
|
-
ASSERT_OK(sst_file_writer.Finish());
|
|
7357
|
-
ASSERT_OK(sst_file_writer.Open(external_file2));
|
|
7358
|
-
ASSERT_OK(sst_file_writer.Put("key3", "seq0"));
|
|
7359
|
-
ASSERT_OK(sst_file_writer.Finish());
|
|
7360
|
-
|
|
7361
|
-
ASSERT_OK(Put("key4", "seq2"));
|
|
7362
|
-
ASSERT_OK(Flush());
|
|
7363
|
-
|
|
7364
|
-
auto* handle = db_->DefaultColumnFamily();
|
|
7365
|
-
ASSERT_OK(db_->IngestExternalFile(handle, {external_file1, external_file2},
|
|
7366
|
-
IngestExternalFileOptions()));
|
|
7367
|
-
|
|
7368
|
-
// To verify L0 files are sorted by epoch_number in descending order
|
|
7369
|
-
// instead of largest_seqno
|
|
7370
|
-
std::vector<FileMetaData*> level0_files = GetLevelFileMetadatas(0 /* level*/);
|
|
7371
|
-
ASSERT_EQ(level0_files.size(), 3);
|
|
7372
|
-
|
|
7373
|
-
EXPECT_EQ(level0_files[0]->epoch_number, 3);
|
|
7374
|
-
EXPECT_EQ(level0_files[0]->fd.largest_seqno, 0);
|
|
7375
|
-
ASSERT_EQ(level0_files[0]->num_entries, 1);
|
|
7376
|
-
ASSERT_TRUE(level0_files[0]->largest.user_key() == Slice("key3"));
|
|
7377
|
-
|
|
7378
|
-
EXPECT_EQ(level0_files[1]->epoch_number, 2);
|
|
7379
|
-
EXPECT_EQ(level0_files[1]->fd.largest_seqno, 0);
|
|
7380
|
-
ASSERT_EQ(level0_files[1]->num_entries, 1);
|
|
7381
|
-
ASSERT_TRUE(level0_files[1]->largest.user_key() == Slice("key2"));
|
|
7382
|
-
|
|
7383
|
-
EXPECT_EQ(level0_files[2]->epoch_number, 1);
|
|
7384
|
-
EXPECT_EQ(level0_files[2]->fd.largest_seqno, 2);
|
|
7385
|
-
ASSERT_EQ(level0_files[2]->num_entries, 2);
|
|
7386
|
-
ASSERT_TRUE(level0_files[2]->largest.user_key() == Slice("key4"));
|
|
7387
|
-
ASSERT_TRUE(level0_files[2]->smallest.user_key() == Slice("key1"));
|
|
7388
|
-
|
|
7389
|
-
// To verify compacted file is assigned with the minimum epoch_number
|
|
7390
|
-
// among input files'
|
|
7391
|
-
ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
|
|
7392
|
-
|
|
7393
|
-
level0_files = GetLevelFileMetadatas(0 /* level*/);
|
|
7394
|
-
ASSERT_EQ(level0_files.size(), 1);
|
|
7395
|
-
EXPECT_EQ(level0_files[0]->epoch_number, 1);
|
|
7396
|
-
ASSERT_EQ(level0_files[0]->num_entries, 4);
|
|
7397
|
-
ASSERT_TRUE(level0_files[0]->largest.user_key() == Slice("key4"));
|
|
7398
|
-
ASSERT_TRUE(level0_files[0]->smallest.user_key() == Slice("key1"));
|
|
7399
|
-
}
|
|
7400
|
-
|
|
7401
|
-
TEST_F(DBTest2, SameEpochNumberAfterCompactRangeChangeLevel) {
|
|
7402
|
-
Options options = CurrentOptions();
|
|
7403
|
-
options.num_levels = 7;
|
|
7404
|
-
options.compaction_style = CompactionStyle::kCompactionStyleLevel;
|
|
7405
|
-
options.disable_auto_compactions = true;
|
|
7406
|
-
DestroyAndReopen(options);
|
|
7407
|
-
|
|
7408
|
-
// Set up the file in L1 to be moved to L0 in later step of CompactRange()
|
|
7409
|
-
ASSERT_OK(Put("key1", "seq1"));
|
|
7410
|
-
ASSERT_OK(Flush());
|
|
7411
|
-
MoveFilesToLevel(1, 0);
|
|
7412
|
-
std::vector<FileMetaData*> level0_files = GetLevelFileMetadatas(0 /* level*/);
|
|
7413
|
-
ASSERT_EQ(level0_files.size(), 0);
|
|
7414
|
-
std::vector<FileMetaData*> level1_files = GetLevelFileMetadatas(1 /* level*/);
|
|
7415
|
-
ASSERT_EQ(level1_files.size(), 1);
|
|
7416
|
-
std::vector<FileMetaData*> level2_files = GetLevelFileMetadatas(2 /* level*/);
|
|
7417
|
-
ASSERT_EQ(level2_files.size(), 0);
|
|
7418
|
-
|
|
7419
|
-
ASSERT_EQ(level1_files[0]->epoch_number, 1);
|
|
7420
|
-
|
|
7421
|
-
// To verify CompactRange() moving file to L0 still keeps the file's
|
|
7422
|
-
// epoch_number
|
|
7423
|
-
CompactRangeOptions croptions;
|
|
7424
|
-
croptions.change_level = true;
|
|
7425
|
-
croptions.target_level = 0;
|
|
7426
|
-
ASSERT_OK(db_->CompactRange(croptions, nullptr, nullptr));
|
|
7427
|
-
level0_files = GetLevelFileMetadatas(0 /* level*/);
|
|
7428
|
-
level1_files = GetLevelFileMetadatas(1 /* level*/);
|
|
7429
|
-
ASSERT_EQ(level0_files.size(), 1);
|
|
7430
|
-
ASSERT_EQ(level1_files.size(), 0);
|
|
7431
|
-
|
|
7432
|
-
EXPECT_EQ(level0_files[0]->epoch_number, 1);
|
|
7433
|
-
|
|
7434
|
-
ASSERT_EQ(level0_files[0]->num_entries, 1);
|
|
7435
|
-
ASSERT_TRUE(level0_files[0]->largest.user_key() == Slice("key1"));
|
|
7436
|
-
}
|
|
7437
|
-
|
|
7438
|
-
TEST_F(DBTest2, RecoverEpochNumber) {
|
|
7439
|
-
for (bool allow_ingest_behind : {true, false}) {
|
|
7440
|
-
Options options = CurrentOptions();
|
|
7441
|
-
options.allow_ingest_behind = allow_ingest_behind;
|
|
7442
|
-
options.num_levels = 7;
|
|
7443
|
-
options.compaction_style = kCompactionStyleLevel;
|
|
7444
|
-
options.disable_auto_compactions = true;
|
|
7445
|
-
DestroyAndReopen(options);
|
|
7446
|
-
CreateAndReopenWithCF({"cf1"}, options);
|
|
7447
|
-
VersionSet* versions = dbfull()->GetVersionSet();
|
|
7448
|
-
assert(versions);
|
|
7449
|
-
const ColumnFamilyData* default_cf =
|
|
7450
|
-
versions->GetColumnFamilySet()->GetDefault();
|
|
7451
|
-
const ColumnFamilyData* cf1 =
|
|
7452
|
-
versions->GetColumnFamilySet()->GetColumnFamily("cf1");
|
|
7453
|
-
|
|
7454
|
-
// Set up files in default CF to recover in later step
|
|
7455
|
-
ASSERT_OK(Put("key1", "epoch1"));
|
|
7456
|
-
ASSERT_OK(Flush());
|
|
7457
|
-
MoveFilesToLevel(1 /* level*/, 0 /* cf*/);
|
|
7458
|
-
ASSERT_OK(Put("key2", "epoch2"));
|
|
7459
|
-
ASSERT_OK(Flush());
|
|
7460
|
-
|
|
7461
|
-
std::vector<FileMetaData*> level0_files =
|
|
7462
|
-
GetLevelFileMetadatas(0 /* level*/);
|
|
7463
|
-
ASSERT_EQ(level0_files.size(), 1);
|
|
7464
|
-
ASSERT_EQ(level0_files[0]->epoch_number,
|
|
7465
|
-
allow_ingest_behind
|
|
7466
|
-
? 2 + kReservedEpochNumberForFileIngestedBehind
|
|
7467
|
-
: 2);
|
|
7468
|
-
ASSERT_EQ(level0_files[0]->num_entries, 1);
|
|
7469
|
-
ASSERT_TRUE(level0_files[0]->largest.user_key() == Slice("key2"));
|
|
7470
|
-
|
|
7471
|
-
std::vector<FileMetaData*> level1_files =
|
|
7472
|
-
GetLevelFileMetadatas(1 /* level*/);
|
|
7473
|
-
ASSERT_EQ(level1_files.size(), 1);
|
|
7474
|
-
ASSERT_EQ(level1_files[0]->epoch_number,
|
|
7475
|
-
allow_ingest_behind
|
|
7476
|
-
? 1 + kReservedEpochNumberForFileIngestedBehind
|
|
7477
|
-
: 1);
|
|
7478
|
-
ASSERT_EQ(level1_files[0]->num_entries, 1);
|
|
7479
|
-
ASSERT_TRUE(level1_files[0]->largest.user_key() == Slice("key1"));
|
|
7480
|
-
|
|
7481
|
-
// Set up files in cf1 to recover in later step
|
|
7482
|
-
ASSERT_OK(Put(1 /* cf */, "cf1_key1", "epoch1"));
|
|
7483
|
-
ASSERT_OK(Flush(1 /* cf */));
|
|
7484
|
-
|
|
7485
|
-
std::vector<FileMetaData*> level0_files_cf1 =
|
|
7486
|
-
GetLevelFileMetadatas(0 /* level*/, 1 /* cf*/);
|
|
7487
|
-
ASSERT_EQ(level0_files_cf1.size(), 1);
|
|
7488
|
-
ASSERT_EQ(level0_files_cf1[0]->epoch_number,
|
|
7489
|
-
allow_ingest_behind
|
|
7490
|
-
? 1 + kReservedEpochNumberForFileIngestedBehind
|
|
7491
|
-
: 1);
|
|
7492
|
-
ASSERT_EQ(level0_files_cf1[0]->num_entries, 1);
|
|
7493
|
-
ASSERT_TRUE(level0_files_cf1[0]->largest.user_key() == Slice("cf1_key1"));
|
|
7494
|
-
|
|
7495
|
-
ASSERT_EQ(default_cf->GetNextEpochNumber(),
|
|
7496
|
-
allow_ingest_behind
|
|
7497
|
-
? 3 + kReservedEpochNumberForFileIngestedBehind
|
|
7498
|
-
: 3);
|
|
7499
|
-
ASSERT_EQ(cf1->GetNextEpochNumber(),
|
|
7500
|
-
allow_ingest_behind
|
|
7501
|
-
? 2 + kReservedEpochNumberForFileIngestedBehind
|
|
7502
|
-
: 2);
|
|
7503
|
-
|
|
7504
|
-
// To verify epoch_number of files of different levels/CFs are
|
|
7505
|
-
// persisted and recovered correctly
|
|
7506
|
-
ReopenWithColumnFamilies({"default", "cf1"}, options);
|
|
7507
|
-
versions = dbfull()->GetVersionSet();
|
|
7508
|
-
assert(versions);
|
|
7509
|
-
default_cf = versions->GetColumnFamilySet()->GetDefault();
|
|
7510
|
-
cf1 = versions->GetColumnFamilySet()->GetColumnFamily("cf1");
|
|
7511
|
-
|
|
7512
|
-
level0_files = GetLevelFileMetadatas(0 /* level*/);
|
|
7513
|
-
ASSERT_EQ(level0_files.size(), 1);
|
|
7514
|
-
EXPECT_EQ(level0_files[0]->epoch_number,
|
|
7515
|
-
allow_ingest_behind
|
|
7516
|
-
? 2 + kReservedEpochNumberForFileIngestedBehind
|
|
7517
|
-
: 2);
|
|
7518
|
-
ASSERT_EQ(level0_files[0]->num_entries, 1);
|
|
7519
|
-
ASSERT_TRUE(level0_files[0]->largest.user_key() == Slice("key2"));
|
|
7520
|
-
|
|
7521
|
-
level1_files = GetLevelFileMetadatas(1 /* level*/);
|
|
7522
|
-
ASSERT_EQ(level1_files.size(), 1);
|
|
7523
|
-
EXPECT_EQ(level1_files[0]->epoch_number,
|
|
7524
|
-
allow_ingest_behind
|
|
7525
|
-
? 1 + kReservedEpochNumberForFileIngestedBehind
|
|
7526
|
-
: 1);
|
|
7527
|
-
ASSERT_EQ(level1_files[0]->num_entries, 1);
|
|
7528
|
-
ASSERT_TRUE(level1_files[0]->largest.user_key() == Slice("key1"));
|
|
7529
|
-
|
|
7530
|
-
level0_files_cf1 = GetLevelFileMetadatas(0 /* level*/, 1 /* cf*/);
|
|
7531
|
-
ASSERT_EQ(level0_files_cf1.size(), 1);
|
|
7532
|
-
EXPECT_EQ(level0_files_cf1[0]->epoch_number,
|
|
7533
|
-
allow_ingest_behind
|
|
7534
|
-
? 1 + kReservedEpochNumberForFileIngestedBehind
|
|
7535
|
-
: 1);
|
|
7536
|
-
ASSERT_EQ(level0_files_cf1[0]->num_entries, 1);
|
|
7537
|
-
ASSERT_TRUE(level0_files_cf1[0]->largest.user_key() == Slice("cf1_key1"));
|
|
7538
|
-
|
|
7539
|
-
// To verify next epoch number is recovered correctly
|
|
7540
|
-
EXPECT_EQ(default_cf->GetNextEpochNumber(),
|
|
7541
|
-
allow_ingest_behind
|
|
7542
|
-
? 3 + kReservedEpochNumberForFileIngestedBehind
|
|
7543
|
-
: 3);
|
|
7544
|
-
EXPECT_EQ(cf1->GetNextEpochNumber(),
|
|
7545
|
-
allow_ingest_behind
|
|
7546
|
-
? 2 + kReservedEpochNumberForFileIngestedBehind
|
|
7547
|
-
: 2);
|
|
7548
|
-
}
|
|
7549
|
-
}
|
|
7550
|
-
|
|
7551
|
-
#endif // ROCKSDB_LITE
|
|
7552
|
-
|
|
7553
7328
|
TEST_F(DBTest2, RenameDirectory) {
|
|
7554
7329
|
Options options = CurrentOptions();
|
|
7555
7330
|
DestroyAndReopen(options);
|
|
@@ -610,52 +610,6 @@ TEST_F(DBWALTest, WALWithChecksumHandoff) {
|
|
|
610
610
|
#endif // ROCKSDB_ASSERT_STATUS_CHECKED
|
|
611
611
|
}
|
|
612
612
|
|
|
613
|
-
#ifndef ROCKSDB_LITE
|
|
614
|
-
TEST_F(DBWALTest, LockWal) {
|
|
615
|
-
do {
|
|
616
|
-
Options options = CurrentOptions();
|
|
617
|
-
options.create_if_missing = true;
|
|
618
|
-
DestroyAndReopen(options);
|
|
619
|
-
SyncPoint::GetInstance()->DisableProcessing();
|
|
620
|
-
SyncPoint::GetInstance()->LoadDependency(
|
|
621
|
-
{{"DBWALTest::LockWal:AfterGetSortedWal",
|
|
622
|
-
"DBWALTest::LockWal:BeforeFlush:1"}});
|
|
623
|
-
SyncPoint::GetInstance()->EnableProcessing();
|
|
624
|
-
|
|
625
|
-
ASSERT_OK(Put("foo", "v"));
|
|
626
|
-
ASSERT_OK(Put("bar", "v"));
|
|
627
|
-
port::Thread worker([&]() {
|
|
628
|
-
TEST_SYNC_POINT("DBWALTest::LockWal:BeforeFlush:1");
|
|
629
|
-
Status tmp_s = db_->Flush(FlushOptions());
|
|
630
|
-
ASSERT_OK(tmp_s);
|
|
631
|
-
});
|
|
632
|
-
|
|
633
|
-
ASSERT_OK(db_->LockWAL());
|
|
634
|
-
// Verify writes are stopped
|
|
635
|
-
WriteOptions wopts;
|
|
636
|
-
wopts.no_slowdown = true;
|
|
637
|
-
Status s = db_->Put(wopts, "foo", "dontcare");
|
|
638
|
-
ASSERT_TRUE(s.IsIncomplete());
|
|
639
|
-
{
|
|
640
|
-
VectorLogPtr wals;
|
|
641
|
-
ASSERT_OK(db_->GetSortedWalFiles(wals));
|
|
642
|
-
ASSERT_FALSE(wals.empty());
|
|
643
|
-
}
|
|
644
|
-
TEST_SYNC_POINT("DBWALTest::LockWal:AfterGetSortedWal");
|
|
645
|
-
FlushOptions flush_opts;
|
|
646
|
-
flush_opts.wait = false;
|
|
647
|
-
s = db_->Flush(flush_opts);
|
|
648
|
-
ASSERT_TRUE(s.IsTryAgain());
|
|
649
|
-
ASSERT_OK(db_->UnlockWAL());
|
|
650
|
-
ASSERT_OK(db_->Put(WriteOptions(), "foo", "dontcare"));
|
|
651
|
-
|
|
652
|
-
worker.join();
|
|
653
|
-
|
|
654
|
-
SyncPoint::GetInstance()->DisableProcessing();
|
|
655
|
-
} while (ChangeWalOptions());
|
|
656
|
-
}
|
|
657
|
-
#endif //! ROCKSDB_LITE
|
|
658
|
-
|
|
659
613
|
class DBRecoveryTestBlobError
|
|
660
614
|
: public DBWALTest,
|
|
661
615
|
public testing::WithParamInterface<std::string> {
|
|
@@ -1645,89 +1599,6 @@ TEST_F(DBWALTest, RaceInstallFlushResultsWithWalObsoletion) {
|
|
|
1645
1599
|
delete db1;
|
|
1646
1600
|
}
|
|
1647
1601
|
|
|
1648
|
-
TEST_F(DBWALTest, FixSyncWalOnObseletedWalWithNewManifestCausingMissingWAL) {
|
|
1649
|
-
Options options = CurrentOptions();
|
|
1650
|
-
options.track_and_verify_wals_in_manifest = true;
|
|
1651
|
-
DestroyAndReopen(options);
|
|
1652
|
-
|
|
1653
|
-
// Accumulate memtable m1 and create the 1st wal (i.e, 4.log)
|
|
1654
|
-
ASSERT_OK(Put(Key(1), ""));
|
|
1655
|
-
ASSERT_OK(Put(Key(2), ""));
|
|
1656
|
-
ASSERT_OK(Put(Key(3), ""));
|
|
1657
|
-
|
|
1658
|
-
const std::string wal_file_path = db_->GetName() + "/000004.log";
|
|
1659
|
-
|
|
1660
|
-
// Coerce the following sequence of events:
|
|
1661
|
-
// (1) Flush() marks 4.log to be obsoleted, 8.log to be the latest (i.e,
|
|
1662
|
-
// active) log and release the lock
|
|
1663
|
-
// (2) SyncWAL() proceeds with the lock. It
|
|
1664
|
-
// creates a new manifest and syncs all the inactive wals before the latest
|
|
1665
|
-
// (i.e, active log), which is 4.log. Note that SyncWAL() is not aware of the
|
|
1666
|
-
// fact that 4.log has marked as to be obseleted. Prior to the fix, such wal
|
|
1667
|
-
// sync will then add a WAL addition record of 4.log to the new manifest
|
|
1668
|
-
// without any special treatment.
|
|
1669
|
-
// (3) BackgroundFlush() will eventually purge 4.log.
|
|
1670
|
-
bool wal_synced = false;
|
|
1671
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
1672
|
-
"FindObsoleteFiles::PostMutexUnlock", [&](void*) {
|
|
1673
|
-
ASSERT_OK(env_->FileExists(wal_file_path));
|
|
1674
|
-
|
|
1675
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
1676
|
-
"VersionSet::ProcessManifestWrites:"
|
|
1677
|
-
"PostDecidingCreateNewManifestOrNot",
|
|
1678
|
-
[&](void* arg) {
|
|
1679
|
-
bool* new_descriptor_log = (bool*)arg;
|
|
1680
|
-
*new_descriptor_log = true;
|
|
1681
|
-
});
|
|
1682
|
-
|
|
1683
|
-
ASSERT_OK(db_->SyncWAL());
|
|
1684
|
-
wal_synced = true;
|
|
1685
|
-
});
|
|
1686
|
-
|
|
1687
|
-
SyncPoint::GetInstance()->SetCallBack(
|
|
1688
|
-
"DBImpl::DeleteObsoleteFileImpl:AfterDeletion2", [&](void* arg) {
|
|
1689
|
-
std::string* file_name = (std::string*)arg;
|
|
1690
|
-
if (*file_name == wal_file_path) {
|
|
1691
|
-
TEST_SYNC_POINT(
|
|
1692
|
-
"DBWALTest::"
|
|
1693
|
-
"FixSyncWalOnObseletedWalWithNewManifestCausingMissingWAL::"
|
|
1694
|
-
"PostDeleteWAL");
|
|
1695
|
-
}
|
|
1696
|
-
});
|
|
1697
|
-
|
|
1698
|
-
SyncPoint::GetInstance()->LoadDependency(
|
|
1699
|
-
{{"DBImpl::BackgroundCallFlush:FilesFound",
|
|
1700
|
-
"PreConfrimObsoletedWALSynced"},
|
|
1701
|
-
{"DBWALTest::FixSyncWalOnObseletedWalWithNewManifestCausingMissingWAL::"
|
|
1702
|
-
"PostDeleteWAL",
|
|
1703
|
-
"PreConfrimWALDeleted"}});
|
|
1704
|
-
|
|
1705
|
-
SyncPoint::GetInstance()->EnableProcessing();
|
|
1706
|
-
|
|
1707
|
-
ASSERT_OK(Flush());
|
|
1708
|
-
|
|
1709
|
-
TEST_SYNC_POINT("PreConfrimObsoletedWALSynced");
|
|
1710
|
-
ASSERT_TRUE(wal_synced);
|
|
1711
|
-
|
|
1712
|
-
TEST_SYNC_POINT("PreConfrimWALDeleted");
|
|
1713
|
-
// BackgroundFlush() purged 4.log
|
|
1714
|
-
// because the memtable associated with the WAL was flushed and new WAL was
|
|
1715
|
-
// created (i.e, 8.log)
|
|
1716
|
-
ASSERT_TRUE(env_->FileExists(wal_file_path).IsNotFound());
|
|
1717
|
-
|
|
1718
|
-
SyncPoint::GetInstance()->ClearAllCallBacks();
|
|
1719
|
-
SyncPoint::GetInstance()->DisableProcessing();
|
|
1720
|
-
|
|
1721
|
-
// To verify the corruption of "Missing WAL with log number: 4" under
|
|
1722
|
-
// `options.track_and_verify_wals_in_manifest = true` is fixed.
|
|
1723
|
-
//
|
|
1724
|
-
// Before the fix, `db_->SyncWAL()` will sync and record WAL addtion of the
|
|
1725
|
-
// obseleted WAL 4.log in a new manifest without any special treament.
|
|
1726
|
-
// This will result in missing-wal corruption in DB::Reopen().
|
|
1727
|
-
Status s = TryReopen(options);
|
|
1728
|
-
EXPECT_OK(s);
|
|
1729
|
-
}
|
|
1730
|
-
|
|
1731
1602
|
// Test scope:
|
|
1732
1603
|
// - We expect to open data store under all circumstances
|
|
1733
1604
|
// - We expect only data upto the point where the first error was encountered
|
|
@@ -323,27 +323,6 @@ TEST_F(TimestampCompatibleCompactionTest, CompactFilesRangeCheckL1) {
|
|
|
323
323
|
static_cast<int>(compaction_job_info.input_files.size()));
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
|
-
|
|
327
|
-
TEST_F(TimestampCompatibleCompactionTest, EmptyCompactionOutput) {
|
|
328
|
-
Options options = CurrentOptions();
|
|
329
|
-
options.env = env_;
|
|
330
|
-
options.comparator = test::BytewiseComparatorWithU64TsWrapper();
|
|
331
|
-
DestroyAndReopen(options);
|
|
332
|
-
|
|
333
|
-
std::string ts_str = Timestamp(1);
|
|
334
|
-
WriteOptions wopts;
|
|
335
|
-
ASSERT_OK(
|
|
336
|
-
db_->DeleteRange(wopts, db_->DefaultColumnFamily(), "k1", "k3", ts_str));
|
|
337
|
-
ASSERT_OK(Flush());
|
|
338
|
-
|
|
339
|
-
ts_str = Timestamp(3);
|
|
340
|
-
Slice ts = ts_str;
|
|
341
|
-
CompactRangeOptions cro;
|
|
342
|
-
// range tombstone will be dropped during compaction
|
|
343
|
-
cro.full_history_ts_low = &ts;
|
|
344
|
-
cro.bottommost_level_compaction = BottommostLevelCompaction::kForce;
|
|
345
|
-
ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
|
|
346
|
-
}
|
|
347
326
|
#endif // !ROCKSDB_LITE
|
|
348
327
|
|
|
349
328
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -150,31 +150,6 @@ int InternalKeyComparator::Compare(const ParsedInternalKey& a,
|
|
|
150
150
|
return r;
|
|
151
151
|
}
|
|
152
152
|
|
|
153
|
-
int InternalKeyComparator::Compare(const Slice& a,
|
|
154
|
-
const ParsedInternalKey& b) const {
|
|
155
|
-
// Order by:
|
|
156
|
-
// increasing user key (according to user-supplied comparator)
|
|
157
|
-
// decreasing sequence number
|
|
158
|
-
// decreasing type (though sequence# should be enough to disambiguate)
|
|
159
|
-
int r = user_comparator_.Compare(ExtractUserKey(a), b.user_key);
|
|
160
|
-
if (r == 0) {
|
|
161
|
-
const uint64_t anum =
|
|
162
|
-
DecodeFixed64(a.data() + a.size() - kNumInternalBytes);
|
|
163
|
-
const uint64_t bnum = (b.sequence << 8) | b.type;
|
|
164
|
-
if (anum > bnum) {
|
|
165
|
-
r = -1;
|
|
166
|
-
} else if (anum < bnum) {
|
|
167
|
-
r = +1;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
return r;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
int InternalKeyComparator::Compare(const ParsedInternalKey& a,
|
|
174
|
-
const Slice& b) const {
|
|
175
|
-
return -Compare(b, a);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
153
|
LookupKey::LookupKey(const Slice& _user_key, SequenceNumber s,
|
|
179
154
|
const Slice* ts) {
|
|
180
155
|
size_t usize = _user_key.size();
|
|
@@ -283,8 +283,6 @@ class InternalKeyComparator
|
|
|
283
283
|
|
|
284
284
|
int Compare(const InternalKey& a, const InternalKey& b) const;
|
|
285
285
|
int Compare(const ParsedInternalKey& a, const ParsedInternalKey& b) const;
|
|
286
|
-
int Compare(const Slice& a, const ParsedInternalKey& b) const;
|
|
287
|
-
int Compare(const ParsedInternalKey& a, const Slice& b) const;
|
|
288
286
|
// In this `Compare()` overload, the sequence numbers provided in
|
|
289
287
|
// `a_global_seqno` and `b_global_seqno` override the sequence numbers in `a`
|
|
290
288
|
// and `b`, respectively. To disable sequence number override(s), provide the
|
|
@@ -112,9 +112,8 @@ Status UpdateManifestForFilesState(
|
|
|
112
112
|
lf->smallest, lf->largest, lf->fd.smallest_seqno,
|
|
113
113
|
lf->fd.largest_seqno, lf->marked_for_compaction, temp,
|
|
114
114
|
lf->oldest_blob_file_number, lf->oldest_ancester_time,
|
|
115
|
-
lf->file_creation_time, lf->
|
|
116
|
-
lf->file_checksum_func_name, lf->unique_id
|
|
117
|
-
lf->compensated_range_deletion_size);
|
|
115
|
+
lf->file_creation_time, lf->file_checksum,
|
|
116
|
+
lf->file_checksum_func_name, lf->unique_id);
|
|
118
117
|
}
|
|
119
118
|
}
|
|
120
119
|
} else {
|
|
@@ -694,7 +694,6 @@ TEST_P(ExternalSSTFileBasicTest, IngestFileWithGlobalSeqnoPickedSeqno) {
|
|
|
694
694
|
bool verify_checksums_before_ingest = std::get<1>(GetParam());
|
|
695
695
|
do {
|
|
696
696
|
Options options = CurrentOptions();
|
|
697
|
-
options.disable_auto_compactions = true;
|
|
698
697
|
DestroyAndReopen(options);
|
|
699
698
|
std::map<std::string, std::string> true_data;
|
|
700
699
|
|
|
@@ -801,7 +800,6 @@ TEST_P(ExternalSSTFileBasicTest, IngestFileWithMultipleValueType) {
|
|
|
801
800
|
bool verify_checksums_before_ingest = std::get<1>(GetParam());
|
|
802
801
|
do {
|
|
803
802
|
Options options = CurrentOptions();
|
|
804
|
-
options.disable_auto_compactions = true;
|
|
805
803
|
options.merge_operator.reset(new TestPutOperator());
|
|
806
804
|
DestroyAndReopen(options);
|
|
807
805
|
std::map<std::string, std::string> true_data;
|
|
@@ -929,7 +927,6 @@ TEST_P(ExternalSSTFileBasicTest, IngestFileWithMixedValueType) {
|
|
|
929
927
|
bool verify_checksums_before_ingest = std::get<1>(GetParam());
|
|
930
928
|
do {
|
|
931
929
|
Options options = CurrentOptions();
|
|
932
|
-
options.disable_auto_compactions = true;
|
|
933
930
|
options.merge_operator.reset(new TestPutOperator());
|
|
934
931
|
DestroyAndReopen(options);
|
|
935
932
|
std::map<std::string, std::string> true_data;
|