@nxtedition/rocksdb 7.0.39 → 7.0.40

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 (59) hide show
  1. package/binding.cc +2 -12
  2. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +1 -1
  3. package/deps/rocksdb/rocksdb/db/column_family.cc +2 -2
  4. package/deps/rocksdb/rocksdb/db/column_family_test.cc +1 -1
  5. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +13 -3
  6. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +273 -134
  7. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +33 -2
  8. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -3
  9. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +2 -1
  10. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +2 -2
  11. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +133 -5
  12. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +130 -1
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +8 -4
  14. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +11 -9
  15. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +209 -12
  16. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +54 -39
  17. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +102 -19
  18. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +30 -11
  19. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
  20. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +28 -25
  21. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +0 -14
  22. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +63 -54
  23. package/deps/rocksdb/rocksdb/db/db_test.cc +6 -6
  24. package/deps/rocksdb/rocksdb/db/error_handler.cc +7 -0
  25. package/deps/rocksdb/rocksdb/db/error_handler.h +10 -9
  26. package/deps/rocksdb/rocksdb/db/log_test.cc +13 -6
  27. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -1
  28. package/deps/rocksdb/rocksdb/db/table_cache.cc +21 -0
  29. package/deps/rocksdb/rocksdb/db/table_cache.h +5 -0
  30. package/deps/rocksdb/rocksdb/db/version_set.cc +3 -2
  31. package/deps/rocksdb/rocksdb/db/version_set.h +6 -4
  32. package/deps/rocksdb/rocksdb/db/version_set_test.cc +8 -6
  33. package/deps/rocksdb/rocksdb/db/wal_edit.cc +22 -15
  34. package/deps/rocksdb/rocksdb/db/wal_edit.h +10 -0
  35. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +4 -5
  36. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +0 -36
  37. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +1 -12
  38. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +23 -29
  39. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +0 -5
  40. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +7 -0
  41. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -5
  42. package/deps/rocksdb/rocksdb/env/io_posix.cc +1 -7
  43. package/deps/rocksdb/rocksdb/options/options_test.cc +16 -0
  44. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +51 -0
  45. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +3 -0
  46. package/deps/rocksdb/rocksdb/table/table_reader.h +14 -0
  47. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -0
  48. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +8 -38
  49. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +27 -21
  50. package/deps/rocksdb/rocksdb/util/rate_limiter.h +12 -10
  51. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +11 -8
  52. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +2 -1
  53. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +59 -0
  54. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +12 -0
  55. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +31 -0
  56. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -3
  57. package/package.json +1 -1
  58. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  59. package/prebuilds/linux-x64/node.napi.node +0 -0
package/binding.cc CHANGED
@@ -130,17 +130,6 @@ static std::optional<int> Int32Property(napi_env env, napi_value obj, const std:
130
130
  return {};
131
131
  }
132
132
 
