@nxtedition/rocksdb 8.0.0 → 8.0.2

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 (144) hide show
  1. package/BUILDING.md +2 -2
  2. package/binding.cc +2 -7
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -9
  4. package/deps/rocksdb/rocksdb/Makefile +2 -2
  5. package/deps/rocksdb/rocksdb/TARGETS +4 -2
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +0 -5
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +8 -29
  8. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +146 -0
  9. package/deps/rocksdb/rocksdb/cache/clock_cache.h +13 -1
  10. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +57 -146
  11. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +32 -0
  12. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +11 -0
  13. package/deps/rocksdb/rocksdb/db/column_family.cc +11 -9
  14. package/deps/rocksdb/rocksdb/db/column_family.h +20 -0
  15. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +5 -0
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +13 -33
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +5 -0
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +27 -8
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -1
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +2 -1
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +4 -2
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -6
  23. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +65 -7
  24. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +5 -0
  25. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +10 -32
  26. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +28 -47
  27. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +28 -22
  28. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -14
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -8
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +5 -4
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +170 -140
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +5 -4
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +8 -2
  35. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
  36. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +266 -138
  37. package/deps/rocksdb/rocksdb/db/corruption_test.cc +86 -1
  38. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +72 -5
  39. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +119 -10
  40. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +585 -264
  41. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +46 -18
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +5 -1
  43. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +6 -15
  44. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +1 -1
  45. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +1 -1
  46. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
  47. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +8 -8
  48. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +10 -0
  49. package/deps/rocksdb/rocksdb/db/db_iter.cc +57 -36
  50. package/deps/rocksdb/rocksdb/db/db_iter.h +2 -1
  51. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +250 -2
  52. package/deps/rocksdb/rocksdb/db/db_test.cc +3 -0
  53. package/deps/rocksdb/rocksdb/db/db_test2.cc +307 -8
  54. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +129 -0
  55. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +21 -0
  56. package/deps/rocksdb/rocksdb/db/dbformat.cc +25 -0
  57. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -0
  58. package/deps/rocksdb/rocksdb/db/experimental.cc +1 -1
  59. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +5 -2
  60. package/deps/rocksdb/rocksdb/db/flush_job.cc +5 -2
  61. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +4 -0
  62. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +56 -53
  63. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +3 -4
  64. package/deps/rocksdb/rocksdb/db/memtable.cc +55 -9
  65. package/deps/rocksdb/rocksdb/db/merge_helper.cc +76 -102
  66. package/deps/rocksdb/rocksdb/db/merge_helper.h +2 -11
  67. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +10 -10
  68. package/deps/rocksdb/rocksdb/db/repair.cc +64 -22
  69. package/deps/rocksdb/rocksdb/db/repair_test.cc +54 -0
  70. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +26 -26
  71. package/deps/rocksdb/rocksdb/db/table_cache.cc +2 -0
  72. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -1
  73. package/deps/rocksdb/rocksdb/db/version_builder.cc +90 -43
  74. package/deps/rocksdb/rocksdb/db/version_builder.h +20 -0
  75. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +190 -67
  76. package/deps/rocksdb/rocksdb/db/version_edit.cc +15 -1
  77. package/deps/rocksdb/rocksdb/db/version_edit.h +16 -4
  78. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +41 -11
  79. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +27 -12
  80. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +18 -16
  81. package/deps/rocksdb/rocksdb/db/version_set.cc +219 -38
  82. package/deps/rocksdb/rocksdb/db/version_set.h +34 -4
  83. package/deps/rocksdb/rocksdb/db/version_set_test.cc +45 -25
  84. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +122 -61
  85. package/deps/rocksdb/rocksdb/db/write_thread.cc +5 -2
  86. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +0 -1
  87. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +0 -4
  88. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +12 -17
  89. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +6 -4
  90. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
  91. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +1 -0
  92. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +0 -48
  93. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -0
  94. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +196 -171
  95. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +6 -0
  96. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +9 -3
  97. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +25 -18
  98. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +27 -5
  99. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
  100. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +3 -0
  101. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +3 -0
  102. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  103. package/deps/rocksdb/rocksdb/logging/logging.h +13 -19
  104. package/deps/rocksdb/rocksdb/memory/arena.cc +4 -3
  105. package/deps/rocksdb/rocksdb/memory/arena_test.cc +30 -0
  106. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
  107. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +26 -26
  108. package/deps/rocksdb/rocksdb/src.mk +2 -1
  109. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -2
  110. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -10
  111. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +12 -29
  112. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +1 -1
  113. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +0 -39
  114. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +0 -1
  115. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -3
  116. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +142 -0
  117. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +241 -0
  118. package/deps/rocksdb/rocksdb/table/format.cc +24 -20
  119. package/deps/rocksdb/rocksdb/table/format.h +5 -2
  120. package/deps/rocksdb/rocksdb/table/get_context.cc +52 -11
  121. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +97 -115
  122. package/deps/rocksdb/rocksdb/table/merging_iterator.h +82 -1
  123. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +2 -2
  124. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -1
  125. package/deps/rocksdb/rocksdb/table/table_test.cc +7 -6
  126. package/deps/rocksdb/rocksdb/test_util/testutil.h +10 -0
  127. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +0 -6
  128. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +2 -2
  129. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -1
  130. package/deps/rocksdb/rocksdb/util/crc32c.cc +1 -1
  131. package/deps/rocksdb/rocksdb/util/status.cc +7 -0
  132. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +5 -0
  133. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -0
  134. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -67
  135. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -3
  136. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -0
  137. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +59 -0
  138. package/deps/rocksdb/rocksdb.gyp +2 -1
  139. package/package.json +1 -1
  140. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  141. package/prebuilds/linux-x64/node.napi.node +0 -0
  142. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +0 -580
  143. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +0 -476
  144. package/max_rev_operator.h +0 -100
