@nxtedition/rocksdb 12.1.4 → 12.1.5

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 (132) hide show
  1. package/binding.cc +1 -1
  2. package/deps/rocksdb/rocksdb/Makefile +10 -5
  3. package/deps/rocksdb/rocksdb/TARGETS +9 -7
  4. package/deps/rocksdb/rocksdb/cache/cache.cc +15 -11
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +26 -0
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +16 -0
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +6 -0
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +38 -8
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +4 -0
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +11 -0
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +6 -0
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +56 -0
  15. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -9
  16. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +10 -0
  17. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +9 -0
  18. package/deps/rocksdb/rocksdb/db/c.cc +9 -0
  19. package/deps/rocksdb/rocksdb/db/c_test.c +12 -1
  20. package/deps/rocksdb/rocksdb/db/column_family.cc +6 -23
  21. package/deps/rocksdb/rocksdb/db/column_family.h +1 -2
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +4 -5
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +4 -4
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +14 -6
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +19 -16
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +34 -30
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +2 -1
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +2 -1
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +1 -1
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +16 -31
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +7 -50
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +95 -84
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +616 -5
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +1 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +1 -1
  37. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +1 -1
  38. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +8 -2
  39. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +93 -69
  40. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +353 -89
  41. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +4 -3
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +116 -14
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +67 -8
  44. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +42 -14
  45. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +50 -0
  46. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +79 -32
  48. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +36 -59
  49. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +72 -39
  50. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +14 -12
  51. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +75 -0
  52. package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -3
  53. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +1 -1
  54. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +24 -0
  55. package/deps/rocksdb/rocksdb/db/db_test2.cc +36 -22
  56. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +23 -0
  57. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2 -0
  58. package/deps/rocksdb/rocksdb/db/error_handler.cc +28 -3
  59. package/deps/rocksdb/rocksdb/db/error_handler.h +2 -1
  60. package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
  61. package/deps/rocksdb/rocksdb/db/experimental.cc +165 -33
  62. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +13 -5
  63. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +37 -28
  64. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -6
  65. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +7 -6
  66. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -6
  67. package/deps/rocksdb/rocksdb/db/job_context.h +4 -0
  68. package/deps/rocksdb/rocksdb/db/memtable.cc +24 -14
  69. package/deps/rocksdb/rocksdb/db/memtable.h +2 -1
  70. package/deps/rocksdb/rocksdb/db/memtable_list.cc +61 -33
  71. package/deps/rocksdb/rocksdb/db/memtable_list.h +8 -0
  72. package/deps/rocksdb/rocksdb/db/repair.cc +4 -2
  73. package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -0
  74. package/deps/rocksdb/rocksdb/db/version_builder.cc +14 -11
  75. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +20 -4
  76. package/deps/rocksdb/rocksdb/db/version_set.cc +40 -30
  77. package/deps/rocksdb/rocksdb/db/version_set.h +13 -3
  78. package/deps/rocksdb/rocksdb/db/version_set_test.cc +8 -76
  79. package/deps/rocksdb/rocksdb/db/write_batch.cc +6 -2
  80. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +1 -1
  81. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
  82. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +5 -1
  83. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2 -1
  84. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +25 -2
  85. package/deps/rocksdb/rocksdb/env/fs_remap.cc +11 -0
  86. package/deps/rocksdb/rocksdb/env/fs_remap.h +5 -0
  87. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +11 -1
  88. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +3 -1
  89. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +20 -1
  90. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +10 -8
  91. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +4 -0
  92. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +30 -28
  93. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +10 -5
  94. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +3 -1
  95. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +287 -83
  96. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +68 -36
  97. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +8 -0
  98. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -0
  99. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  100. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +4 -4
  101. package/deps/rocksdb/rocksdb/options/customizable_test.cc +31 -0
  102. package/deps/rocksdb/rocksdb/options/db_options.cc +14 -0
  103. package/deps/rocksdb/rocksdb/options/db_options.h +2 -0
  104. package/deps/rocksdb/rocksdb/options/options_helper.cc +15 -4
  105. package/deps/rocksdb/rocksdb/options/options_helper.h +4 -0
  106. package/deps/rocksdb/rocksdb/options/options_parser.cc +5 -4
  107. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -1
  108. package/deps/rocksdb/rocksdb/options/options_test.cc +38 -45
  109. package/deps/rocksdb/rocksdb/port/port.h +16 -0
  110. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +8 -1
  111. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +10 -20
  112. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +15 -9
  113. package/deps/rocksdb/rocksdb/table/format.cc +32 -4
  114. package/deps/rocksdb/rocksdb/table/format.h +12 -1
  115. package/deps/rocksdb/rocksdb/table/iterator.cc +4 -0
  116. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +214 -161
  117. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +4 -2
  118. package/deps/rocksdb/rocksdb/table/table_properties.cc +4 -0
  119. package/deps/rocksdb/rocksdb/table/table_reader.h +2 -2
  120. package/deps/rocksdb/rocksdb/table/table_test.cc +5 -4
  121. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -0
  122. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -0
  123. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +11 -2
  124. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +213 -22
  125. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +3 -0
  126. package/deps/rocksdb/rocksdb/util/async_file_reader.h +1 -1
  127. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +3 -0
  128. package/deps/rocksdb/rocksdb/util/coro_utils.h +2 -2
  129. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +3 -3
  130. package/package.json +1 -1
  131. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  132. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -13,7 +13,7 @@