133
- static std::optional<int64_t> Int64Property(napi_env env, napi_value obj, const std::string_view& key) {
134
- if (HasProperty(env, obj, key.data())) {
135
- const auto value = GetProperty(env, obj, key.data());
136
- int64_t result;
137
- napi_get_value_int64(env, value, &result);
138
- return result;
139
- }
140
-
141
- return {};
142
- }
143
-
144
133
  static napi_status ToString(napi_env env, napi_value from, std::string& to) {
145
134
  napi_valuetype type;
146
135
  NAPI_STATUS_RETURN(napi_typeof(env, from, &type));
@@ -1925,7 +1914,8 @@ NAPI_METHOD(db_flush_wal) {
1925
1914
  return 0;
1926
1915
  }
1927
1916
 
1928
- napi_status FromLogFile(napi_env env, const auto& file, napi_value* obj) {
1917
+ template<typename T>
1918
+ napi_status FromLogFile(napi_env env, const T& file, napi_value* obj) {
1929
1919
  NAPI_STATUS_RETURN(napi_create_object(env, obj));
1930
1920
 
1931
1921
  napi_value pathName;
@@ -414,7 +414,7 @@ void BlobFileReader::MultiGetBlob(const ReadOptions& read_options,
414
414
  assert(blob_reqs[i]->offset >= adjustment);
415
415
  adjustments.push_back(adjustment);
416
416
 
417
- FSReadRequest read_req;
417
+ FSReadRequest read_req = {};
418
418
  read_req.offset = blob_reqs[i]->offset - adjustment;
419
419
  read_req.len = blob_reqs[i]->len + adjustment;
420
420
  read_reqs.emplace_back(read_req);
@@ -786,13 +786,13 @@ namespace {
786
786
  std::unique_ptr<WriteControllerToken> SetupDelay(
787
787
  WriteController* write_controller, uint64_t compaction_needed_bytes,
788
788
  uint64_t prev_compaction_need_bytes, bool penalize_stop,
789
- bool auto_comapctions_disabled) {
789
+ bool auto_compactions_disabled) {
790
790
  const uint64_t kMinWriteRate = 16 * 1024u; // Minimum write rate 16KB/s.
791
791
 
792
792
  uint64_t max_write_rate = write_controller->max_delayed_write_rate();
793
793
  uint64_t write_rate = write_controller->delayed_write_rate();
794
794
 
795
- if (auto_comapctions_disabled) {
795
+ if (auto_compactions_disabled) {
796
796
  // When auto compaction is disabled, always use the value user gave.
797
797
  write_rate = max_write_rate;
798
798
  } else if (write_controller->NeedsDelay() && max_write_rate > kMinWriteRate) {
@@ -1116,7 +1116,7 @@ TEST_P(ColumnFamilyTest, DifferentWriteBufferSizes) {
1116
1116
  CreateColumnFamilies({"one", "two", "three"});
1117
1117
  ColumnFamilyOptions default_cf, one, two, three;
1118
1118
  // setup options. all column families have max_write_buffer_number setup to 10
1119
- // "default" -> 100KB memtable, start flushing immediatelly
1119
+ // "default" -> 100KB memtable, start flushing immediately
1120
1120
  // "one" -> 200KB memtable, start flushing with two immutable memtables
1121
1121
  // "two" -> 1MB memtable, start flushing with three immutable memtables
1122
1122
  // "three" -> 90KB memtable, start flushing with four immutable memtables
@@ -660,7 +660,7 @@ bool Compaction::IsOutputLevelEmpty() const {
660
660
  }
661
661
 
662
662
  bool Compaction::ShouldFormSubcompactions() const {
663
- if (max_subcompactions_ <= 1 || cfd_ == nullptr) {
663
+ if (cfd_ == nullptr) {
664
664
  return false;
665
665
  }
666
666
 
@@ -671,9 +671,19 @@ bool Compaction::ShouldFormSubcompactions() const {
671
671
  return false;
672
672
  }
673
673
 
674
+ // Round-Robin pri under leveled compaction allows subcompactions by default
675
+ // and the number of subcompactions can be larger than max_subcompactions_
676
+ if (cfd_->ioptions()->compaction_pri == kRoundRobin &&
677
+ cfd_->ioptions()->compaction_style == kCompactionStyleLevel) {
678
+ return output_level_ > 0;
679
+ }
680
+
681
+ if (max_subcompactions_ <= 1) {
682
+ return false;
683
+ }
684
+
674
685
  if (cfd_->ioptions()->compaction_style == kCompactionStyleLevel) {
675
- return (start_level_ == 0 || is_manual_compaction_) && output_level_ > 0 &&
676
- !IsOutputLevelEmpty();
686
+ return (start_level_ == 0 || is_manual_compaction_) && output_level_ > 0;
677
687
  } else if (cfd_->ioptions()->compaction_style == kCompactionStyleUniversal) {
678
688
  return number_levels_ > 1 && output_level_ > 0;
679
689
  } else {