@nxtedition/rocksdb 8.0.1 → 8.0.3

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 (129) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +2 -1
  2. package/deps/rocksdb/rocksdb/Makefile +2 -2
  3. package/deps/rocksdb/rocksdb/TARGETS +4 -2
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +0 -5
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +8 -29
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +146 -0
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +13 -1
  8. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +20 -146
  9. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +32 -0
  10. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +11 -0
  11. package/deps/rocksdb/rocksdb/db/column_family.cc +11 -9
  12. package/deps/rocksdb/rocksdb/db/column_family.h +20 -0
  13. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +5 -0
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +13 -33
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +5 -0
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +27 -8
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -1
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +2 -1
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +4 -2
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -6
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +65 -7
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +5 -0
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +10 -32
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +28 -47
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +28 -22
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -14
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -8
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -4
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +170 -140
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -1
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -4
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +8 -2
  33. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
  34. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +266 -138
  35. package/deps/rocksdb/rocksdb/db/corruption_test.cc +86 -1
  36. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +72 -5
  37. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +119 -10
  38. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +585 -264
  39. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +46 -18
  40. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +5 -1
  41. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +6 -15
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
  45. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +8 -8
  46. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +10 -0
  47. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +250 -2
  48. package/deps/rocksdb/rocksdb/db/db_test.cc +3 -0
  49. package/deps/rocksdb/rocksdb/db/db_test2.cc +307 -8
  50. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +129 -0
  51. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +21 -0
  52. package/deps/rocksdb/rocksdb/db/dbformat.cc +25 -0
  53. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -0
  54. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  55. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +5 -2
  56. package/deps/rocksdb/rocksdb/db/flush_job.cc +5 -2
  57. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +4 -0
  58. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +56 -53
  59. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +3 -4
  60. package/deps/rocksdb/rocksdb/db/merge_helper.cc +4 -0
  61. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
  62. package/deps/rocksdb/rocksdb/db/repair.cc +64 -22
  63. package/deps/rocksdb/rocksdb/db/repair_test.cc +54 -0
  64. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
  65. package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -0
  66. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -1
  67. package/deps/rocksdb/rocksdb/db/version_builder.cc +90 -43
  68. package/deps/rocksdb/rocksdb/db/version_builder.h +20 -0
  69. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +190 -67
  70. package/deps/rocksdb/rocksdb/db/version_edit.cc +15 -1
  71. package/deps/rocksdb/rocksdb/db/version_edit.h +16 -4
  72. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +41 -11
  73. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +27 -12
  74. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +18 -16
  75. package/deps/rocksdb/rocksdb/db/version_set.cc +212 -35
  76. package/deps/rocksdb/rocksdb/db/version_set.h +34 -4
  77. package/deps/rocksdb/rocksdb/db/version_set_test.cc +45 -25
  78. package/deps/rocksdb/rocksdb/db/write_thread.cc +5 -2
  79. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
  80. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +0 -4
  81. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +12 -17
  82. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +6 -4
  83. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -0
  84. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +0 -48
  85. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
  86. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +196 -171
  87. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +6 -0
  88. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +9 -3
  89. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +25 -18
  90. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +27 -5
  91. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
  92. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +3 -0
  93. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  94. package/deps/rocksdb/rocksdb/logging/logging.h +13 -19
  95. package/deps/rocksdb/rocksdb/memory/arena.cc +4 -3
  96. package/deps/rocksdb/rocksdb/memory/arena_test.cc +30 -0
  97. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
  98. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
  99. package/deps/rocksdb/rocksdb/src.mk +2 -1
  100. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -2
  101. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -2
  102. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
  103. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
  104. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +142 -0
  105. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +241 -0
  106. package/deps/rocksdb/rocksdb/table/format.cc +24 -20
  107. package/deps/rocksdb/rocksdb/table/format.h +5 -2
  108. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +97 -115
  109. package/deps/rocksdb/rocksdb/table/merging_iterator.h +82 -1
  110. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  111. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
  112. package/deps/rocksdb/rocksdb/table/table_test.cc +7 -6
  113. package/deps/rocksdb/rocksdb/test_util/testutil.h +10 -0
  114. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +0 -6
  115. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
  116. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
  117. package/deps/rocksdb/rocksdb/util/status.cc +7 -0
  118. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +5 -0
  119. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -0
  120. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -67
  121. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -3
  122. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -0
  123. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +59 -0
  124. package/deps/rocksdb/rocksdb.gyp +2 -1
  125. package/package.json +1 -1
  126. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  127. package/prebuilds/linux-x64/node.napi.node +0 -0
  128. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +0 -580
  129. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -476