13
13
  #include "rocksdb/sst_partitioner.h"
14
14
 
15
15
  namespace ROCKSDB_NAMESPACE {
16
- void SubcompactionState::AggregateCompactionStats(
16
+ void SubcompactionState::AggregateCompactionOutputStats(
17
17
  InternalStats::CompactionStatsFull& compaction_stats) const {
18
18
  compaction_stats.stats.Add(compaction_outputs_.stats_);
19
19
  if (HasPenultimateLevelOutputs()) {
@@ -179,7 +179,7 @@ class SubcompactionState {
179
179
 
180
180
  void Cleanup(Cache* cache);
181
181
 
182
- void AggregateCompactionStats(
182
+ void AggregateCompactionOutputStats(
183
183
  InternalStats::CompactionStatsFull& compaction_stats) const;
184
184
 
185
185
  CompactionOutputs& Current() const {
@@ -2512,6 +2512,7 @@ TEST_P(IteratorWriteTimeTest, ReadFromMemtables) {
2512
2512
  start_time + kSecondsPerRecording * (i + 1));
2513
2513
  }
2514
2514
  }
2515
+ ASSERT_EQ(kNumKeys, i);
2515
2516
  ASSERT_OK(iter->status());
2516
2517
  }
2517
2518
 
@@ -2531,12 +2532,13 @@ TEST_P(IteratorWriteTimeTest, ReadFromMemtables) {
2531
2532
  }
2532
2533
  }
2533
2534
  ASSERT_OK(iter->status());
2535
+ ASSERT_EQ(-1, i);
2534
2536
  }
2535
2537
 
2536
2538
  // Reopen the DB and disable the seqno to time recording, data with user
2537
2539
  // specified write time can still get a write time before it's flushed.
2538
2540
  options.preserve_internal_time_seconds = 0;
2539
- DestroyAndReopen(options);
2541
+ Reopen(options);
2540
2542
  ASSERT_OK(TimedPut(Key(kKeyWithWriteTime), rnd.RandomString(100),
2541
2543
  kUserSpecifiedWriteTime));
2542
2544
  {
@@ -2613,6 +2615,7 @@ TEST_P(IteratorWriteTimeTest, ReadFromSstFile) {
2613
2615
  }
2614
2616
  }
2615
2617
  ASSERT_OK(iter->status());
2618
+ ASSERT_EQ(kNumKeys, i);
2616
2619
  }
2617
2620
 
2618
2621
  // Backward iteration
@@ -2632,12 +2635,13 @@ TEST_P(IteratorWriteTimeTest, ReadFromSstFile) {
2632
2635
  }
2633
2636
  }
2634
2637
  ASSERT_OK(iter->status());
2638
+ ASSERT_EQ(-1, i);
2635
2639
  }
2636
2640
 
2637
2641
  // Reopen the DB and disable the seqno to time recording. Data retrieved from
2638
2642
  // SST files still have write time available.
2639
2643
  options.preserve_internal_time_seconds = 0;
