@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.
Files changed (133) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +0 -9
  2. package/deps/rocksdb/rocksdb/Makefile +1 -13
  3. package/deps/rocksdb/rocksdb/TARGETS +0 -4
  4. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +0 -11
  5. package/deps/rocksdb/rocksdb/db/builder.cc +4 -13
  6. package/deps/rocksdb/rocksdb/db/builder.h +1 -2
  7. package/deps/rocksdb/rocksdb/db/c.cc +0 -15
  8. package/deps/rocksdb/rocksdb/db/c_test.c +0 -3
  9. package/deps/rocksdb/rocksdb/db/column_family.cc +5 -11
  10. package/deps/rocksdb/rocksdb/db/column_family.h +0 -20
  11. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +0 -5
  12. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +37 -31
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +0 -5
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -24
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +1 -17
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1 -4
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -4
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -9
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +26 -104
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +0 -5
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +18 -11
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +16 -17
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +6 -19
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +5 -5
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -22
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -5
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +52 -81
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -5
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -5
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +2 -8
  31. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +0 -8
  32. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +138 -266
  33. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -86
  34. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +3 -2
  35. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +123 -897
  36. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -31
  37. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +9 -5
  38. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +28 -121
  39. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
  40. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -3
  41. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +0 -3
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +4 -8
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +0 -10
  44. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +4 -325
  45. package/deps/rocksdb/rocksdb/db/db_test.cc +0 -3
  46. package/deps/rocksdb/rocksdb/db/db_test2.cc +8 -233
  47. package/deps/rocksdb/rocksdb/db/db_test_util.h +0 -3
  48. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +0 -129
  49. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +0 -21
  50. package/deps/rocksdb/rocksdb/db/dbformat.cc +0 -25
  51. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -2
  52. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -3
  53. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +0 -3
  54. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +13 -92
  55. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +1 -38
  56. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +110 -14
  57. package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -6
  58. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +0 -4
  59. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +53 -56
  60. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +4 -3
  61. package/deps/rocksdb/rocksdb/db/memtable.cc +1 -1
  62. package/deps/rocksdb/rocksdb/db/merge_helper.cc +0 -4
  63. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
  64. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -1
  65. package/deps/rocksdb/rocksdb/db/repair.cc +22 -65
  66. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -54
  67. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
  68. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +1 -3
  69. package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -90
  70. package/deps/rocksdb/rocksdb/db/version_builder.h +0 -20
  71. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +93 -218
  72. package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -27
  73. package/deps/rocksdb/rocksdb/db/version_edit.h +9 -33
  74. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +6 -13
  75. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +6 -17
  76. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +17 -19
  77. package/deps/rocksdb/rocksdb/db/version_set.cc +26 -166
  78. package/deps/rocksdb/rocksdb/db/version_set.h +2 -32
  79. package/deps/rocksdb/rocksdb/db/version_set_test.cc +31 -65
  80. package/deps/rocksdb/rocksdb/db/write_thread.cc +2 -5
  81. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
  82. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +32 -31
  83. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +1 -2
  84. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +6 -8
  85. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +0 -4
  86. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +4 -11
  87. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +15 -16
  88. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +1 -13
  89. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +75 -0
  90. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +0 -8
  91. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +0 -6
  92. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +1 -7
  93. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -9
  94. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1 -2
  95. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +0 -3
  96. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +9 -69
  97. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  98. package/deps/rocksdb/rocksdb/memory/arena.cc +87 -23
  99. package/deps/rocksdb/rocksdb/memory/arena.h +31 -25
  100. package/deps/rocksdb/rocksdb/memory/arena_test.cc +0 -90
  101. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
  102. package/deps/rocksdb/rocksdb/src.mk +0 -2
  103. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +2 -3
  104. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +2 -3
  105. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +2 -6
  106. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
  107. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
  108. package/deps/rocksdb/rocksdb/table/format.cc +20 -24
  109. package/deps/rocksdb/rocksdb/table/format.h +2 -5
  110. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +105 -54
  111. package/deps/rocksdb/rocksdb/table/merging_iterator.h +0 -80
  112. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  113. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
  114. package/deps/rocksdb/rocksdb/table/table_test.cc +6 -7
  115. package/deps/rocksdb/rocksdb/test_util/testutil.h +0 -10
  116. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
  117. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
  118. package/deps/rocksdb/rocksdb/util/status.cc +0 -7
  119. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +74 -250
  120. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -199
  121. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +0 -1
  122. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +0 -39
  123. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +0 -9
  124. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -59
  125. package/deps/rocksdb/rocksdb.gyp +0 -3
  126. package/index.js +2 -2
  127. package/package.json +1 -1
  128. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  129. package/prebuilds/linux-x64/node.napi.node +0 -0
  130. package/deps/rocksdb/rocksdb/port/mmap.cc +0 -98
  131. package/deps/rocksdb/rocksdb/port/mmap.h +0 -70
  132. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +0 -142
  133. 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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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
- ASSERT_GE(res_handler.GetAvgLatency(), 0.0);
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);
@@ -49,9 +49,6 @@
49
49
  #include "util/string_util.h"
50
50
  #include "utilities/merge_operators.h"
51
51
 
52
- // In case defined by Windows headers
53
- #undef small
54
-
55
52
  namespace ROCKSDB_NAMESPACE {
56
53
  class MockEnv;
57
54
 
@@ -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->epoch_number, lf->file_checksum,
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;