@@ -52,23 +52,15 @@ class CompactionPicker {
52
52
 
53
53
  // Pick level and inputs for a new compaction.
54
54
  //
55
- // `earliest_mem_seqno` is the earliest seqno of unflushed memtables.
56
- // It is needed to compare with compaction input SST files' largest seqnos
57
- // in order to exclude those of seqnos potentially overlap with memtables'
58
- // seqnos when doing compaction to L0. This will avoid creating a SST files in
59
- // L0 newer than a unflushed memtable. Such SST file can exist in the first
60
- // place when it's ingested or resulted from compaction involving files
61
- // ingested.
62
- //
63
55
  // Returns nullptr if there is no compaction to be done.
64
56
  // Otherwise returns a pointer to a heap-allocated object that
65
57
  // describes the compaction. Caller should delete the result.
66
- virtual Compaction* PickCompaction(
67
- const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
68
- const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
69
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) = 0;
58
+ virtual Compaction* PickCompaction(const std::string& cf_name,
59
+ const MutableCFOptions& mutable_cf_options,
60
+ const MutableDBOptions& mutable_db_options,
61
+ VersionStorageInfo* vstorage,
62
+ LogBuffer* log_buffer) = 0;
70
63
 
71
- // `earliest_mem_seqno`: see PickCompaction() API
72
64
  // Return a compaction object for compacting the range [begin,end] in
73
65
  // the specified level. Returns nullptr if there is nothing in that
74
66
  // level that overlaps the specified range. Caller should delete
@@ -87,8 +79,7 @@ class CompactionPicker {
87
79
  const CompactRangeOptions& compact_range_options,
88
80
  const InternalKey* begin, const InternalKey* end,
89
81
  InternalKey** compaction_end, bool* manual_conflict,
90
- uint64_t max_file_num_to_ignore, const std::string& trim_ts,
91
- const SequenceNumber earliest_mem_seqno);
82
+ uint64_t max_file_num_to_ignore, const std::string& trim_ts);
92
83
 
93
84
  // The maximum allowed output level. Default value is NumberLevels() - 1.
94
85
  virtual int MaxOutputLevel() const { return NumberLevels() - 1; }
