@nxtedition/rocksdb 14.0.0 → 15.1.0

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 (102) hide show
  1. package/binding.cc +52 -179
  2. package/deps/rocksdb/rocksdb/BUCK +7 -0
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +29 -14
  4. package/deps/rocksdb/rocksdb/Directory.Build.props +9 -0
  5. package/deps/rocksdb/rocksdb/Makefile +6 -1
  6. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +4 -4
  7. package/deps/rocksdb/rocksdb/ccache_msvc_compiler.bat +1 -0
  8. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +17 -3
  9. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -3
  10. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +10 -0
  11. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +522 -60
  12. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +69 -10
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +443 -0
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +14 -3
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +5 -5
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +3 -6
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +1 -1
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +28 -5
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +4 -4
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +6 -3
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +455 -98
  23. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +4 -2
  24. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +13 -1
  25. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +146 -0
  26. package/deps/rocksdb/rocksdb/db/db_follower_test.cc +2 -2
  27. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +6 -0
  28. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +5 -2
  29. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +18 -19
  30. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +665 -14
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +83 -0
  33. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +68 -0
  34. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +101 -0
  35. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +44 -0
  36. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +1 -2
  37. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +22 -5
  38. package/deps/rocksdb/rocksdb/db/log_reader.h +4 -4
  39. package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
  40. package/deps/rocksdb/rocksdb/db/merge_helper.h +1 -1
  41. package/deps/rocksdb/rocksdb/db/version_edit.cc +477 -139
  42. package/deps/rocksdb/rocksdb/db/version_edit.h +228 -8
  43. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +333 -0
  44. package/deps/rocksdb/rocksdb/db/write_thread.h +1 -1
  45. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  46. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +247 -32
  47. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -0
  48. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.cc +61 -0
  49. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +17 -28
  50. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +16 -0
  51. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +6 -1
  52. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +46 -18
  53. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +18 -1
  54. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +8 -7
  55. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +4 -4
  56. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1 -0
  57. package/deps/rocksdb/rocksdb/file/filename.cc +40 -0
  58. package/deps/rocksdb/rocksdb/file/filename.h +14 -1
  59. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +4 -3
  60. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +2 -1
  61. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +26 -7
  62. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -3
  63. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +59 -0
  64. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  65. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +24 -0
  66. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +2 -1
  67. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +4 -0
  68. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +13 -8
  69. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -0
  70. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -0
  71. package/deps/rocksdb/rocksdb/options/options_test.cc +5 -0
  72. package/deps/rocksdb/rocksdb/src.mk +2 -0
  73. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +73 -16
  74. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +10 -5
  75. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +32 -0
  76. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +18 -27
  77. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +0 -3
  78. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +5 -1
  79. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +708 -217
  80. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +11 -6
  81. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +5 -3
  82. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +27 -19
  83. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +24 -6
  84. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +51 -18
  85. package/deps/rocksdb/rocksdb/table/block_based/index_builder_test.cc +183 -0
  86. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +4 -2
  87. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +0 -2
  88. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +8 -3
  89. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -1
  90. package/deps/rocksdb/rocksdb/table/table_test.cc +222 -36
  91. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +246 -6
  92. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +86 -0
  93. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +21 -0
  94. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  95. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -1
  96. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -0
  97. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +0 -2
  98. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +12 -12
  99. package/index.js +27 -37
  100. package/package.json +1 -1
  101. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  102. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -375,12 +375,13 @@ Compaction* CompactionPicker::PickCompactionForCompactFiles(
375
375
  // without configurable `CompressionOptions`, which is inconsistent.
376
376
  compression_type = compact_options.compression;
377
377
  }
378
+
378
379
  auto c = new Compaction(
379
380
  vstorage, ioptions_, mutable_cf_options, mutable_db_options, input_files,
380
381
  output_level, compact_options.output_file_size_limit,
381
382
  mutable_cf_options.max_compaction_bytes, output_path_id, compression_type,
382
383
  GetCompressionOptions(mutable_cf_options, vstorage, output_level),
383
- mutable_cf_options.default_write_temperature,
384
+ compact_options.output_temperature_override,
384
385
  compact_options.max_subcompactions,
385
386
  /* grandparents */ {}, earliest_snapshot, snapshot_checker,
386
387
  CompactionReason::kManualCompaction);
