@nxtedition/rocksdb 8.1.4 → 8.1.6
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 +21 -0
- package/deps/rocksdb/rocksdb/Makefile +15 -3
- package/deps/rocksdb/rocksdb/TARGETS +6 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +32 -35
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +0 -30
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +0 -83
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +13 -14
- package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +40 -0
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +14 -20
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +8 -9
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +5 -4
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +124 -156
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +10 -26
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +11 -16
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +35 -32
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +19 -21
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +42 -30
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -8
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +91 -143
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +54 -60
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +37 -63
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +120 -106
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +14 -5
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -31
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +339 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +0 -48
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +18 -15
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +5 -26
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +7 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +6 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +19 -47
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +15 -22
- package/deps/rocksdb/rocksdb/db/builder.cc +24 -10
- package/deps/rocksdb/rocksdb/db/builder.h +2 -1
- package/deps/rocksdb/rocksdb/db/c.cc +15 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +3 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +11 -6
- package/deps/rocksdb/rocksdb/db/column_family.h +20 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +31 -34
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +3 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +21 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +4 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +9 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +275 -82
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -18
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +17 -16
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +19 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -22
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +81 -52
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +3 -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 +98 -9
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -28
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1022 -123
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +65 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +32 -21
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +32 -24
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +199 -77
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +3 -2
- 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 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +43 -23
- package/deps/rocksdb/rocksdb/db/db_iter.cc +8 -2
- package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +42 -0
- package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +155 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -12
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +230 -2
- package/deps/rocksdb/rocksdb/db/db_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +233 -8
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -10
- package/deps/rocksdb/rocksdb/db/db_test_util.h +39 -24
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +28 -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 +3 -2
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +3 -0
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +92 -13
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +38 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +14 -110
- package/deps/rocksdb/rocksdb/db/flush_job.cc +12 -10
- package/deps/rocksdb/rocksdb/db/flush_job.h +3 -2
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +29 -29
- 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/internal_stats.cc +11 -11
- package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
- package/deps/rocksdb/rocksdb/db/log_reader.cc +8 -6
- package/deps/rocksdb/rocksdb/db/log_test.cc +35 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +31 -6
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +47 -29
- package/deps/rocksdb/rocksdb/db/merge_helper.h +14 -6
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair.cc +65 -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 +41 -91
- package/deps/rocksdb/rocksdb/db/table_cache.h +17 -19
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -9
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +102 -52
- package/deps/rocksdb/rocksdb/db/version_builder.h +20 -0
- package/deps/rocksdb/rocksdb/db/version_builder_test.cc +218 -93
- package/deps/rocksdb/rocksdb/db/version_edit.cc +27 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +34 -9
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +13 -6
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +17 -6
- package/deps/rocksdb/rocksdb/db/version_edit_test.cc +19 -17
- package/deps/rocksdb/rocksdb/db/version_set.cc +160 -28
- package/deps/rocksdb/rocksdb/db/version_set.h +34 -4
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +65 -31
- package/deps/rocksdb/rocksdb/db/write_batch.cc +4 -1
- package/deps/rocksdb/rocksdb/db/write_thread.cc +5 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -32
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +8 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +11 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +16 -15
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +13 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -0
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +286 -217
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +137 -135
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +7 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +9 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +8 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +69 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/memory/arena.cc +23 -87
- package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
- package/deps/rocksdb/rocksdb/memory/arena_test.cc +90 -0
- package/deps/rocksdb/rocksdb/memory/memory_allocator.h +9 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -3
- package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
- package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
- package/deps/rocksdb/rocksdb/port/port_posix.h +2 -0
- package/{prebuilds → deps/rocksdb/rocksdb/prebuilds}/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +25 -67
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +18 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +159 -225
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +31 -50
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +52 -20
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +96 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +132 -0
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -5
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +1 -4
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -7
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +6 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -18
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +9 -5
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +3 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
- package/deps/rocksdb/rocksdb/table/format.cc +24 -20
- package/deps/rocksdb/rocksdb/table/format.h +6 -3
- package/deps/rocksdb/rocksdb/table/get_context.cc +12 -3
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +0 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +69 -35
- 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/block_cache_analyzer/block_cache_trace_analyzer_test.cc +66 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +9 -2
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +5 -0
- package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
- package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +1 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +20 -12
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/compression.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compression.h +11 -2
- package/deps/rocksdb/rocksdb/util/status.cc +7 -0
- package/deps/rocksdb/rocksdb/util/xxhash.h +1901 -887
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +250 -74
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +199 -4
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +35 -57
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +4 -5
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +39 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +9 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +11 -6
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +6 -5
- package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +0 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +10 -11
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +31 -31
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +111 -0
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +12 -3
- package/package.json +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +0 -182
|
@@ -88,6 +88,8 @@ enum NewFileCustomTag : uint32_t {
|
|
|
88
88
|
kMinTimestamp = 10,
|
|
89
89
|
kMaxTimestamp = 11,
|
|
90
90
|
kUniqueId = 12,
|
|
91
|
+
kEpochNumber = 13,
|
|
92
|
+
kCompensatedRangeDeletionSize = 14,
|
|
91
93
|
|
|
92
94
|
// If this bit for the custom tag is set, opening DB should fail if
|
|
93
95
|
// we don't know this field.
|
|
@@ -102,6 +104,10 @@ class VersionSet;
|
|
|
102
104
|
constexpr uint64_t kFileNumberMask = 0x3FFFFFFFFFFFFFFF;
|
|
103
105
|
constexpr uint64_t kUnknownOldestAncesterTime = 0;
|
|
104
106
|
constexpr uint64_t kUnknownFileCreationTime = 0;
|
|
107
|
+
constexpr uint64_t kUnknownEpochNumber = 0;
|
|
108
|
+
// If `Options::allow_ingest_behind` is true, this epoch number
|
|
109
|
+
// will be dedicated to files ingested behind.
|
|
110
|
+
constexpr uint64_t kReservedEpochNumberForFileIngestedBehind = 1;
|
|
105
111
|
|
|
106
112
|
extern uint64_t PackFileNumberAndPathId(uint64_t number, uint64_t path_id);
|
|
107
113
|
|
|
@@ -177,15 +183,22 @@ struct FileMetaData {
|
|
|
177
183
|
// Stats for compensating deletion entries during compaction
|
|
178
184
|
|
|
179
185
|
// File size compensated by deletion entry.
|
|
180
|
-
// This is
|
|
181
|
-
//
|
|
186
|
+
// This is used to compute a file's compaction priority, and is updated in
|
|
187
|
+
// Version::ComputeCompensatedSizes() first time when the file is created or
|
|
188
|
+
// loaded. After it is updated (!= 0), it is immutable.
|
|
182
189
|
uint64_t compensated_file_size = 0;
|
|
183
190
|
// These values can mutate, but they can only be read or written from
|
|
184
191
|
// single-threaded LogAndApply thread
|
|
185
192
|
uint64_t num_entries = 0; // the number of entries.
|
|
186
|
-
|
|
193
|
+
// The number of deletion entries, including range deletions.
|
|
194
|
+
uint64_t num_deletions = 0;
|
|
187
195
|
uint64_t raw_key_size = 0; // total uncompressed key size.
|
|
188
196
|
uint64_t raw_value_size = 0; // total uncompressed value size.
|
|
197
|
+
uint64_t num_range_deletions = 0;
|
|
198
|
+
// This is computed during Flush/Compaction, and is added to
|
|
199
|
+
// `compensated_file_size`. Currently, this estimates the size of keys in the
|
|
200
|
+
// next level covered by range tombstones in this file.
|
|
201
|
+
uint64_t compensated_range_deletion_size = 0;
|
|
189
202
|
|
|
190
203
|
int refs = 0; // Reference count
|
|
191
204
|
|
|
@@ -210,6 +223,12 @@ struct FileMetaData {
|
|
|
210
223
|
// Unix time when the SST file is created.
|
|
211
224
|
uint64_t file_creation_time = kUnknownFileCreationTime;
|
|
212
225
|
|
|
226
|
+
// The order of a file being flushed or ingested/imported.
|
|
227
|
+
// Compaction output file will be assigned with the minimum `epoch_number`
|
|
228
|
+
// among input files'.
|
|
229
|
+
// For L0, larger `epoch_number` indicates newer L0 file.
|
|
230
|
+
uint64_t epoch_number = kUnknownEpochNumber;
|
|
231
|
+
|
|
213
232
|
// File checksum
|
|
214
233
|
std::string file_checksum = kUnknownFileChecksum;
|
|
215
234
|
|
|
@@ -227,17 +246,20 @@ struct FileMetaData {
|
|
|
227
246
|
const SequenceNumber& largest_seq, bool marked_for_compact,
|
|
228
247
|
Temperature _temperature, uint64_t oldest_blob_file,
|
|
229
248
|
uint64_t _oldest_ancester_time, uint64_t _file_creation_time,
|
|
230
|
-
const std::string& _file_checksum,
|
|
249
|
+
uint64_t _epoch_number, const std::string& _file_checksum,
|
|
231
250
|
const std::string& _file_checksum_func_name,
|
|
232
|
-
UniqueId64x2 _unique_id
|
|
251
|
+
UniqueId64x2 _unique_id,
|
|
252
|
+
const uint64_t _compensated_range_deletion_size)
|
|
233
253
|
: fd(file, file_path_id, file_size, smallest_seq, largest_seq),
|
|
234
254
|
smallest(smallest_key),
|
|
235
255
|
largest(largest_key),
|
|
256
|
+
compensated_range_deletion_size(_compensated_range_deletion_size),
|
|
236
257
|
marked_for_compaction(marked_for_compact),
|
|
237
258
|
temperature(_temperature),
|
|
238
259
|
oldest_blob_file_number(oldest_blob_file),
|
|
239
260
|
oldest_ancester_time(_oldest_ancester_time),
|
|
240
261
|
file_creation_time(_file_creation_time),
|
|
262
|
+
epoch_number(_epoch_number),
|
|
241
263
|
file_checksum(_file_checksum),
|
|
242
264
|
file_checksum_func_name(_file_checksum_func_name),
|
|
243
265
|
unique_id(std::move(_unique_id)) {
|
|
@@ -260,6 +282,7 @@ struct FileMetaData {
|
|
|
260
282
|
if (largest.size() == 0 || icmp.Compare(largest, end) < 0) {
|
|
261
283
|
largest = end;
|
|
262
284
|
}
|
|
285
|
+
assert(icmp.Compare(smallest, largest) <= 0);
|
|
263
286
|
fd.smallest_seqno = std::min(fd.smallest_seqno, seqno);
|
|
264
287
|
fd.largest_seqno = std::max(fd.largest_seqno, seqno);
|
|
265
288
|
}
|
|
@@ -420,17 +443,19 @@ class VersionEdit {
|
|
|
420
443
|
const SequenceNumber& largest_seqno, bool marked_for_compaction,
|
|
421
444
|
Temperature temperature, uint64_t oldest_blob_file_number,
|
|
422
445
|
uint64_t oldest_ancester_time, uint64_t file_creation_time,
|
|
423
|
-
const std::string& file_checksum,
|
|
446
|
+
uint64_t epoch_number, const std::string& file_checksum,
|
|
424
447
|
const std::string& file_checksum_func_name,
|
|
425
|
-
const UniqueId64x2& unique_id
|
|
448
|
+
const UniqueId64x2& unique_id,
|
|
449
|
+
const uint64_t compensated_range_deletion_size) {
|
|
426
450
|
assert(smallest_seqno <= largest_seqno);
|
|
427
451
|
new_files_.emplace_back(
|
|
428
452
|
level,
|
|
429
453
|
FileMetaData(file, file_path_id, file_size, smallest, largest,
|
|
430
454
|
smallest_seqno, largest_seqno, marked_for_compaction,
|
|
431
455
|
temperature, oldest_blob_file_number, oldest_ancester_time,
|
|
432
|
-
file_creation_time,
|
|
433
|
-
unique_id
|
|
456
|
+
file_creation_time, epoch_number, file_checksum,
|
|
457
|
+
file_checksum_func_name, unique_id,
|
|
458
|
+
compensated_range_deletion_size));
|
|
434
459
|
if (!HasLastSequence() || largest_seqno > GetLastSequence()) {
|
|
435
460
|
SetLastSequence(largest_seqno);
|
|
436
461
|
}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
#include "db/blob/blob_file_reader.h"
|
|
16
16
|
#include "db/blob/blob_source.h"
|
|
17
|
+
#include "db/version_edit.h"
|
|
17
18
|
#include "logging/logging.h"
|
|
18
19
|
#include "monitoring/persistent_stats_history.h"
|
|
19
20
|
|
|
@@ -154,7 +155,7 @@ VersionEditHandler::VersionEditHandler(
|
|
|
154
155
|
bool read_only, std::vector<ColumnFamilyDescriptor> column_families,
|
|
155
156
|
VersionSet* version_set, bool track_missing_files,
|
|
156
157
|
bool no_error_if_files_missing, const std::shared_ptr<IOTracer>& io_tracer,
|
|
157
|
-
bool skip_load_table_files)
|
|
158
|
+
bool skip_load_table_files, EpochNumberRequirement epoch_number_requirement)
|
|
158
159
|
: VersionEditHandlerBase(),
|
|
159
160
|
read_only_(read_only),
|
|
160
161
|
column_families_(std::move(column_families)),
|
|
@@ -163,7 +164,8 @@ VersionEditHandler::VersionEditHandler(
|
|
|
163
164
|
no_error_if_files_missing_(no_error_if_files_missing),
|
|
164
165
|
io_tracer_(io_tracer),
|
|
165
166
|
skip_load_table_files_(skip_load_table_files),
|
|
166
|
-
initialized_(false)
|
|
167
|
+
initialized_(false),
|
|
168
|
+
epoch_number_requirement_(epoch_number_requirement) {
|
|
167
169
|
assert(version_set_ != nullptr);
|
|
168
170
|
}
|
|
169
171
|
|
|
@@ -431,6 +433,7 @@ void VersionEditHandler::CheckIterationResult(const log::Reader& reader,
|
|
|
431
433
|
}
|
|
432
434
|
}
|
|
433
435
|
}
|
|
436
|
+
|
|
434
437
|
if (s->ok()) {
|
|
435
438
|
for (auto* cfd : *(version_set_->column_family_set_)) {
|
|
436
439
|
if (cfd->IsDropped()) {
|
|
@@ -528,7 +531,8 @@ Status VersionEditHandler::MaybeCreateVersion(const VersionEdit& /*edit*/,
|
|
|
528
531
|
auto* builder = builder_iter->second->version_builder();
|
|
529
532
|
auto* v = new Version(cfd, version_set_, version_set_->file_options_,
|
|
530
533
|
*cfd->GetLatestMutableCFOptions(), io_tracer_,
|
|
531
|
-
version_set_->current_version_number_
|
|
534
|
+
version_set_->current_version_number_++,
|
|
535
|
+
epoch_number_requirement_);
|
|
532
536
|
s = builder->SaveTo(v->storage_info());
|
|
533
537
|
if (s.ok()) {
|
|
534
538
|
// Install new version
|
|
@@ -642,10 +646,12 @@ Status VersionEditHandler::ExtractInfoFromVersionEdit(ColumnFamilyData* cfd,
|
|
|
642
646
|
|
|
643
647
|
VersionEditHandlerPointInTime::VersionEditHandlerPointInTime(
|
|
644
648
|
bool read_only, std::vector<ColumnFamilyDescriptor> column_families,
|
|
645
|
-
VersionSet* version_set, const std::shared_ptr<IOTracer>& io_tracer
|
|
649
|
+
VersionSet* version_set, const std::shared_ptr<IOTracer>& io_tracer,
|
|
650
|
+
EpochNumberRequirement epoch_number_requirement)
|
|
646
651
|
: VersionEditHandler(read_only, column_families, version_set,
|
|
647
652
|
/*track_missing_files=*/true,
|
|
648
|
-
/*no_error_if_files_missing=*/true, io_tracer
|
|
653
|
+
/*no_error_if_files_missing=*/true, io_tracer,
|
|
654
|
+
epoch_number_requirement) {}
|
|
649
655
|
|
|
650
656
|
VersionEditHandlerPointInTime::~VersionEditHandlerPointInTime() {
|
|
651
657
|
for (const auto& elem : versions_) {
|
|
@@ -804,7 +810,8 @@ Status VersionEditHandlerPointInTime::MaybeCreateVersion(
|
|
|
804
810
|
|
|
805
811
|
auto* version = new Version(cfd, version_set_, version_set_->file_options_,
|
|
806
812
|
*cfd->GetLatestMutableCFOptions(), io_tracer_,
|
|
807
|
-
version_set_->current_version_number_
|
|
813
|
+
version_set_->current_version_number_++,
|
|
814
|
+
epoch_number_requirement_);
|
|
808
815
|
s = builder->LoadTableHandlers(
|
|
809
816
|
cfd->internal_stats(),
|
|
810
817
|
version_set_->db_options_->max_file_opening_threads, false, true,
|
|
@@ -110,10 +110,13 @@ class VersionEditHandler : public VersionEditHandlerBase {
|
|
|
110
110
|
const std::vector<ColumnFamilyDescriptor>& column_families,
|
|
111
111
|
VersionSet* version_set, bool track_missing_files,
|
|
112
112
|
bool no_error_if_files_missing,
|
|
113
|
-
const std::shared_ptr<IOTracer>& io_tracer
|
|
113
|
+
const std::shared_ptr<IOTracer>& io_tracer,
|
|
114
|
+
EpochNumberRequirement epoch_number_requirement =
|
|
115
|
+
EpochNumberRequirement::kMustPresent)
|
|
114
116
|
: VersionEditHandler(read_only, column_families, version_set,
|
|
115
117
|
track_missing_files, no_error_if_files_missing,
|
|
116
|
-
io_tracer, /*skip_load_table_files=*/false
|
|
118
|
+
io_tracer, /*skip_load_table_files=*/false,
|
|
119
|
+
epoch_number_requirement) {}
|
|
117
120
|
|
|
118
121
|
~VersionEditHandler() override {}
|
|
119
122
|
|
|
@@ -134,7 +137,9 @@ class VersionEditHandler : public VersionEditHandlerBase {
|
|
|
134
137
|
bool read_only, std::vector<ColumnFamilyDescriptor> column_families,
|
|
135
138
|
VersionSet* version_set, bool track_missing_files,
|
|
136
139
|
bool no_error_if_files_missing,
|
|
137
|
-
const std::shared_ptr<IOTracer>& io_tracer, bool skip_load_table_files
|
|
140
|
+
const std::shared_ptr<IOTracer>& io_tracer, bool skip_load_table_files,
|
|
141
|
+
EpochNumberRequirement epoch_number_requirement =
|
|
142
|
+
EpochNumberRequirement::kMustPresent);
|
|
138
143
|
|
|
139
144
|
Status ApplyVersionEdit(VersionEdit& edit, ColumnFamilyData** cfd) override;
|
|
140
145
|
|
|
@@ -189,6 +194,7 @@ class VersionEditHandler : public VersionEditHandlerBase {
|
|
|
189
194
|
bool skip_load_table_files_;
|
|
190
195
|
bool initialized_;
|
|
191
196
|
std::unique_ptr<std::unordered_map<uint32_t, std::string>> cf_to_cmp_names_;
|
|
197
|
+
EpochNumberRequirement epoch_number_requirement_;
|
|
192
198
|
|
|
193
199
|
private:
|
|
194
200
|
Status ExtractInfoFromVersionEdit(ColumnFamilyData* cfd,
|
|
@@ -205,7 +211,9 @@ class VersionEditHandlerPointInTime : public VersionEditHandler {
|
|
|
205
211
|
public:
|
|
206
212
|
VersionEditHandlerPointInTime(
|
|
207
213
|
bool read_only, std::vector<ColumnFamilyDescriptor> column_families,
|
|
208
|
-
VersionSet* version_set, const std::shared_ptr<IOTracer>& io_tracer
|
|
214
|
+
VersionSet* version_set, const std::shared_ptr<IOTracer>& io_tracer,
|
|
215
|
+
EpochNumberRequirement epoch_number_requirement =
|
|
216
|
+
EpochNumberRequirement::kMustPresent);
|
|
209
217
|
~VersionEditHandlerPointInTime() override;
|
|
210
218
|
|
|
211
219
|
protected:
|
|
@@ -229,9 +237,12 @@ class ManifestTailer : public VersionEditHandlerPointInTime {
|
|
|
229
237
|
public:
|
|
230
238
|
explicit ManifestTailer(std::vector<ColumnFamilyDescriptor> column_families,
|
|
231
239
|
VersionSet* version_set,
|
|
232
|
-
const std::shared_ptr<IOTracer>& io_tracer
|
|
240
|
+
const std::shared_ptr<IOTracer>& io_tracer,
|
|
241
|
+
EpochNumberRequirement epoch_number_requirement =
|
|
242
|
+
EpochNumberRequirement::kMustPresent)
|
|
233
243
|
: VersionEditHandlerPointInTime(/*read_only=*/false, column_families,
|
|
234
|
-
version_set, io_tracer
|
|
244
|
+
version_set, io_tracer,
|
|
245
|
+
epoch_number_requirement),
|
|
235
246
|
mode_(Mode::kRecovery) {}
|
|
236
247
|
|
|
237
248
|
void PrepareToReadNewManifest() {
|
|
@@ -43,8 +43,9 @@ TEST_F(VersionEditTest, EncodeDecode) {
|
|
|
43
43
|
InternalKey("foo", kBig + 500 + i, kTypeValue),
|
|
44
44
|
InternalKey("zoo", kBig + 600 + i, kTypeDeletion),
|
|
45
45
|
kBig + 500 + i, kBig + 600 + i, false, Temperature::kUnknown,
|
|
46
|
-
kInvalidBlobFileNumber, 888, 678,
|
|
47
|
-
|
|
46
|
+
kInvalidBlobFileNumber, 888, 678,
|
|
47
|
+
kBig + 300 + i /* epoch_number */, "234", "crc32c",
|
|
48
|
+
kNullUniqueId64x2, 0);
|
|
48
49
|
edit.DeleteFile(4, kBig + 700 + i);
|
|
49
50
|
}
|
|
50
51
|
|
|
@@ -63,25 +64,25 @@ TEST_F(VersionEditTest, EncodeDecodeNewFile4) {
|
|
|
63
64
|
InternalKey("zoo", kBig + 600, kTypeDeletion), kBig + 500,
|
|
64
65
|
kBig + 600, true, Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
65
66
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
66
|
-
kUnknownFileChecksum,
|
|
67
|
-
kNullUniqueId64x2);
|
|
67
|
+
300 /* epoch_number */, kUnknownFileChecksum,
|
|
68
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
68
69
|
edit.AddFile(4, 301, 3, 100, InternalKey("foo", kBig + 501, kTypeValue),
|
|
69
70
|
InternalKey("zoo", kBig + 601, kTypeDeletion), kBig + 501,
|
|
70
71
|
kBig + 601, false, Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
71
72
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
72
|
-
kUnknownFileChecksum,
|
|
73
|
-
kNullUniqueId64x2);
|
|
73
|
+
301 /* epoch_number */, kUnknownFileChecksum,
|
|
74
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
74
75
|
edit.AddFile(5, 302, 0, 100, InternalKey("foo", kBig + 502, kTypeValue),
|
|
75
76
|
InternalKey("zoo", kBig + 602, kTypeDeletion), kBig + 502,
|
|
76
77
|
kBig + 602, true, Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
77
|
-
666, 888, kUnknownFileChecksum,
|
|
78
|
-
kNullUniqueId64x2);
|
|
78
|
+
666, 888, 302 /* epoch_number */, kUnknownFileChecksum,
|
|
79
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
79
80
|
edit.AddFile(5, 303, 0, 100, InternalKey("foo", kBig + 503, kTypeBlobIndex),
|
|
80
81
|
InternalKey("zoo", kBig + 603, kTypeBlobIndex), kBig + 503,
|
|
81
82
|
kBig + 603, true, Temperature::kUnknown, 1001,
|
|
82
83
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
83
|
-
kUnknownFileChecksum,
|
|
84
|
-
kNullUniqueId64x2);
|
|
84
|
+
303 /* epoch_number */, kUnknownFileChecksum,
|
|
85
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
85
86
|
|
|
86
87
|
edit.DeleteFile(4, 700);
|
|
87
88
|
|
|
@@ -121,12 +122,13 @@ TEST_F(VersionEditTest, ForwardCompatibleNewFile4) {
|
|
|
121
122
|
InternalKey("zoo", kBig + 600, kTypeDeletion), kBig + 500,
|
|
122
123
|
kBig + 600, true, Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
123
124
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
124
|
-
kUnknownFileChecksum,
|
|
125
|
-
kNullUniqueId64x2);
|
|
125
|
+
300 /* epoch_number */, kUnknownFileChecksum,
|
|
126
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
126
127
|
edit.AddFile(4, 301, 3, 100, InternalKey("foo", kBig + 501, kTypeValue),
|
|
127
128
|
InternalKey("zoo", kBig + 601, kTypeDeletion), kBig + 501,
|
|
128
129
|
kBig + 601, false, Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
129
|
-
686, 868, "234", "crc32c",
|
|
130
|
+
686, 868, 301 /* epoch_number */, "234", "crc32c",
|
|
131
|
+
kNullUniqueId64x2, 0);
|
|
130
132
|
edit.DeleteFile(4, 700);
|
|
131
133
|
|
|
132
134
|
edit.SetComparatorName("foo");
|
|
@@ -174,8 +176,8 @@ TEST_F(VersionEditTest, NewFile4NotSupportedField) {
|
|
|
174
176
|
InternalKey("zoo", kBig + 600, kTypeDeletion), kBig + 500,
|
|
175
177
|
kBig + 600, true, Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
176
178
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
177
|
-
kUnknownFileChecksum,
|
|
178
|
-
kNullUniqueId64x2);
|
|
179
|
+
300 /* epoch_number */, kUnknownFileChecksum,
|
|
180
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
179
181
|
|
|
180
182
|
edit.SetComparatorName("foo");
|
|
181
183
|
edit.SetLogNumber(kBig + 100);
|
|
@@ -205,8 +207,8 @@ TEST_F(VersionEditTest, EncodeEmptyFile) {
|
|
|
205
207
|
edit.AddFile(0, 0, 0, 0, InternalKey(), InternalKey(), 0, 0, false,
|
|
206
208
|
Temperature::kUnknown, kInvalidBlobFileNumber,
|
|
207
209
|
kUnknownOldestAncesterTime, kUnknownFileCreationTime,
|
|
208
|
-
kUnknownFileChecksum,
|
|
209
|
-
kNullUniqueId64x2);
|
|
210
|
+
1 /*epoch_number*/, kUnknownFileChecksum,
|
|
211
|
+
kUnknownFileChecksumFuncName, kNullUniqueId64x2, 0);
|
|
210
212
|
std::string buffer;
|
|
211
213
|
ASSERT_TRUE(!edit.EncodeTo(&buffer));
|
|
212
214
|
}
|