@@ -280,7 +280,7 @@ IOStatus CacheDumpedLoaderImpl::RestoreCacheEntriesToSecondaryCache() {
280
280
 
281
281
  // Step 3: read out the rest of the blocks from the reader. The loop will stop
282
282
  // either I/O status is not ok or we reach to the the end.
283
- while (io_s.ok() && dump_unit.type != CacheDumpUnitType::kFooter) {
283
+ while (io_s.ok()) {
284
284
  dump_unit.reset();
285
285
  data.clear();
286
286
  // read the content and store in the dump_unit
@@ -288,74 +288,14 @@ IOStatus CacheDumpedLoaderImpl::RestoreCacheEntriesToSecondaryCache() {
288
288
  if (!io_s.ok()) {
289
289
  break;
290
290
  }
291
+ if (dump_unit.type == CacheDumpUnitType::kFooter) {
292
+ break;
293
+ }
291
294
  // Create the uncompressed_block based on the information in the dump_unit
292
295
  // (There is no block trailer here compatible with block-based SST file.)
293
- BlockContents uncompressed_block(
294
- Slice(static_cast<char*>(dump_unit.value), dump_unit.value_len));
295
- Cache::CacheItemHelper* helper = nullptr;
296
- Statistics* statistics = nullptr;
297
- Status s = Status::OK();
298
- // according to the block type, get the helper callback function and create
299
- // the corresponding block
300
- switch (dump_unit.type) {
301
- case CacheDumpUnitType::kFilter: {
302
- helper = BlocklikeTraits<ParsedFullFilterBlock>::GetCacheItemHelper(
303
- BlockType::kFilter);
304
- std::unique_ptr<ParsedFullFilterBlock> block_holder;
305
- block_holder.reset(BlocklikeTraits<ParsedFullFilterBlock>::Create(
306
- std::move(uncompressed_block), toptions_.read_amp_bytes_per_bit,
307
- statistics, false, toptions_.filter_policy.get()));
308
- if (helper != nullptr) {
309
- s = secondary_cache_->Insert(dump_unit.key,
310
- (void*)(block_holder.get()), helper);
311
- }
312
- break;
313
- }
314
- case CacheDumpUnitType::kData: {
315
- helper = BlocklikeTraits<Block>::GetCacheItemHelper(BlockType::kData);
316
- std::unique_ptr<Block> block_holder;
317
- block_holder.reset(BlocklikeTraits<Block>::Create(
318
- std::move(uncompressed_block), toptions_.read_amp_bytes_per_bit,
319
- statistics, false, toptions_.filter_policy.get()));
320
- if (helper != nullptr) {
321
- s = secondary_cache_->Insert(dump_unit.key,
322
- (void*)(block_holder.get()), helper);
323
- }
324
- break;
325
- }
326
- case CacheDumpUnitType::kIndex: {
327
- helper = BlocklikeTraits<Block>::GetCacheItemHelper(BlockType::kIndex);
328
- std::unique_ptr<Block> block_holder;
329
- block_holder.reset(BlocklikeTraits<Block>::Create(
330
- std::move(uncompressed_block), 0, statistics, false,
331
- toptions_.filter_policy.get()));
332
- if (helper != nullptr) {
333
- s = secondary_cache_->Insert(dump_unit.key,
334
- (void*)(block_holder.get()), helper);
335
- }
336
- break;
337
- }
338
- case CacheDumpUnitType::kFilterMetaBlock: {
339
- helper = BlocklikeTraits<Block>::GetCacheItemHelper(
340
- BlockType::kFilterPartitionIndex);
341
- std::unique_ptr<Block> block_holder;
342
- block_holder.reset(BlocklikeTraits<Block>::Create(
343
- std::move(uncompressed_block), toptions_.read_amp_bytes_per_bit,
344
- statistics, false, toptions_.filter_policy.get()));
345
- if (helper != nullptr) {
346
- s = secondary_cache_->Insert(dump_unit.key,
347
- (void*)(block_holder.get()), helper);
348
- }
349
- break;
350
- }
351
- case CacheDumpUnitType::kFooter:
352
- break;
353
- case CacheDumpUnitType::kDeprecatedFilterBlock:
354
- // Obsolete
355
- break;
356
- default:
357
- continue;
358
- }
296
+ Slice content =
297
+ Slice(static_cast<char*>(dump_unit.value), dump_unit.value_len);
298
+ Status s = secondary_cache_->InsertSaved(dump_unit.key, content);
359
299
  if (!s.ok()) {
360
300
  io_s = status_to_io_status(std::move(s));
361
301
  }
@@ -128,11 +128,10 @@ class CacheDumperImpl : public CacheDumper {
128
128
  class CacheDumpedLoaderImpl : public CacheDumpedLoader {
129
129
  public:
130
130
  CacheDumpedLoaderImpl(const CacheDumpOptions& dump_options,
131
- const BlockBasedTableOptions& toptions,
131
+ const BlockBasedTableOptions& /*toptions*/,
132
132
  const std::shared_ptr<SecondaryCache>& secondary_cache,
133
133
  std::unique_ptr<CacheDumpReader>&& reader)
134
134
  : options_(dump_options),
135
- toptions_(toptions),
136
135
  secondary_cache_(secondary_cache),
137
136
  reader_(std::move(reader)) {}
138
137
  ~CacheDumpedLoaderImpl() {}
@@ -145,7 +144,6 @@ class CacheDumpedLoaderImpl : public CacheDumpedLoader {
145
144
  IOStatus ReadCacheBlock(std::string* data, DumpUnit* dump_unit);
146
145
 
147
146
  CacheDumpOptions options_;
148
- const BlockBasedTableOptions& toptions_;
149
147
  std::shared_ptr<SecondaryCache> secondary_cache_;
150
148
  std::unique_ptr<CacheDumpReader> reader_;
151
149
  UnorderedMap<Cache::DeleterFn, CacheEntryRole> role_map_;
@@ -382,6 +382,7 @@ Status CheckpointImpl::ExportColumnFamily(
382
382
  live_file_metadata.largestkey = std::move(file_metadata.largestkey);
383
383
  live_file_metadata.oldest_blob_file_number =
384
384
  file_metadata.oldest_blob_file_number;
385
+ live_file_metadata.epoch_number = file_metadata.epoch_number;
385
386
  live_file_metadata.level = level_metadata.level;
386
387
  result_metadata->files.push_back(live_file_metadata);
387
388
  }
@@ -6530,6 +6530,65 @@ TEST_P(TransactionTest, WriteWithBulkCreatedColumnFamilies) {
6530
6530
  cf_handles.clear();
6531
6531
  }
6532
6532
 
6533
+ TEST_P(TransactionTest, LockWal) {
6534
+ const TxnDBWritePolicy write_policy = std::get<2>(GetParam());
6535
+ if (TxnDBWritePolicy::WRITE_COMMITTED != write_policy) {
6536
+ ROCKSDB_GTEST_BYPASS("Test only write-committed for now");
6537
+ return;
6538
+ }
6539
+ ASSERT_OK(ReOpen());
6540
+
6541
+ SyncPoint::GetInstance()->DisableProcessing();
6542
+ SyncPoint::GetInstance()->LoadDependency(
6543
+ {{"TransactionTest::LockWal:AfterLockWal",
6544
+ "TransactionTest::LockWal:BeforePrepareTxn2"}});
6545
+ SyncPoint::GetInstance()->EnableProcessing();
6546
+
6547
+ std::unique_ptr<Transaction> txn0;
6548
+ WriteOptions wopts;
6549
+ wopts.no_slowdown = true;
6550
+ txn0.reset(db->BeginTransaction(wopts, TransactionOptions()));
6551
+ ASSERT_OK(txn0->SetName("txn0"));
6552
+ ASSERT_OK(txn0->Put("foo", "v0"));
6553
+
6554
+ std::unique_ptr<Transaction> txn1;
6555
+ txn1.reset(db->BeginTransaction(wopts, TransactionOptions()));
6556
+ ASSERT_OK(txn1->SetName("txn1"));
6557
+ ASSERT_OK(txn1->Put("dummy", "v0"));
6558
+ ASSERT_OK(txn1->Prepare());
6559
+
6560
+ std::unique_ptr<Transaction> txn2;
6561
+ port::Thread worker([&]() {
6562
+ txn2.reset(db->BeginTransaction(WriteOptions(), TransactionOptions()));
6563
+ ASSERT_OK(txn2->SetName("txn2"));
6564
+ ASSERT_OK(txn2->Put("bar", "v0"));
6565
+ TEST_SYNC_POINT("TransactionTest::LockWal:BeforePrepareTxn2");
6566
+ ASSERT_OK(txn2->Prepare());
6567
+ ASSERT_OK(txn2->Commit());
6568
+ });
6569
+ ASSERT_OK(db->LockWAL());
6570
+ // txn0 cannot prepare
6571
+ Status s = txn0->Prepare();
6572
+ ASSERT_TRUE(s.IsIncomplete());
6573
+ // txn1 cannot commit
6574
+ s = txn1->Commit();
6575
+ ASSERT_TRUE(s.IsIncomplete());
6576
+
6577
+ TEST_SYNC_POINT("TransactionTest::LockWal:AfterLockWal");
6578
+
6579
+ ASSERT_OK(db->UnlockWAL());
6580
+ txn0.reset();
6581
+
6582
+ txn0.reset(db->BeginTransaction(wopts, TransactionOptions()));
6583
+ ASSERT_OK(txn0->SetName("txn0_1"));
6584
+ ASSERT_OK(txn0->Put("foo", "v1"));
6585
+ ASSERT_OK(txn0->Prepare());
6586
+ ASSERT_OK(txn0->Commit());
6587
+ worker.join();
6588
+
6589
+ SyncPoint::GetInstance()->DisableProcessing();
6590
+ }
6591
+
6533
6592
  } // namespace ROCKSDB_NAMESPACE
6534
6593
 
6535
6594
  int main(int argc, char** argv) {
@@ -168,8 +168,8 @@
168
168
  "rocksdb/cache/charged_cache.cc",
169
169
  "rocksdb/cache/clock_cache.cc",
170
170
  "rocksdb/cache/compressed_secondary_cache.cc",
171
- "rocksdb/cache/fast_lru_cache.cc",
172
171
  "rocksdb/cache/lru_cache.cc",
172
+ "rocksdb/cache/secondary_cache.cc",
173
173
  "rocksdb/cache/sharded_cache.cc",
174
174
  "rocksdb/db/arena_wrapped_db_iter.cc",
175
175
  "rocksdb/db/blob/blob_contents.cc",
@@ -339,6 +339,7 @@
339
339
  "rocksdb/table/block_based/reader_common.cc",
340
340
  "rocksdb/table/block_based/uncompression_dict_reader.cc",
341
341
  "rocksdb/table/block_fetcher.cc",
342
+ "rocksdb/table/compaction_merging_iterator.cc",
342
343
  "rocksdb/table/cuckoo/cuckoo_table_builder.cc",
343
344
  "rocksdb/table/cuckoo/cuckoo_table_factory.cc",
344
345
  "rocksdb/table/cuckoo/cuckoo_table_reader.cc",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/rocksdb",
3
- "version": "8.0.0",
3
+ "version": "8.0.2",
4
4
  "description": "A low-level Node.js RocksDB binding",
5
5
  "license": "MIT",
6
6
  "main": "index.js",
Binary file