@@ -102,17 +93,10 @@ class CompactionPicker {
102
93
  // into a valid one by adding more files, the function will return a
103
94
  // non-ok status with specific reason.
104
95
  //
105
- // Cases of returning non-ok status include but not limited to:
106
- // - When output_level == 0 and input_files contains sst files
107
- // of largest seqno greater than `earliest_mem_seqno`. This will
108
- // avoid creating a SST files in L0 newer than a unflushed memtable.
109
- // Such SST file can exist in the first place when it's ingested or
110
- // resulted from compaction involving files ingested.
111
96
  #ifndef ROCKSDB_LITE
112
- Status SanitizeCompactionInputFiles(
113
- std::unordered_set<uint64_t>* input_files,
114
- const ColumnFamilyMetaData& cf_meta, const int output_level,
115
- const SequenceNumber earliest_mem_seqno) const;
97
+ Status SanitizeCompactionInputFiles(std::unordered_set<uint64_t>* input_files,
98
+ const ColumnFamilyMetaData& cf_meta,
99
+ const int output_level) const;
116
100
  #endif // ROCKSDB_LITE
117
101
 
118
102
  // Free up the files that participated in a compaction
@@ -248,8 +232,7 @@ class CompactionPicker {
248
232
  #ifndef ROCKSDB_LITE
249
233
  virtual Status SanitizeCompactionInputFilesForAllLevels(
250
234
  std::unordered_set<uint64_t>* input_files,
251
- const ColumnFamilyMetaData& cf_meta, const int output_level,
252
- const SequenceNumber earliest_mem_seqno) const;
235
+ const ColumnFamilyMetaData& cf_meta, const int output_level) const;
253
236
  #endif // ROCKSDB_LITE
254
237
 
255
238
  // Keeps track of all compactions that are running on Level0.
@@ -274,27 +257,27 @@ class NullCompactionPicker : public CompactionPicker {
274
257
  virtual ~NullCompactionPicker() {}
275
258
 
276
259
  // Always return "nullptr"
277
- Compaction* PickCompaction(
278
- const std::string& /*cf_name*/,
279
- const MutableCFOptions& /*mutable_cf_options*/,
280
- const MutableDBOptions& /*mutable_db_options*/,
281
- VersionStorageInfo* /*vstorage*/, LogBuffer* /* log_buffer */,
282
- const SequenceNumber /* earliest_mem_seqno */) override {
260
+ Compaction* PickCompaction(const std::string& /*cf_name*/,
261
+ const MutableCFOptions& /*mutable_cf_options*/,
262
+ const MutableDBOptions& /*mutable_db_options*/,
263
+ VersionStorageInfo* /*vstorage*/,
264
+ LogBuffer* /* log_buffer */) override {
283
265
  return nullptr;
284
266
  }
285
267
 
286
268
  // Always return "nullptr"
287
- Compaction* CompactRange(
288
- const std::string& /*cf_name*/,
289
- const MutableCFOptions& /*mutable_cf_options*/,
290
- const MutableDBOptions& /*mutable_db_options*/,
291
- VersionStorageInfo* /*vstorage*/, int /*input_level*/,
292
- int /*output_level*/,
293
- const CompactRangeOptions& /*compact_range_options*/,
294
- const InternalKey* /*begin*/, const InternalKey* /*end*/,
295
- InternalKey** /*compaction_end*/, bool* /*manual_conflict*/,
296
- uint64_t /*max_file_num_to_ignore*/, const std::string& /*trim_ts*/,
297
- const SequenceNumber /* earliest_mem_seqno */) override {
269
+ Compaction* CompactRange(const std::string& /*cf_name*/,
270
+ const MutableCFOptions& /*mutable_cf_options*/,
271
+ const MutableDBOptions& /*mutable_db_options*/,
272
+ VersionStorageInfo* /*vstorage*/,
273
+ int /*input_level*/, int /*output_level*/,
274
+ const CompactRangeOptions& /*compact_range_options*/,
275
+ const InternalKey* /*begin*/,
276
+ const InternalKey* /*end*/,
277
+ InternalKey** /*compaction_end*/,
278
+ bool* /*manual_conflict*/,
279
+ uint64_t /*max_file_num_to_ignore*/,
280
+ const std::string& /*trim_ts*/) override {
298
281
  return nullptr;
299
282
  }
300
283
 
@@ -321,14 +304,12 @@ class NullCompactionPicker : public CompactionPicker {
321
304
  // initialized with corresponding input
322
305
  // files. Cannot be nullptr.
323
306
  //
324
- // @param earliest_mem_seqno See PickCompaction() API
325
307
  // @return true iff compaction was found.
326
308
  bool FindIntraL0Compaction(const std::vector<FileMetaData*>& level_files,
327
309
  size_t min_files_to_compact,
328
310
  uint64_t max_compact_bytes_per_del_file,
329
311
  uint64_t max_compaction_bytes,
330
- CompactionInputFiles* comp_inputs,
331
- const SequenceNumber earliest_mem_seqno);
312
+ CompactionInputFiles* comp_inputs);
332
313
 
333
314
  CompressionType GetCompressionType(const VersionStorageInfo* vstorage,
334
315
  const MutableCFOptions& mutable_cf_options,
@@ -139,7 +139,7 @@ Compaction* FIFOCompactionPicker::PickTTLCompaction(
139
139
  Compaction* FIFOCompactionPicker::PickSizeCompaction(
140
140
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
141
141
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
142
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
142
+ LogBuffer* log_buffer) {
143
143
  // compute the total size and identify the last non-empty level
144
144
  int last_level = 0;
145
145
  uint64_t total_size = 0;
@@ -176,8 +176,7 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
176
176
  .level0_file_num_compaction_trigger /* min_files_to_compact */
177
177
  ,
178
178
  max_compact_bytes_per_del_file,
179
- mutable_cf_options.max_compaction_bytes, &comp_inputs,
180
- earliest_mem_seqno)) {
179
+ mutable_cf_options.max_compaction_bytes, &comp_inputs)) {
181
180
  Compaction* c = new Compaction(
182
181
  vstorage, ioptions_, mutable_cf_options, mutable_db_options,
183
182
  {comp_inputs}, 0, 16 * 1024 * 1024 /* output file size limit */,
@@ -233,7 +232,8 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
233
232
  break;
234
233
  }
235
234
  }
236
- } else {
235
+ } else if (total_size >
236
+ mutable_cf_options.compaction_options_fifo.max_table_files_size) {
237
237
  // If the last level is non-L0, we actually don't know which file is
238
238
  // logically the oldest since the file creation time only represents
239
239
  // when this file was compacted to this level, which is independent
@@ -248,15 +248,27 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
248
248
  inputs[0].files.push_back(f);
249
249
  char tmp_fsize[16];
250
250
  AppendHumanBytes(f->fd.GetFileSize(), tmp_fsize, sizeof(tmp_fsize));
251
- ROCKS_LOG_BUFFER(log_buffer,
252
- "[%s] FIFO compaction: picking file %" PRIu64
253
- " with size %s for deletion",
254
- cf_name.c_str(), f->fd.GetNumber(), tmp_fsize);
251
+ ROCKS_LOG_BUFFER(
252
+ log_buffer,
253
+ "[%s] FIFO compaction: picking file %" PRIu64
254
+ " with size %s for deletion under total size %" PRIu64
255
+ " vs max table files size %" PRIu64,
256
+ cf_name.c_str(), f->fd.GetNumber(), tmp_fsize, total_size,
257
+ mutable_cf_options.compaction_options_fifo.max_table_files_size);
258
+
255
259
  if (total_size <=
256
260
  mutable_cf_options.compaction_options_fifo.max_table_files_size) {
257
261
  break;
258
262
  }
259
263
  }
264
+ } else {
265
+ ROCKS_LOG_BUFFER(
266
+ log_buffer,
267
+ "[%s] FIFO compaction: nothing to do. Total size %" PRIu64
268
+ ", max size %" PRIu64 "\n",
269
+ cf_name.c_str(), total_size,
270
+ mutable_cf_options.compaction_options_fifo.max_table_files_size);
271
+ return nullptr;
260
272
  }
261
273
 
262
274
  Compaction* c = new Compaction(
@@ -276,8 +288,7 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
276
288
  Compaction* FIFOCompactionPicker::PickCompactionToWarm(
277
289
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
278
290
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
279
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
280
- TEST_SYNC_POINT("PickCompactionToWarm");
291
+ LogBuffer* log_buffer) {
281
292
  if (mutable_cf_options.compaction_options_fifo.age_for_warm == 0) {
282
293
  return nullptr;
283
294
  }
@@ -301,8 +312,6 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
301
312
  cf_name.c_str(), status.ToString().c_str());
302
313
  return nullptr;
303
314
  }
304
- TEST_SYNC_POINT_CALLBACK("PickCompactionToWarm::BeforeGetCurrentTime",
305
- &_current_time);
306
315
  const uint64_t current_time = static_cast<uint64_t>(_current_time);
307
316
 
308
317
  if (!level0_compactions_in_progress_.empty()) {
@@ -349,8 +358,7 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
349
358
  // for warm tier.
350
359
  break;
351
360
  }
352
- if (prev_file != nullptr &&
353
- prev_file->fd.largest_seqno <= earliest_mem_seqno) {
361
+ if (prev_file != nullptr) {
354
362
  compaction_size += prev_file->fd.GetFileSize();
355
363
  if (compaction_size > mutable_cf_options.max_compaction_bytes) {
356
364
  break;
@@ -394,7 +402,7 @@ Compaction* FIFOCompactionPicker::PickCompactionToWarm(
394
402
  Compaction* FIFOCompactionPicker::PickCompaction(
395
403
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
396
404
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
397
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
405
+ LogBuffer* log_buffer) {
398
406
  Compaction* c = nullptr;
399
407
  if (mutable_cf_options.ttl > 0) {
400
408
  c = PickTTLCompaction(cf_name, mutable_cf_options, mutable_db_options,
@@ -402,11 +410,11 @@ Compaction* FIFOCompactionPicker::PickCompaction(
402
410
  }
403
411
  if (c == nullptr) {
404
412
  c = PickSizeCompaction(cf_name, mutable_cf_options, mutable_db_options,
405
- vstorage, log_buffer, earliest_mem_seqno);
413
+ vstorage, log_buffer);
406
414
  }
407
415
  if (c == nullptr) {
408
416
  c = PickCompactionToWarm(cf_name, mutable_cf_options, mutable_db_options,
409
- vstorage, log_buffer, earliest_mem_seqno);
417
+ vstorage, log_buffer);
410
418
  }
411
419
  RegisterCompaction(c);
412
420
  return c;
@@ -419,8 +427,7 @@ Compaction* FIFOCompactionPicker::CompactRange(
419
427
  const CompactRangeOptions& /*compact_range_options*/,
420
428
  const InternalKey* /*begin*/, const InternalKey* /*end*/,
421
429
  InternalKey** compaction_end, bool* /*manual_conflict*/,
422
- uint64_t /*max_file_num_to_ignore*/, const std::string& /*trim_ts*/,
423
- const SequenceNumber earliest_mem_seqno) {
430
+ uint64_t /*max_file_num_to_ignore*/, const std::string& /*trim_ts*/) {
424
431
  #ifdef NDEBUG
425
432
  (void)input_level;
426
433
  (void)output_level;
@@ -429,9 +436,8 @@ Compaction* FIFOCompactionPicker::CompactRange(
429
436
  assert(output_level == 0);
430
437
  *compaction_end = nullptr;
431
438
  LogBuffer log_buffer(InfoLogLevel::INFO_LEVEL, ioptions_.logger);
432
- Compaction* c =
433
- PickCompaction(cf_name, mutable_cf_options, mutable_db_options, vstorage,
434
- &log_buffer, earliest_mem_seqno);
439
+ Compaction* c = PickCompaction(cf_name, mutable_cf_options,
440
+ mutable_db_options, vstorage, &log_buffer);
435
441
  log_buffer.FlushBufferToLog();
436
442
  return c;
437
443
  }
@@ -19,15 +19,12 @@ class FIFOCompactionPicker : public CompactionPicker {
19
19
  const InternalKeyComparator* icmp)
20
20
  : CompactionPicker(ioptions, icmp) {}
21
21
 
22
- virtual Compaction* PickCompaction(
23
- const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
24
- const MutableDBOptions& mutable_db_options, VersionStorageInfo* version,
25
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) override;
22
+ virtual Compaction* PickCompaction(const std::string& cf_name,
23
+ const MutableCFOptions& mutable_cf_options,
24
+ const MutableDBOptions& mutable_db_options,
25
+ VersionStorageInfo* version,
26
+ LogBuffer* log_buffer) override;
26
27
 
27
- // `earliest_mem_seqno`: see PickCompaction() API for more. In FIFO's
28
- // implementation of CompactRange(), different from others, we will not return
29
- // `nullptr` right away when intput files of compaction to L0 has seqnos
30
- // potentially overlapping with memtable's but exlucde those files.
31
28
  virtual Compaction* CompactRange(
32
29
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
33
30
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
@@ -35,8 +32,7 @@ class FIFOCompactionPicker : public CompactionPicker {
35
32
  const CompactRangeOptions& compact_range_options,
36
33
  const InternalKey* begin, const InternalKey* end,
37
34
  InternalKey** compaction_end, bool* manual_conflict,
38
- uint64_t max_file_num_to_ignore, const std::string& trim_ts,
39
- const SequenceNumber earliest_mem_seqno) override;
35
+ uint64_t max_file_num_to_ignore, const std::string& trim_ts) override;
40
36
 
41
37
  // The maximum allowed output level. Always returns 0.
42
38
  virtual int MaxOutputLevel() const override { return 0; }
@@ -55,15 +51,13 @@ class FIFOCompactionPicker : public CompactionPicker {
55
51
  const MutableCFOptions& mutable_cf_options,
56
52
  const MutableDBOptions& mutable_db_options,
57
53
  VersionStorageInfo* version,
58
- LogBuffer* log_buffer,
59
- SequenceNumber earliest_mem_seqno);
54
+ LogBuffer* log_buffer);
60
55
 
61
56
  Compaction* PickCompactionToWarm(const std::string& cf_name,
62
57
  const MutableCFOptions& mutable_cf_options,
63
58
  const MutableDBOptions& mutable_db_options,
64
59
  VersionStorageInfo* version,
65
- LogBuffer* log_buffer,
66
- const SequenceNumber earliest_mem_seqno);
60
+ LogBuffer* log_buffer);
67
61
  };
68
62
  } // namespace ROCKSDB_NAMESPACE
69
63
  #endif // !ROCKSDB_LITE
@@ -50,7 +50,6 @@ class LevelCompactionBuilder {
50
50
  public:
51
51
  LevelCompactionBuilder(const std::string& cf_name,
52
52
  VersionStorageInfo* vstorage,
53
- const SequenceNumber earliest_mem_seqno,
54
53
  CompactionPicker* compaction_picker,
55
54
  LogBuffer* log_buffer,
56
55
  const MutableCFOptions& mutable_cf_options,
@@ -58,7 +57,6 @@ class LevelCompactionBuilder {
58
57
  const MutableDBOptions& mutable_db_options)
59
58
  : cf_name_(cf_name),
60
59
  vstorage_(vstorage),
61
- earliest_mem_seqno_(earliest_mem_seqno),
62
60
  compaction_picker_(compaction_picker),
63
61
  log_buffer_(log_buffer),
64
62
  mutable_cf_options_(mutable_cf_options),
@@ -122,7 +120,6 @@ class LevelCompactionBuilder {
122
120
 
123
121
  const std::string& cf_name_;
124
122
  VersionStorageInfo* vstorage_;
125
- const SequenceNumber earliest_mem_seqno_;
126
123
  CompactionPicker* compaction_picker_;
127
124
  LogBuffer* log_buffer_;
128
125
  int start_level_ = -1;
@@ -196,7 +193,10 @@ void LevelCompactionBuilder::SetupInitialFiles() {
196
193
  }
197
194
  output_level_ =
198
195
  (start_level_ == 0) ? vstorage_->base_level() : start_level_ + 1;
199
- if (PickFileToCompact()) {
196
+ bool picked_file_to_compact = PickFileToCompact();
197
+ TEST_SYNC_POINT_CALLBACK("PostPickFileToCompact",
198
+ &picked_file_to_compact);
199
+ if (picked_file_to_compact) {
200
200
  // found the compaction!
201
201
  if (start_level_ == 0) {
202
202
  // L0 score = `num L0 files` / `level0_file_num_compaction_trigger`
@@ -825,16 +825,16 @@ bool LevelCompactionBuilder::PickIntraL0Compaction() {
825
825
  return FindIntraL0Compaction(level_files, kMinFilesForIntraL0Compaction,
826
826
  std::numeric_limits<uint64_t>::max(),
827
827
  mutable_cf_options_.max_compaction_bytes,
828
- &start_level_inputs_, earliest_mem_seqno_);
828
+ &start_level_inputs_);
829
829
  }
830
830
  } // namespace
831
831
 
832
832
  Compaction* LevelCompactionPicker::PickCompaction(
833
833
  const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
834
834
  const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
835
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) {
836
- LevelCompactionBuilder builder(cf_name, vstorage, earliest_mem_seqno, this,
837
- log_buffer, mutable_cf_options, ioptions_,
835
+ LogBuffer* log_buffer) {
836
+ LevelCompactionBuilder builder(cf_name, vstorage, this, log_buffer,
837
+ mutable_cf_options, ioptions_,
838
838
  mutable_db_options);
839
839
  return builder.PickCompaction();
840
840
  }
@@ -20,10 +20,11 @@ class LevelCompactionPicker : public CompactionPicker {
20
20
  LevelCompactionPicker(const ImmutableOptions& ioptions,
21
21
  const InternalKeyComparator* icmp)
22
22
  : CompactionPicker(ioptions, icmp) {}
23
- virtual Compaction* PickCompaction(
24
- const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
25
- const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
26
- LogBuffer* log_buffer, const SequenceNumber earliest_mem_seqno) override;
23
+ virtual Compaction* PickCompaction(const std::string& cf_name,
24
+ const MutableCFOptions& mutable_cf_options,
25
+ const MutableDBOptions& mutable_db_options,
26
+ VersionStorageInfo* vstorage,
27
+ LogBuffer* log_buffer) override;
27
28
 
28
29
  virtual bool NeedsCompaction(
29
30
  const VersionStorageInfo* vstorage) const override;