@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
|
@@ -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_) {
|
|
@@ -734,12 +740,13 @@ Status VersionEditHandlerPointInTime::MaybeCreateVersion(
|
|
|
734
740
|
assert(!cfd->ioptions()->cf_paths.empty());
|
|
735
741
|
Status s;
|
|
736
742
|
for (const auto& elem : edit.GetNewFiles()) {
|
|
743
|
+
int level = elem.first;
|
|
737
744
|
const FileMetaData& meta = elem.second;
|
|
738
745
|
const FileDescriptor& fd = meta.fd;
|
|
739
746
|
uint64_t file_num = fd.GetNumber();
|
|
740
747
|
const std::string fpath =
|
|
741
748
|
MakeTableFileName(cfd->ioptions()->cf_paths[0].path, file_num);
|
|
742
|
-
s = VerifyFile(fpath, meta);
|
|
749
|
+
s = VerifyFile(cfd, fpath, level, meta);
|
|
743
750
|
if (s.IsPathNotFound() || s.IsNotFound() || s.IsCorruption()) {
|
|
744
751
|
missing_files.insert(file_num);
|
|
745
752
|
s = Status::OK();
|
|
@@ -803,7 +810,20 @@ Status VersionEditHandlerPointInTime::MaybeCreateVersion(
|
|
|
803
810
|
|
|
804
811
|
auto* version = new Version(cfd, version_set_, version_set_->file_options_,
|
|
805
812
|
*cfd->GetLatestMutableCFOptions(), io_tracer_,
|
|
806
|
-
version_set_->current_version_number_
|
|
813
|
+
version_set_->current_version_number_++,
|
|
814
|
+
epoch_number_requirement_);
|
|
815
|
+
s = builder->LoadTableHandlers(
|
|
816
|
+
cfd->internal_stats(),
|
|
817
|
+
version_set_->db_options_->max_file_opening_threads, false, true,
|
|
818
|
+
cfd->GetLatestMutableCFOptions()->prefix_extractor,
|
|
819
|
+
MaxFileSizeForL0MetaPin(*cfd->GetLatestMutableCFOptions()));
|
|
820
|
+
if (!s.ok()) {
|
|
821
|
+
delete version;
|
|
822
|
+
if (s.IsCorruption()) {
|
|
823
|
+
s = Status::OK();
|
|
824
|
+
}
|
|
825
|
+
return s;
|
|
826
|
+
}
|
|
807
827
|
s = builder->SaveTo(version->storage_info());
|
|
808
828
|
if (s.ok()) {
|
|
809
829
|
version->PrepareAppend(
|
|
@@ -823,9 +843,11 @@ Status VersionEditHandlerPointInTime::MaybeCreateVersion(
|
|
|
823
843
|
return s;
|
|
824
844
|
}
|
|
825
845
|
|
|
826
|
-
Status VersionEditHandlerPointInTime::VerifyFile(
|
|
846
|
+
Status VersionEditHandlerPointInTime::VerifyFile(ColumnFamilyData* cfd,
|
|
847
|
+
const std::string& fpath,
|
|
848
|
+
int level,
|
|
827
849
|
const FileMetaData& fmeta) {
|
|
828
|
-
return version_set_->VerifyFileMetadata(fpath, fmeta);
|
|
850
|
+
return version_set_->VerifyFileMetadata(cfd, fpath, level, fmeta);
|
|
829
851
|
}
|
|
830
852
|
|
|
831
853
|
Status VersionEditHandlerPointInTime::VerifyBlobFile(
|
|
@@ -843,6 +865,12 @@ Status VersionEditHandlerPointInTime::VerifyBlobFile(
|
|
|
843
865
|
return s;
|
|
844
866
|
}
|
|
845
867
|
|
|
868
|
+
Status VersionEditHandlerPointInTime::LoadTables(
|
|
869
|
+
ColumnFamilyData* /*cfd*/, bool /*prefetch_index_and_filter_in_cache*/,
|
|
870
|
+
bool /*is_initial_load*/) {
|
|
871
|
+
return Status::OK();
|
|
872
|
+
}
|
|
873
|
+
|
|
846
874
|
Status ManifestTailer::Initialize() {
|
|
847
875
|
if (Mode::kRecovery == mode_) {
|
|
848
876
|
return VersionEditHandler::Initialize();
|
|
@@ -930,9 +958,11 @@ void ManifestTailer::CheckIterationResult(const log::Reader& reader,
|
|
|
930
958
|
}
|
|
931
959
|
}
|
|
932
960
|
|
|
933
|
-
Status ManifestTailer::VerifyFile(
|
|
961
|
+
Status ManifestTailer::VerifyFile(ColumnFamilyData* cfd,
|
|
962
|
+
const std::string& fpath, int level,
|
|
934
963
|
const FileMetaData& fmeta) {
|
|
935
|
-
Status s =
|
|
964
|
+
Status s =
|
|
965
|
+
VersionEditHandlerPointInTime::VerifyFile(cfd, fpath, level, fmeta);
|
|
936
966
|
// TODO: Open file or create hard link to prevent the file from being
|
|
937
967
|
// deleted.
|
|
938
968
|
return s;
|
|
@@ -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
|
|
|
@@ -164,9 +169,9 @@ class VersionEditHandler : public VersionEditHandlerBase {
|
|
|
164
169
|
ColumnFamilyData* cfd,
|
|
165
170
|
bool force_create_version);
|
|
166
171
|
|
|
167
|
-
Status LoadTables(ColumnFamilyData* cfd,
|
|
168
|
-
|
|
169
|
-
|
|
172
|
+
virtual Status LoadTables(ColumnFamilyData* cfd,
|
|
173
|
+
bool prefetch_index_and_filter_in_cache,
|
|
174
|
+
bool is_initial_load);
|
|
170
175
|
|
|
171
176
|
virtual bool MustOpenAllColumnFamilies() const { return !read_only_; }
|
|
172
177
|
|
|
@@ -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:
|
|
@@ -213,11 +221,15 @@ class VersionEditHandlerPointInTime : public VersionEditHandler {
|
|
|
213
221
|
ColumnFamilyData* DestroyCfAndCleanup(const VersionEdit& edit) override;
|
|
214
222
|
Status MaybeCreateVersion(const VersionEdit& edit, ColumnFamilyData* cfd,
|
|
215
223
|
bool force_create_version) override;
|
|
216
|
-
virtual Status VerifyFile(const std::string& fpath,
|
|
217
|
-
const FileMetaData& fmeta);
|
|
224
|
+
virtual Status VerifyFile(ColumnFamilyData* cfd, const std::string& fpath,
|
|
225
|
+
int level, const FileMetaData& fmeta);
|
|
218
226
|
virtual Status VerifyBlobFile(ColumnFamilyData* cfd, uint64_t blob_file_num,
|
|
219
227
|
const BlobFileAddition& blob_addition);
|
|
220
228
|
|
|
229
|
+
Status LoadTables(ColumnFamilyData* cfd,
|
|
230
|
+
bool prefetch_index_and_filter_in_cache,
|
|
231
|
+
bool is_initial_load) override;
|
|
232
|
+
|
|
221
233
|
std::unordered_map<uint32_t, Version*> versions_;
|
|
222
234
|
};
|
|
223
235
|
|
|
@@ -225,9 +237,12 @@ class ManifestTailer : public VersionEditHandlerPointInTime {
|
|
|
225
237
|
public:
|
|
226
238
|
explicit ManifestTailer(std::vector<ColumnFamilyDescriptor> column_families,
|
|
227
239
|
VersionSet* version_set,
|
|
228
|
-
const std::shared_ptr<IOTracer>& io_tracer
|
|
240
|
+
const std::shared_ptr<IOTracer>& io_tracer,
|
|
241
|
+
EpochNumberRequirement epoch_number_requirement =
|
|
242
|
+
EpochNumberRequirement::kMustPresent)
|
|
229
243
|
: VersionEditHandlerPointInTime(/*read_only=*/false, column_families,
|
|
230
|
-
version_set, io_tracer
|
|
244
|
+
version_set, io_tracer,
|
|
245
|
+
epoch_number_requirement),
|
|
231
246
|
mode_(Mode::kRecovery) {}
|
|
232
247
|
|
|
233
248
|
void PrepareToReadNewManifest() {
|
|
@@ -250,7 +265,7 @@ class ManifestTailer : public VersionEditHandlerPointInTime {
|
|
|
250
265
|
|
|
251
266
|
void CheckIterationResult(const log::Reader& reader, Status* s) override;
|
|
252
267
|
|
|
253
|
-
Status VerifyFile(const std::string& fpath,
|
|
268
|
+
Status VerifyFile(ColumnFamilyData* cfd, const std::string& fpath, int level,
|
|
254
269
|
const FileMetaData& fmeta) override;
|
|
255
270
|
|
|
256
271
|
enum Mode : uint8_t {
|
|
@@ -43,7 +43,8 @@ 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,
|
|
46
|
+
kInvalidBlobFileNumber, 888, 678,
|
|
47
|
+
kBig + 300 + i /* epoch_number */, "234", "crc32c",
|
|
47
48
|
kNullUniqueId64x2);
|
|
48
49
|
edit.DeleteFile(4, kBig + 700 + i);
|
|
49
50
|
}
|
|
@@ -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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
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);
|
|
210
212
|
std::string buffer;
|
|
211
213
|
ASSERT_TRUE(!edit.EncodeTo(&buffer));
|
|
212
214
|
}
|