2640
- DestroyAndReopen(options);
2644
+ Reopen(options);
2641
2645
 
2642
2646
  dbfull()->TEST_WaitForPeriodicTaskRun(
2643
2647
  [&] { mock_clock_->MockSleepForSeconds(kSecondsPerRecording); });
@@ -2663,6 +2667,7 @@ TEST_P(IteratorWriteTimeTest, ReadFromSstFile) {
2663
2667
  start_time + kSecondsPerRecording * (i + 1));
2664
2668
  }
2665
2669
  }
2670
+ ASSERT_EQ(kNumKeys, i);
2666
2671
  ASSERT_OK(iter->status());
2667
2672
  }
2668
2673
 
@@ -2686,6 +2691,7 @@ TEST_P(IteratorWriteTimeTest, ReadFromSstFile) {
2686
2691
  VerifyKeyAndWriteTime(iter.get(), Key(i), 0);
2687
2692
  }
2688
2693
  ASSERT_OK(iter->status());
2694
+ ASSERT_EQ(kNumKeys, i);
2689
2695
  }
2690
2696
  Close();
2691
2697
  }
@@ -688,76 +688,100 @@ TEST_F(DBBasicTest, IdentityAcrossRestarts) {
688
688
  constexpr size_t kMinIdSize = 10;
689
689
  do {
690
690
  for (bool with_manifest : {false, true}) {
691
- std::string idfilename = IdentityFileName(dbname_);
692
- std::string id1, tmp;
693
- ASSERT_OK(db_->GetDbIdentity(id1));
694
- ASSERT_GE(id1.size(), kMinIdSize);
695
-
696
- Options options = CurrentOptions();
697
- options.write_dbid_to_manifest = with_manifest;
698
- Reopen(options);
699
- std::string id2;
700
- ASSERT_OK(db_->GetDbIdentity(id2));
701
- // id2 should match id1 because identity was not regenerated
702
- ASSERT_EQ(id1, id2);
703
- ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
704
- ASSERT_EQ(tmp, id2);
705
-
706
- // Recover from deleted/missing IDENTITY
707
- ASSERT_OK(env_->DeleteFile(idfilename));
708
- Reopen(options);
709
- std::string id3;
710
- ASSERT_OK(db_->GetDbIdentity(id3));
711
- if (with_manifest) {
712
- // id3 should match id1 because identity was restored from manifest
713
- ASSERT_EQ(id1, id3);
714
- } else {
715
- // id3 should NOT match id1 because identity was regenerated
716
- ASSERT_NE(id1, id3);
717
- ASSERT_GE(id3.size(), kMinIdSize);
718
- }
719
- ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
720
- ASSERT_EQ(tmp, id3);
721
-
722
- // Recover from truncated IDENTITY
723
- {
724
- std::unique_ptr<WritableFile> w;
725
- ASSERT_OK(env_->NewWritableFile(idfilename, &w, EnvOptions()));
726
- ASSERT_OK(w->Close());
727
- }
728
- Reopen(options);
729
- std::string id4;
730
- ASSERT_OK(db_->GetDbIdentity(id4));
731
- if (with_manifest) {
732
- // id4 should match id1 because identity was restored from manifest
733
- ASSERT_EQ(id1, id4);
734
- } else {
735
- // id4 should NOT match id1 because identity was regenerated
736
- ASSERT_NE(id1, id4);
737
- ASSERT_GE(id4.size(), kMinIdSize);
738
- }
739
- ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
740
- ASSERT_EQ(tmp, id4);
741
-
742
- // Recover from overwritten IDENTITY
743
- std::string silly_id = "asdf123456789";
744
- {
745
- std::unique_ptr<WritableFile> w;
746
- ASSERT_OK(env_->NewWritableFile(idfilename, &w, EnvOptions()));
747
- ASSERT_OK(w->Append(silly_id));
748
- ASSERT_OK(w->Close());
749
- }
750
- Reopen(options);
751
- std::string id5;
752
- ASSERT_OK(db_->GetDbIdentity(id5));
753
- if (with_manifest) {
754
- // id4 should match id1 because identity was restored from manifest
755
- ASSERT_EQ(id1, id5);
756
- } else {
757
- ASSERT_EQ(id5, silly_id);
691
+ for (bool write_file : {false, true}) {
692
+ std::string idfilename = IdentityFileName(dbname_);
693
+ std::string id1, tmp;
694
+ ASSERT_OK(db_->GetDbIdentity(id1));
695
+ ASSERT_GE(id1.size(), kMinIdSize);
696
+
697
+ Options options = CurrentOptions();
698
+ options.write_dbid_to_manifest = with_manifest;
699
+ options.write_identity_file = true; // initially
700
+ Reopen(options);
701
+ std::string id2;
702
+ ASSERT_OK(db_->GetDbIdentity(id2));
703
+ // id2 should match id1 because identity was not regenerated
704
+ ASSERT_EQ(id1, id2);
705
+ ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
706
+ ASSERT_EQ(tmp, id2);
707
+
708
+ if (write_file) {
709
+ // Recover from deleted/missing IDENTITY
710
+ ASSERT_OK(env_->DeleteFile(idfilename));
711
+ } else {
712
+ // Transition to no IDENTITY file
713
+ options.write_identity_file = false;
714
+ if (!with_manifest) {
715
+ // Incompatible options, should fail
716
+ ASSERT_NOK(TryReopen(options));
717
+ // Back to a usable config and continue
718
+ options.write_identity_file = true;
719
+ Reopen(options);
720
+ continue;
721
+ }
722
+ }
723
+ Reopen(options);
724
+ std::string id3;
725
+ ASSERT_OK(db_->GetDbIdentity(id3));
726
+ if (with_manifest) {
727
+ // id3 should match id1 because identity was restored from manifest
728
+ ASSERT_EQ(id1, id3);
729
+ } else {
730
+ // id3 should NOT match id1 because identity was regenerated
731
+ ASSERT_NE(id1, id3);
732
+ ASSERT_GE(id3.size(), kMinIdSize);
733
+ }
734
+ if (write_file) {
735
+ ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
736
+ ASSERT_EQ(tmp, id3);
737
+
738
+ // Recover from truncated IDENTITY
739
+ std::unique_ptr<WritableFile> w;
740
+ ASSERT_OK(env_->NewWritableFile(idfilename, &w, EnvOptions()));
741
+ ASSERT_OK(w->Close());
742
+ } else {
743
+ ASSERT_TRUE(env_->FileExists(idfilename).IsNotFound());
744
+ }
745
+ Reopen(options);
746
+ std::string id4;
747
+ ASSERT_OK(db_->GetDbIdentity(id4));
748
+ if (with_manifest) {
749
+ // id4 should match id1 because identity was restored from manifest
750
+ ASSERT_EQ(id1, id4);
751
+ } else {
752
+ // id4 should NOT match id1 because identity was regenerated
753
+ ASSERT_NE(id1, id4);
754
+ ASSERT_GE(id4.size(), kMinIdSize);
755
+ }
756
+ std::string silly_id = "asdf123456789";
757
+ if (write_file) {
758
+ ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
759
+ ASSERT_EQ(tmp, id4);
760
+
761
+ // Recover from overwritten IDENTITY
762
+ std::unique_ptr<WritableFile> w;
763
+ ASSERT_OK(env_->NewWritableFile(idfilename, &w, EnvOptions()));
764
+ ASSERT_OK(w->Append(silly_id));
765
+ ASSERT_OK(w->Close());
766
+ } else {
767
+ ASSERT_TRUE(env_->FileExists(idfilename).IsNotFound());
768
+ }
769
+ Reopen(options);
770
+ std::string id5;
771
+ ASSERT_OK(db_->GetDbIdentity(id5));
772
+ if (with_manifest) {
773
+ // id4 should match id1 because identity was restored from manifest
774
+ ASSERT_EQ(id1, id5);
775
+ } else {
776
+ ASSERT_EQ(id5, silly_id);
777
+ }
778
+ if (write_file) {
779
+ ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
780
+ ASSERT_EQ(tmp, id5);
781
+ } else {
782
+ ASSERT_TRUE(env_->FileExists(idfilename).IsNotFound());
783
+ }
758
784
  }
759
- ASSERT_OK(ReadFileToString(env_, idfilename, &tmp));
760
- ASSERT_EQ(tmp, id5);
761
785
  }
762
786
  } while (ChangeCompactOptions());
763
787
  }