@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.
- package/deps/rocksdb/rocksdb/CMakeLists.txt +2 -1
- package/deps/rocksdb/rocksdb/Makefile +2 -2
- package/deps/rocksdb/rocksdb/TARGETS +4 -2
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +0 -5
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +8 -29
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +146 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +13 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +20 -146
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +32 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +11 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +11 -9
- package/deps/rocksdb/rocksdb/db/column_family.h +20 -0
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +13 -33
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +27 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +2 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +65 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +10 -32
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +28 -47
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +28 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +170 -140
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +266 -138
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +86 -1
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +72 -5
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +119 -10
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +585 -264
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +46 -18
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +5 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +6 -15
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +8 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +10 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +250 -2
- package/deps/rocksdb/rocksdb/db/db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +307 -8
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +21 -0
- package/deps/rocksdb/rocksdb/db/dbformat.cc +25 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +5 -2
- package/deps/rocksdb/rocksdb/db/flush_job.cc +5 -2
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +4 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +56 -53
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +3 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/repair.cc +64 -22
- package/deps/rocksdb/rocksdb/db/repair_test.cc +54 -0
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
- package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -0
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +90 -43
- package/deps/rocksdb/rocksdb/db/version_builder.h +20 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +190 -67
- package/deps/rocksdb/rocksdb/db/version_edit.cc +15 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +16 -4
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +41 -11
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +27 -12
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +18 -16
- package/deps/rocksdb/rocksdb/db/version_set.cc +212 -35
- package/deps/rocksdb/rocksdb/db/version_set.h +34 -4
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +45 -25
- package/deps/rocksdb/rocksdb/db/write_thread.cc +5 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
- 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 +12 -17
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +6 -4
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +0 -48
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +196 -171
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +9 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +25 -18
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +27 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/logging/logging.h +13 -19
- package/deps/rocksdb/rocksdb/memory/arena.cc +4 -3
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +30 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
- package/deps/rocksdb/rocksdb/src.mk +2 -1
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -2
- 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/compaction_merging_iterator.cc +142 -0
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +241 -0
- package/deps/rocksdb/rocksdb/table/format.cc +24 -20
- package/deps/rocksdb/rocksdb/table/format.h +5 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +97 -115
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +82 -1
- 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 +7 -6
- package/deps/rocksdb/rocksdb/test_util/testutil.h +10 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +0 -6
- 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 +7 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +5 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -67
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -3
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +59 -0
- package/deps/rocksdb/rocksdb.gyp +2 -1
- 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/cache/fast_lru_cache.cc +0 -580
- 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
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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
|
-
|
|
114
|
-
|
|
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
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
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
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
|
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(
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
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_
|
|
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
|
|
836
|
-
LevelCompactionBuilder builder(cf_name, vstorage,
|
|
837
|
-
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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;
|