@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
@@ -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(const std::string& fpath,
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(const std::string& fpath,
961
+ Status ManifestTailer::VerifyFile(ColumnFamilyData* cfd,
962
+ const std::string& fpath, int level,
934
963
  const FileMetaData& fmeta) {
935
- Status s = VersionEditHandlerPointInTime::VerifyFile(fpath, fmeta);
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
- bool prefetch_index_and_filter_in_cache,
169
- bool is_initial_load);
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, "234", "crc32c",
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, kUnknownFileChecksumFuncName,
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, kUnknownFileChecksumFuncName,
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, kUnknownFileChecksumFuncName,
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, kUnknownFileChecksumFuncName,
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, kUnknownFileChecksumFuncName,
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", kNullUniqueId64x2);
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, kUnknownFileChecksumFuncName,
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, kUnknownFileChecksumFuncName,
209
- kNullUniqueId64x2);
210
+ 1 /*epoch_number*/, kUnknownFileChecksum,
211
+ kUnknownFileChecksumFuncName, kNullUniqueId64x2);
210
212
  std::string buffer;
211
213
  ASSERT_TRUE(!edit.EncodeTo(&buffer));
212
214
  }