@nxtedition/rocksdb 8.1.3 → 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
@@ -77,9 +77,8 @@ class CompactionPickerTestBase : public testing::Test {
77
77
  void NewVersionStorage(int num_levels, CompactionStyle style) {
78
78
  DeleteVersionStorage();
79
79
  options_.num_levels = num_levels;
80
- vstorage_.reset(new VersionStorageInfo(
81
- &icmp_, ucmp_, options_.num_levels, style, nullptr, false,
82
- EpochNumberRequirement::kMustPresent));
80
+ vstorage_.reset(new VersionStorageInfo(&icmp_, ucmp_, options_.num_levels,
81
+ style, nullptr, false));
83
82
  vstorage_->PrepareForVersionAppend(ioptions_, mutable_cf_options_);
84
83
  }
85
84
 
@@ -88,7 +87,7 @@ class CompactionPickerTestBase : public testing::Test {
88
87
  void AddVersionStorage() {
89
88
  temp_vstorage_.reset(new VersionStorageInfo(
90
89
  &icmp_, ucmp_, options_.num_levels, ioptions_.compaction_style,
91
- vstorage_.get(), false, EpochNumberRequirement::kMustPresent));
90
+ vstorage_.get(), false));
92
91
  }
93
92
 
94
93
  void DeleteVersionStorage() {
@@ -106,8 +105,7 @@ class CompactionPickerTestBase : public testing::Test {
106
105
  size_t compensated_file_size = 0, bool marked_for_compact = false,
107
106
  Temperature temperature = Temperature::kUnknown,
108
107
  uint64_t oldest_ancestor_time = kUnknownOldestAncesterTime,
109
- Slice ts_of_smallest = Slice(), Slice ts_of_largest = Slice(),
110
- uint64_t epoch_number = kUnknownEpochNumber) {
108
+ Slice ts_of_smallest = Slice(), Slice ts_of_largest = Slice()) {
111
109
  assert(ts_of_smallest.size() == ucmp_->timestamp_size());
112
110
  assert(ts_of_largest.size() == ucmp_->timestamp_size());
113
111
 
@@ -147,8 +145,8 @@ class CompactionPickerTestBase : public testing::Test {
147
145
  file_number, path_id, file_size, smallest_ikey, largest_ikey,
148
146
  smallest_seq, largest_seq, marked_for_compact, temperature,
149
147
  kInvalidBlobFileNumber, kUnknownOldestAncesterTime,
150
- kUnknownFileCreationTime, epoch_number, kUnknownFileChecksum,
151
- kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
148
+ kUnknownFileCreationTime, kUnknownFileChecksum,
149
+ kUnknownFileChecksumFuncName, kNullUniqueId64x2);
152
150
  f->compensated_file_size =
153
151
  (compensated_file_size != 0) ? compensated_file_size : file_size;
154
152
  f->oldest_ancester_time = oldest_ancestor_time;
@@ -2873,6 +2871,39 @@ TEST_F(CompactionPickerTest, IntraL0MaxCompactionBytesHit) {
2873
2871
  ASSERT_EQ(0, compaction->output_level());
2874
2872
  }
2875
2873
 
2874
+ TEST_F(CompactionPickerTest, IntraL0ForEarliestSeqno) {
2875
+ // Intra L0 compaction triggers only if there are at least
2876
+ // level0_file_num_compaction_trigger + 2 L0 files.
2877
+ mutable_cf_options_.level0_file_num_compaction_trigger = 3;
2878
+ mutable_cf_options_.max_compaction_bytes = 999999u;
2879
+ NewVersionStorage(6, kCompactionStyleLevel);
2880
+
2881
+ // 4 out of 6 L0 files will be picked for intra L0 compaction due to
2882
+ // being_compact limit. And the latest one L0 will be skipped due to earliest
2883
+ // seqno. The one L1 file spans entire L0 key range and is marked as being
2884
+ // compacted to avoid L0->L1 compaction.
2885
+ Add(1, 1U, "100", "350", 200000U, 0, 110, 111);
2886
+ Add(0, 2U, "301", "350", 1U, 0, 108, 109);
2887
+ Add(0, 3U, "251", "300", 1U, 0, 106, 107);
2888
+ Add(0, 4U, "201", "250", 1U, 0, 104, 105);
2889
+ Add(0, 5U, "151", "200", 1U, 0, 102, 103);
2890
+ Add(0, 6U, "100", "150", 1U, 0, 100, 101);
2891
+ Add(0, 7U, "100", "100", 1U, 0, 99, 100);
2892
+ vstorage_->LevelFiles(0)[5]->being_compacted = true;
2893
+ vstorage_->LevelFiles(1)[0]->being_compacted = true;
2894
+ UpdateVersionStorageInfo();
2895
+
2896
+ std::unique_ptr<Compaction> compaction(level_compaction_picker.PickCompaction(
2897
+ cf_name_, mutable_cf_options_, mutable_db_options_, vstorage_.get(),
2898
+ &log_buffer_, 107));
2899
+ ASSERT_TRUE(compaction.get() != nullptr);
2900
+ ASSERT_EQ(1U, compaction->num_input_levels());
2901
+ ASSERT_EQ(4U, compaction->num_input_files(0));
2902
+ ASSERT_EQ(CompactionReason::kLevelL0FilesNum,
2903
+ compaction->compaction_reason());
2904
+ ASSERT_EQ(0, compaction->output_level());
2905
+ }
2906
+
2876
2907
  #ifndef ROCKSDB_LITE
2877
2908
  TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
2878
2909
  const uint64_t kFileSize = 100000;
@@ -2885,23 +2916,9 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
2885
2916
  // should fail
2886
2917
  NewVersionStorage(5, kCompactionStyleUniversal);
2887
2918
 
2888
- Add(0, 1U, "150", "200", kFileSize, 0, 500, 550, /*compensated_file_size*/ 0,
2889
- /*marked_for_compact*/ false, /* temperature*/ Temperature::kUnknown,
2890
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2891
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2892
- /*epoch_number*/ 3);
2893
- Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450,
2894
- /*compensated_file_size*/ 0, /*marked_for_compact*/ false,
2895
- /* temperature*/ Temperature::kUnknown,
2896
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2897
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2898
- /*epoch_number*/ 2);
2899
- Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300,
2900
- /*compensated_file_size*/ 0, /*marked_for_compact*/ false,
2901
- /* temperature*/ Temperature::kUnknown,
2902
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2903
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2904
- /*epoch_number*/ 1);
2919
+ Add(0, 1U, "150", "200", kFileSize, 0, 500, 550);
2920
+ Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450);
2921
+ Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300);
2905
2922
  Add(3, 5U, "010", "080", 8 * kFileSize, 0, 200, 251);