@@ -679,8 +680,7 @@ Compaction* CompactionPicker::PickCompactionForCompactRange(
679
680
  compact_range_options.target_path_id,
680
681
  GetCompressionType(vstorage, mutable_cf_options, output_level, 1),
681
682
  GetCompressionOptions(mutable_cf_options, vstorage, output_level),
682
- mutable_cf_options.default_write_temperature,
683
- compact_range_options.max_subcompactions,
683
+ Temperature::kUnknown, compact_range_options.max_subcompactions,
684
684
  /* grandparents */ {}, /* earliest_snapshot */ std::nullopt,
685
685
  /* snapshot_checker */ nullptr, CompactionReason::kManualCompaction,
686
686
  trim_ts, /* score */ -1,
@@ -871,8 +871,8 @@ Compaction* CompactionPicker::PickCompactionForCompactRange(
871
871
  GetCompressionType(vstorage, mutable_cf_options, output_level,
872
872
  vstorage->base_level()),
873
873
  GetCompressionOptions(mutable_cf_options, vstorage, output_level),
874
- mutable_cf_options.default_write_temperature,
875
- compact_range_options.max_subcompactions, std::move(grandparents),
874
+ Temperature::kUnknown, compact_range_options.max_subcompactions,
875
+ std::move(grandparents),
876
876
  /* earliest_snapshot */ std::nullopt, /* snapshot_checker */ nullptr,
877
877
  CompactionReason::kManualCompaction, trim_ts, /* score */ -1,
878
878
  /* l0_files_might_overlap */ true,
@@ -124,8 +124,7 @@ Compaction* FIFOCompactionPicker::PickTTLCompaction(
124
124
  Compaction* c = new Compaction(
125
125
  vstorage, ioptions_, mutable_cf_options, mutable_db_options,
126
126
  std::move(inputs), 0, 0, 0, 0, kNoCompression,
127
- mutable_cf_options.compression_opts,
128
- mutable_cf_options.default_write_temperature,
127
+ mutable_cf_options.compression_opts, Temperature::kUnknown,
129
128
  /* max_subcompactions */ 0, {}, /* earliest_snapshot */ std::nullopt,
130
129
  /* snapshot_checker */ nullptr, CompactionReason::kFIFOTtl,
131
130
  /* trim_ts */ "", vstorage->CompactionScore(0),
@@ -194,8 +193,7 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
194
193
  {comp_inputs}, 0, 16 * 1024 * 1024 /* output file size limit */,
195
194
  0 /* max compaction bytes, not applicable */,
196
195
  0 /* output path ID */, mutable_cf_options.compression,
197
- mutable_cf_options.compression_opts,
198
- mutable_cf_options.default_write_temperature,
196
+ mutable_cf_options.compression_opts, Temperature::kUnknown,
199
197
  0 /* max_subcompactions */, {},
200
198
  /* earliest_snapshot */ std::nullopt,
201
199
  /* snapshot_checker */ nullptr,
@@ -294,8 +292,7 @@ Compaction* FIFOCompactionPicker::PickSizeCompaction(
294
292
  /* target_file_size */ 0,
295
293
  /* max_compaction_bytes */ 0,
296
294
  /* output_path_id */ 0, kNoCompression,
297
- mutable_cf_options.compression_opts,
298
- mutable_cf_options.default_write_temperature,
295
+ mutable_cf_options.compression_opts, Temperature::kUnknown,
299
296
  /* max_subcompactions */ 0, {}, /* earliest_snapshot */ std::nullopt,
300
297
  /* snapshot_checker */ nullptr, CompactionReason::kFIFOMaxSize,
301
298
  /* trim_ts */ "", vstorage->CompactionScore(0),
@@ -557,7 +557,7 @@ Compaction* LevelCompactionBuilder::GetCompaction() {
557
557
  GetCompressionType(vstorage_, mutable_cf_options_, output_level_,
558
558
  vstorage_->base_level()),
559
559
  GetCompressionOptions(mutable_cf_options_, vstorage_, output_level_),
560
- mutable_cf_options_.default_write_temperature,
560
+ Temperature::kUnknown,
561
561
  /* max_subcompactions */ 0, std::move(grandparents_),
562
562
  /* earliest_snapshot */ std::nullopt, /* snapshot_checker */ nullptr,
563
563
  compaction_reason_,
@@ -1178,7 +1178,7 @@ TEST_F(CompactionPickerTest, FIFOToCold1) {
1178
1178
  ASSERT_TRUE(compaction.get() != nullptr);
1179
1179
  ASSERT_EQ(compaction->compaction_reason(),
1180
1180
  CompactionReason::kChangeTemperature);
1181
- ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1181
+ ASSERT_EQ(compaction->GetOutputTemperature(), Temperature::kCold);
1182
1182
  ASSERT_EQ(1U, compaction->num_input_files(0));
1183
1183
  ASSERT_EQ(3U, compaction->input(0, 0)->fd.GetNumber());
1184
1184
  }
@@ -1248,7 +1248,7 @@ TEST_F(CompactionPickerTest, FIFOToColdMaxCompactionSize) {
1248
1248
  ASSERT_EQ(compaction->compaction_reason(),
1249
1249
  CompactionReason::kChangeTemperature);
1250
1250
  // Compaction picker picks older files first and picks one file at a time.
1251
- ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1251
+ ASSERT_EQ(compaction->GetOutputTemperature(), Temperature::kCold);
1252
1252
  ASSERT_EQ(1U, compaction->num_input_files(0));
1253
1253
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
1254
1254
  }
@@ -1316,7 +1316,7 @@ TEST_F(CompactionPickerTest, FIFOToColdWithExistingCold) {
1316
1316
  ASSERT_EQ(compaction->compaction_reason(),
1317
1317
  CompactionReason::kChangeTemperature);
1318
1318
  // Compaction picker picks older files first and picks one file at a time.
1319
- ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1319
+ ASSERT_EQ(compaction->GetOutputTemperature(), Temperature::kCold);
1320
1320
  ASSERT_EQ(1U, compaction->num_input_files(0));
1321
1321
  ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
1322
1322
  }
@@ -1383,7 +1383,7 @@ TEST_F(CompactionPickerTest, FIFOToColdWithHotBetweenCold) {
1383
1383
  ASSERT_TRUE(compaction.get() != nullptr);
1384
1384
  ASSERT_EQ(compaction->compaction_reason(),
1385
1385
  CompactionReason::kChangeTemperature);
1386
- ASSERT_EQ(compaction->output_temperature(), Temperature::kCold);
1386
+ ASSERT_EQ(compaction->GetOutputTemperature(), Temperature::kCold);
1387
1387
  ASSERT_EQ(1U, compaction->num_input_files(0));
1388
1388
  ASSERT_EQ(2U, compaction->input(0, 0)->fd.GetNumber());
1389
1389
  }
@@ -1464,12 +1464,35 @@ TEST_F(CompactionPickerTest, FIFOToHotAndWarm) {
1464
1464
  ASSERT_EQ(compaction->compaction_reason(),
1465
1465
  CompactionReason::kChangeTemperature);
1466
1466
  // Compaction picker picks older files first and picks one file at a time.
1467
- ASSERT_EQ(compaction->output_temperature(), Temperature::kWarm);
1467
+ ASSERT_EQ(compaction->GetOutputTemperature(), Temperature::kWarm);
1468
1468
  ASSERT_EQ(1U, compaction->num_input_files(0));
1469
1469
  ASSERT_EQ(1U, compaction->input(0, 0)->fd.GetNumber());
1470
1470
  }
1471
1471
  }
1472
1472
 
1473
+ TEST_F(CompactionPickerTest, CompactFilesOutputTemperature) {
1474
+ NewVersionStorage(6, kCompactionStyleLevel);
1475
+ auto file_number = 66U;
1476
+ Add(0, file_number, "150", "200", 1000000000U);
1477
+ UpdateVersionStorageInfo();
1478
+
1479
+ std::unordered_set<uint64_t> input{file_number};
1480
+ std::vector<CompactionInputFiles> input_files;
1481
+ ASSERT_OK(level_compaction_picker.GetCompactionInputsFromFileNumbers(
1482
+ &input_files, &input, vstorage_.get(), CompactionOptions()));
1483
+
1484
+ auto compaction_options = CompactionOptions();
1485
+ compaction_options.output_temperature_override = Temperature::kCold;
1486
+
1487
+ std::unique_ptr<Compaction> compaction(
1488
+ level_compaction_picker.PickCompactionForCompactFiles(
1489
+ compaction_options, input_files, 1, vstorage_.get(),
1490
+ mutable_cf_options_, mutable_db_options_, /*output_path_id=*/0));
1491
+
1492
+ ASSERT_TRUE(compaction.get() != nullptr);
1493
+ ASSERT_EQ(compaction->GetOutputTemperature(), Temperature::kCold);
1494
+ }
1495
+
1473
1496
  TEST_F(CompactionPickerTest, CompactionPriMinOverlapping1) {
1474
1497
  NewVersionStorage(6, kCompactionStyleLevel);
1475
1498
  ioptions_.compaction_pri = kMinOverlappingRatio;
@@ -1093,7 +1093,7 @@ Compaction* UniversalCompactionBuilder::PickCompactionToReduceSortedRuns(
1093
1093
  output_level, 1, enable_compression),
1094
1094
  GetCompressionOptions(mutable_cf_options_, vstorage_,
1095
1095
  output_level, enable_compression),
1096
- mutable_cf_options_.default_write_temperature,
1096
+ Temperature::kUnknown,
1097
1097
  /* max_subcompactions */ 0, grandparents,
1098
1098
  /* earliest_snapshot */ std::nullopt,
1099
1099
  /* snapshot_checker */ nullptr, compaction_reason,
@@ -1441,7 +1441,7 @@ Compaction* UniversalCompactionBuilder::PickIncrementalForReduceSizeAmp(
1441
1441
  true /* enable_compression */),
1442
1442
  GetCompressionOptions(mutable_cf_options_, vstorage_, output_level,
1443
1443
  true /* enable_compression */),
1444
- mutable_cf_options_.default_write_temperature,
1444
+ Temperature::kUnknown,
1445
1445
  /* max_subcompactions */ 0, /* grandparents */ {},
1446
1446
  /* earliest_snapshot */ std::nullopt,
1447
1447
  /* snapshot_checker */ nullptr,
@@ -1594,7 +1594,7 @@ Compaction* UniversalCompactionBuilder::PickDeleteTriggeredCompaction() {
1594
1594
  /* max_grandparent_overlap_bytes */ GetMaxOverlappingBytes(), path_id,
1595
1595
  GetCompressionType(vstorage_, mutable_cf_options_, output_level, 1),
1596
1596
  GetCompressionOptions(mutable_cf_options_, vstorage_, output_level),
1597
- mutable_cf_options_.default_write_temperature,
1597
+ Temperature::kUnknown,
1598
1598
  /* max_subcompactions */ 0, grandparents, earliest_snapshot_,
1599
1599
  snapshot_checker_, CompactionReason::kFilesMarkedForCompaction,
1600
1600
  /* trim_ts */ "", score_,
@@ -1690,7 +1690,7 @@ Compaction* UniversalCompactionBuilder::PickCompactionWithSortedRunRange(
1690
1690
  true /* enable_compression */),
1691
1691
  GetCompressionOptions(mutable_cf_options_, vstorage_, output_level,
1692
1692
  true /* enable_compression */),
1693
- mutable_cf_options_.default_write_temperature,
1693
+ Temperature::kUnknown,
1694
1694
  /* max_subcompactions */ 0, /* grandparents */ {},
1695
1695
  /* earliest_snapshot */ std::nullopt,
1696
1696
  /* snapshot_checker */ nullptr, compaction_reason,
@@ -326,7 +326,9 @@ CompactionServiceCompactionJob::CompactionServiceCompactionJob(
326
326
  compaction_input_(compaction_service_input),
327
327
  compaction_result_(compaction_service_result) {}
328
328
 
329
- void CompactionServiceCompactionJob::Prepare() {
329
+ void CompactionServiceCompactionJob::Prepare(
330
+ const CompactionProgress& compaction_progress,
331
+ log::Writer* compaction_progress_writer) {
330
332
  std::optional<Slice> begin;
331
333
  if (compaction_input_.has_begin) {
332
334
  begin = compaction_input_.begin;
@@ -335,7 +337,8 @@ void CompactionServiceCompactionJob::Prepare() {
335
337
  if (compaction_input_.has_end) {
336
338
  end = compaction_input_.end;
337
339
  }
338
- CompactionJob::Prepare(std::make_pair(begin, end));
340
+ CompactionJob::Prepare(std::make_pair(begin, end), compaction_progress,
341
+ compaction_progress_writer);
339
342
  }
340
343
 
341
344
  Status CompactionServiceCompactionJob::Run() {
@@ -408,7 +411,7 @@ Status CompactionServiceCompactionJob::Run() {
408
411
  // 2. Update job-level output stats with the aggregated internal_stats_
409
412
  // Please note that input stats will be updated by primary host when all
410
413
  // subcompactions are finished
411
- UpdateCompactionJobOutputStatsFromInternalStats(internal_stats_);
414
+ UpdateCompactionJobOutputStatsFromInternalStats(status, internal_stats_);
412
415
  // and set fields that are not propagated as part of the update
413
416
  compaction_result_->stats.is_manual_compaction = c->is_manual_compaction();
414
417
  compaction_result_->stats.is_full_compaction = c->is_full_compaction();