2906
2923
  Add(4, 3U, "301", "350", 8 * kFileSize, 0, 101, 150);
2907
2924
  Add(4, 6U, "501", "750", 8 * kFileSize, 0, 101, 150);
@@ -2923,11 +2940,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap) {
2923
2940
 
2924
2941
  AddVersionStorage();
2925
2942
  // Simulate a flush and mark the file for compaction
2926
- Add(0, 7U, "150", "200", kFileSize, 0, 551, 600, 0, true,
2927
- /* temperature*/ Temperature::kUnknown,
2928
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2929
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2930
- /*epoch_number*/ 4);
2943
+ Add(0, 7U, "150", "200", kFileSize, 0, 551, 600, 0, true);
2931
2944
  UpdateVersionStorageInfo();
2932
2945
 
2933
2946
  std::unique_ptr<Compaction> compaction2(
@@ -2949,11 +2962,7 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
2949
2962
  NewVersionStorage(5, kCompactionStyleUniversal);
2950
2963
 
2951
2964
  // Mark file number 4 for compaction
2952
- Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300, 0, true,
2953
- /* temperature*/ Temperature::kUnknown,
2954
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2955
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2956
- /*epoch_number*/ 1);
2965
+ Add(0, 4U, "260", "300", 4 * kFileSize, 0, 260, 300, 0, true);
2957
2966
  Add(3, 5U, "240", "290", 8 * kFileSize, 0, 201, 250);
2958
2967
  Add(4, 3U, "301", "350", 8 * kFileSize, 0, 101, 150);
2959
2968
  Add(4, 6U, "501", "750", 8 * kFileSize, 0, 101, 150);
@@ -2974,17 +2983,8 @@ TEST_F(CompactionPickerTest, UniversalMarkedCompactionFullOverlap2) {
2974
2983
  ASSERT_EQ(1U, compaction->num_input_files(1));
2975
2984
 
2976
2985
  AddVersionStorage();
2977
- Add(0, 1U, "150", "200", kFileSize, 0, 500, 550, /*compensated_file_size*/ 0,
2978
- /*marked_for_compact*/ false, /* temperature*/ Temperature::kUnknown,
2979
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2980
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2981
- /*epoch_number*/ 3);
2982
- Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450,
2983
- /*compensated_file_size*/ 0, /*marked_for_compact*/ false,
2984
- /* temperature*/ Temperature::kUnknown,
2985
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
2986
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
2987
- /*epoch_number*/ 2);
2986
+ Add(0, 1U, "150", "200", kFileSize, 0, 500, 550);
2987
+ Add(0, 2U, "201", "250", 2 * kFileSize, 0, 401, 450);
2988
2988
  UpdateVersionStorageInfo();
2989
2989
 
2990
2990
  std::unique_ptr<Compaction> compaction2(
@@ -3150,29 +3150,10 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
3150
3150
  NewVersionStorage(1, kCompactionStyleUniversal);
3151
3151
 
3152
3152
  // Mark file number 5 for compaction
3153
- Add(0, 4U, "260", "300", 1 * kFileSize, 0, 260, 300,
3154
- /*compensated_file_size*/ 0, /*marked_for_compact*/ false,
3155
- /* temperature*/ Temperature::kUnknown,
3156
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
3157
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
3158
- /*epoch_number*/ 4);
3159
- Add(0, 5U, "240", "290", 2 * kFileSize, 0, 201, 250, 0, true,
3160
- /* temperature*/ Temperature::kUnknown,
3161
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
3162
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
3163
- /*epoch_number*/ 3);
3164
- Add(0, 3U, "301", "350", 4 * kFileSize, 0, 101, 150,
3165
- /*compensated_file_size*/ 0, /*marked_for_compact*/ false,
3166
- /* temperature*/ Temperature::kUnknown,
3167
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
3168
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
3169
- /*epoch_number*/ 2);
3170
- Add(0, 6U, "501", "750", 8 * kFileSize, 0, 50, 100,
3171
- /*compensated_file_size*/ 0, /*marked_for_compact*/ false,
3172
- /* temperature*/ Temperature::kUnknown,
3173
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
3174
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
3175
- /*epoch_number*/ 1);
3153
+ Add(0, 4U, "260", "300", 1 * kFileSize, 0, 260, 300);
3154
+ Add(0, 5U, "240", "290", 2 * kFileSize, 0, 201, 250, 0, true);
3155
+ Add(0, 3U, "301", "350", 4 * kFileSize, 0, 101, 150);
3156
+ Add(0, 6U, "501", "750", 8 * kFileSize, 0, 50, 100);
3176
3157
  UpdateVersionStorageInfo();
3177
3158
 
3178
3159
  std::unique_ptr<Compaction> compaction(
@@ -3192,18 +3173,8 @@ TEST_F(CompactionPickerTest, UniversalMarkedL0Overlap2) {
3192
3173
  ASSERT_TRUE(file_map_[6].first->being_compacted);
3193
3174
 
3194
3175
  AddVersionStorage();
3195
- Add(0, 1U, "150", "200", kFileSize, 0, 500, 550, /*compensated_file_size*/ 0,
3196
- /*marked_for_compact*/ false,
3197
- /* temperature*/ Temperature::kUnknown,
3198
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
3199
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
3200
- /*epoch_number*/ 6);
3201
- Add(0, 2U, "201", "250", kFileSize, 0, 401, 450, /*compensated_file_size*/ 0,
3202
- /*marked_for_compact*/ false,
3203
- /* temperature*/ Temperature::kUnknown,
3204
- /*oldest_ancestor_time*/ kUnknownOldestAncesterTime,
3205
- /*ts_of_smallest*/ Slice(), /*ts_of_largest*/ Slice(),
3206
- /*epoch_number*/ 5);
3176
+ Add(0, 1U, "150", "200", kFileSize, 0, 500, 550);
3177
+ Add(0, 2U, "201", "250", kFileSize, 0, 401, 450);
3207
3178
  UpdateVersionStorageInfo();
3208
3179
 
3209
3180
  std::unique_ptr<Compaction> compaction2(
@@ -293,7 +293,7 @@ bool UniversalCompactionPicker::NeedsCompaction(
293
293
  Compaction* UniversalCompactionPicker::PickCompaction(
294
294
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
295
295
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
296
- LogBuffer* log_buffer) {
296
+ LogBuffer* log_buffer, SequenceNumber /* earliest_memtable_seqno */) {
297
297
  UniversalCompactionBuilder builder(ioptions_, icmp_, cf_name,
298
298
  mutable_cf_options, mutable_db_options,
299
299
  vstorage, this, log_buffer);
@@ -400,7 +400,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
400
400
  if (!vstorage_->FilesMarkedForPeriodicCompaction().empty()) {
401
401
  // Always need to do a full compaction for periodic compaction.
402
402
  c = PickPeriodicCompaction();
403
- TEST_SYNC_POINT_CALLBACK("PostPickPeriodicCompaction", c);
404
403
  }
405
404
 
406
405
  // Check for size amplification.
@@ -409,7 +408,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
409
408
  static_cast<size_t>(
410
409
  mutable_cf_options_.level0_file_num_compaction_trigger)) {
411
410
  if ((c = PickCompactionToReduceSizeAmp()) != nullptr) {
412
- TEST_SYNC_POINT("PickCompactionToReduceSizeAmpReturnNonnullptr");
413
411
  ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: compacting for size amp\n",
414
412
  cf_name_.c_str());
415
413
  } else {
@@ -419,7 +417,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
419
417
  mutable_cf_options_.compaction_options_universal.size_ratio;
420
418
 
421
419
  if ((c = PickCompactionToReduceSortedRuns(ratio, UINT_MAX)) != nullptr) {
422
- TEST_SYNC_POINT("PickCompactionToReduceSortedRunsReturnNonnullptr");
423
420
  ROCKS_LOG_BUFFER(log_buffer_,
424
421
  "[%s] Universal: compacting for size ratio\n",
425
422
  cf_name_.c_str());
@@ -460,7 +457,6 @@ Compaction* UniversalCompactionBuilder::PickCompaction() {
460
457
 
461
458
  if (c == nullptr) {
462
459
  if ((c = PickDeleteTriggeredCompaction()) != nullptr) {
463
- TEST_SYNC_POINT("PickDeleteTriggeredCompactionReturnNonnullptr");
464
460
  ROCKS_LOG_BUFFER(log_buffer_,
465
461
  "[%s] Universal: delete triggered compaction\n",
466
462
  cf_name_.c_str());
@@ -18,11 +18,11 @@ class UniversalCompactionPicker : public CompactionPicker {
18
18
  UniversalCompactionPicker(const ImmutableOptions& ioptions,
19
19
  const InternalKeyComparator* icmp)
20
20
  : CompactionPicker(ioptions, icmp) {}
21
- virtual Compaction* PickCompaction(const std::string& cf_name,
22
- const MutableCFOptions& mutable_cf_options,
23
- const MutableDBOptions& mutable_db_options,
24
- VersionStorageInfo* vstorage,
25
- LogBuffer* log_buffer) override;
21
+ virtual Compaction* PickCompaction(
22
+ const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
23
+ const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
24
+ LogBuffer* log_buffer,
25
+ SequenceNumber earliest_memtable_seqno = kMaxSequenceNumber) override;
26
26
  virtual int MaxOutputLevel() const override { return NumberLevels() - 1; }
27
27
 
28
28
  virtual bool NeedsCompaction(
@@ -190,7 +190,6 @@ CompactionJob::ProcessKeyValueCompactionWithCompactionService(
190
190
  meta.largest.DecodeFrom(file.largest_internal_key);
191
191
  meta.oldest_ancester_time = file.oldest_ancester_time;
192
192
  meta.file_creation_time = file.file_creation_time;
193
- meta.epoch_number = file.epoch_number;
194
193
  meta.marked_for_compaction = file.marked_for_compaction;
195
194
  meta.unique_id = file.unique_id;
196
195
 
@@ -334,9 +333,8 @@ Status CompactionServiceCompactionJob::Run() {
334
333
  MakeTableFileName(meta.fd.GetNumber()), meta.fd.smallest_seqno,
335
334
  meta.fd.largest_seqno, meta.smallest.Encode().ToString(),
336
335
  meta.largest.Encode().ToString(), meta.oldest_ancester_time,
337
- meta.file_creation_time, meta.epoch_number,
338
- output_file.validator.GetHash(), meta.marked_for_compaction,
339
- meta.unique_id);
336
+ meta.file_creation_time, output_file.validator.GetHash(),
337
+ meta.marked_for_compaction, meta.unique_id);
340
338
  }
341
339
  InternalStats::CompactionStatsFull compaction_stats;
342
340
  sub_compact->AggregateCompactionStats(compaction_stats);
@@ -491,10 +489,6 @@ static std::unordered_map<std::string, OptionTypeInfo>
491
489
  {offsetof(struct CompactionServiceOutputFile, file_creation_time),
492
490
  OptionType::kUInt64T, OptionVerificationType::kNormal,
493
491
  OptionTypeFlags::kNone}},
494
- {"epoch_number",
495
- {offsetof(struct CompactionServiceOutputFile, epoch_number),
496
- OptionType::kUInt64T, OptionVerificationType::kNormal,
497
- OptionTypeFlags::kNone}},
498
492
  {"paranoid_hash",
499
493
  {offsetof(struct CompactionServiceOutputFile, paranoid_hash),
500
494
  OptionType::kUInt64T, OptionVerificationType::kNormal,
@@ -84,11 +84,6 @@ class SubcompactionState {
84
84
  // Assign range dels aggregator, for each range_del, it can only be assigned
85
85
  // to one output level, for per_key_placement, it's going to be the
86
86
  // penultimate level.
87
- // TODO: This does not work for per_key_placement + user-defined timestamp +
88
- // DeleteRange() combo. If user-defined timestamp is enabled,
89
- // it is possible for a range tombstone to belong to bottommost level (
90
- // seqno < earliest snapshot) without being dropped (garbage collection
91
- // for user-defined timestamp).
92
87
  void AssignRangeDelAggregator(
93
88
  std::unique_ptr<CompactionRangeDelAggregator>&& range_del_agg) {
94
89
  if (compaction->SupportsPerKeyPlacement()) {
@@ -201,11 +196,8 @@ class SubcompactionState {
201
196
  const CompactionFileCloseFunc& close_file_func) {
202
197
  // Call FinishCompactionOutputFile() even if status is not ok: it needs to
203
198
  // close the output file.
204
- // CloseOutput() may open new compaction output files.
205
- is_current_penultimate_level_ = true;
206
199
  Status s = penultimate_level_outputs_.CloseOutput(
207
200
  curr_status, open_file_func, close_file_func);
208
- is_current_penultimate_level_ = false;
209
201
  s = compaction_outputs_.CloseOutput(s, open_file_func, close_file_func);
210
202
  return s;
211
203
  }