@nxtedition/rocksdb 7.0.4 → 7.0.7

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 (128) hide show
  1. package/binding.cc +320 -324
  2. package/chained-batch.js +6 -1
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +8 -3
  4. package/deps/rocksdb/rocksdb/Makefile +10 -4
  5. package/deps/rocksdb/rocksdb/TARGETS +6 -4
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +14 -0
  8. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +8 -8
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +272 -174
  10. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +201 -57
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +19 -19
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +2 -1
  13. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +170 -0
  14. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +95 -0
  15. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +298 -0
  16. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +172 -0
  17. package/deps/rocksdb/rocksdb/db/column_family.cc +8 -3
  18. package/deps/rocksdb/rocksdb/db/column_family.h +6 -3
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +10 -0
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -6
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -2
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +38 -0
  23. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -5
  24. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +4 -7
  25. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -71
  26. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +70 -1
  27. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +13 -12
  28. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +36 -0
  29. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -4
  30. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +139 -91
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +48 -14
  33. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +90 -55
  34. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +9 -4
  35. package/deps/rocksdb/rocksdb/db/db_test.cc +3 -1
  36. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -7
  37. package/deps/rocksdb/rocksdb/db/db_write_test.cc +35 -0
  38. package/deps/rocksdb/rocksdb/db/dbformat.cc +3 -1
  39. package/deps/rocksdb/rocksdb/db/dbformat.h +5 -3
  40. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -1
  41. package/deps/rocksdb/rocksdb/db/memtable.cc +1 -0
  42. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
  43. package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -1
  45. package/deps/rocksdb/rocksdb/db/version_edit.cc +13 -5
  46. package/deps/rocksdb/rocksdb/db/version_edit.h +22 -1
  47. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +4 -5
  48. package/deps/rocksdb/rocksdb/db/version_set.cc +109 -41
  49. package/deps/rocksdb/rocksdb/db/version_set.h +36 -3
  50. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -4
  51. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -10
  52. package/deps/rocksdb/rocksdb/db/version_util.h +1 -1
  53. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  54. package/deps/rocksdb/rocksdb/db/write_batch.cc +34 -10
  55. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +2 -0
  56. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +4 -0
  57. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
  58. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -1
  59. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -1
  60. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +7 -5
  61. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +5 -10
  62. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -7
  63. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +2 -0
  64. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +24 -3
  65. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
  66. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +10 -0
  67. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +5 -0
  68. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +4 -4
  69. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +9 -5
  70. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
  71. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
  72. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +1 -1
  73. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  74. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -3
  75. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +8 -6
  76. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
  77. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -2
  78. package/deps/rocksdb/rocksdb/options/options_test.cc +1 -11
  79. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -0
  80. package/deps/rocksdb/rocksdb/port/win/port_win.h +11 -3
  81. package/deps/rocksdb/rocksdb/src.mk +6 -2
  82. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +4 -33
  83. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +3 -3
  84. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +38 -118
  85. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +6 -8
  86. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +10 -13
  87. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +4 -9
  88. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +0 -1
  89. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -28
  90. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -3
  91. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -91
  92. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -30
  93. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -27
  94. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +11 -13
  95. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -40
  96. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +0 -1
  97. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +22 -43
  98. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +11 -22
  99. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +24 -25
  100. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +0 -1
  101. package/deps/rocksdb/rocksdb/table/get_context.h +0 -1
  102. package/deps/rocksdb/rocksdb/table/table_test.cc +3 -18
  103. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +3 -16
  104. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -3
  105. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -1
  106. package/deps/rocksdb/rocksdb/util/bloom_test.cc +0 -201
  107. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +48 -0
  108. package/deps/rocksdb/rocksdb/util/filter_bench.cc +5 -11
  109. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3 -0
  110. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -21
  111. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
  112. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +45 -0
  113. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +21 -14
  114. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +10 -1
  115. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +3 -1
  116. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +9 -0
  117. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +3 -2
  118. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -1
  119. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +5 -4
  120. package/deps/rocksdb/rocksdb.gyp +1 -1
  121. package/index.js +36 -14
  122. package/package-lock.json +2 -2
  123. package/package.json +1 -1
  124. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  125. package/prebuilds/linux-x64/node.napi.node +0 -0
  126. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +0 -358
  127. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +0 -127
  128. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +0 -219
package/chained-batch.js CHANGED
@@ -27,7 +27,12 @@ class ChainedBatch extends AbstractChainedBatch {
27
27
  }
28
28
 
29
29
  _write (options, callback) {
30
- process.nextTick(callback, binding.batch_write(this[kDbContext], this[kBatchContext], options))
30
+ try {
31
+ binding.batch_write(this[kDbContext], this[kBatchContext], options)
32
+ process.nextTick(callback, null)
33
+ } catch (err) {
34
+ process.nextTick(callback, err)
35
+ }
31
36
  }
32
37
 
33
38
  _close (callback) {
@@ -587,6 +587,7 @@ include_directories(${PROJECT_SOURCE_DIR}/include)
587
587
  if(USE_FOLLY)
588
588
  include_directories(${PROJECT_SOURCE_DIR}/third-party/folly)
589
589
  add_definitions(-DUSE_FOLLY -DFOLLY_NO_CONFIG)
590
+ list(APPEND THIRDPARTY_LIBS glog)
590
591
  endif()
591
592
  find_package(Threads REQUIRED)
592
593
 
@@ -614,6 +615,7 @@ set(SOURCES
614
615
  db/blob/blob_log_format.cc
615
616
  db/blob/blob_log_sequential_reader.cc
616
617
  db/blob/blob_log_writer.cc
618
+ db/blob/blob_source.cc
617
619
  db/blob/prefetch_buffer_collection.cc
618
620
  db/builder.cc
619
621
  db/c.cc
@@ -738,7 +740,6 @@ set(SOURCES
738
740
  table/adaptive/adaptive_table_factory.cc
739
741
  table/block_based/binary_search_index_reader.cc
740
742
  table/block_based/block.cc
741
- table/block_based/block_based_filter_block.cc
742
743
  table/block_based/block_based_table_builder.cc
743
744
  table/block_based/block_based_table_factory.cc
744
745
  table/block_based/block_based_table_iterator.cc
@@ -976,9 +977,13 @@ endif()
976
977
  if(USE_FOLLY)
977
978
  list(APPEND SOURCES
978
979
  third-party/folly/folly/container/detail/F14Table.cpp
980
+ third-party/folly/folly/detail/Futex.cpp
979
981
  third-party/folly/folly/lang/SafeAssert.cpp
980
982
  third-party/folly/folly/lang/ToAscii.cpp
981
- third-party/folly/folly/ScopeGuard.cpp)
983
+ third-party/folly/folly/ScopeGuard.cpp
984
+ third-party/folly/folly/synchronization/AtomicNotification.cpp
985
+ third-party/folly/folly/synchronization/DistributedMutex.cpp
986
+ third-party/folly/folly/synchronization/ParkingLot.cpp)
982
987
  endif()
983
988
 
984
989
  set(ROCKSDB_STATIC_LIB rocksdb${ARTIFACT_SUFFIX})
@@ -1213,6 +1218,7 @@ if(WITH_TESTS)
1213
1218
  db/blob/blob_file_garbage_test.cc
1214
1219
  db/blob/blob_file_reader_test.cc
1215
1220
  db/blob/blob_garbage_meter_test.cc
1221
+ db/blob/blob_source_test.cc
1216
1222
  db/blob/db_blob_basic_test.cc
1217
1223
  db/blob/db_blob_compaction_test.cc
1218
1224
  db/blob/db_blob_corruption_test.cc
@@ -1321,7 +1327,6 @@ if(WITH_TESTS)
1321
1327
  options/customizable_test.cc
1322
1328
  options/options_settable_test.cc
1323
1329
  options/options_test.cc
1324
- table/block_based/block_based_filter_block_test.cc
1325
1330
  table/block_based/block_based_table_reader_test.cc
1326
1331
  table/block_based/block_test.cc
1327
1332
  table/block_based/data_block_hash_index_test.cc
@@ -461,6 +461,8 @@ ifeq ($(USE_FOLLY),1)
461
461
  endif
462
462
  PLATFORM_CCFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
463
463
  PLATFORM_CXXFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
464
+ # TODO: fix linking with fbcode compiler config
465
+ PLATFORM_LDFLAGS += -lglog
464
466
  endif
465
467
 
466
468
  ifdef TEST_CACHE_LINE_SIZE
@@ -1594,9 +1596,6 @@ random_access_file_reader_test: $(OBJ_DIR)/file/random_access_file_reader_test.o
1594
1596
  file_reader_writer_test: $(OBJ_DIR)/util/file_reader_writer_test.o $(TEST_LIBRARY) $(LIBRARY)
1595
1597
  $(AM_LINK)
1596
1598
 
1597
- block_based_filter_block_test: $(OBJ_DIR)/table/block_based/block_based_filter_block_test.o $(TEST_LIBRARY) $(LIBRARY)
1598
- $(AM_LINK)
1599
-
1600
1599
  block_based_table_reader_test: table/block_based/block_based_table_reader_test.o $(TEST_LIBRARY) $(LIBRARY)
1601
1600
  $(AM_LINK)
1602
1601
 
@@ -1864,6 +1863,9 @@ blob_file_garbage_test: $(OBJ_DIR)/db/blob/blob_file_garbage_test.o $(TEST_LIBRA
1864
1863
  blob_file_reader_test: $(OBJ_DIR)/db/blob/blob_file_reader_test.o $(TEST_LIBRARY) $(LIBRARY)
1865
1864
  $(AM_LINK)
1866
1865
 
1866
+ blob_source_test: $(OBJ_DIR)/db/blob/blob_source_test.o $(TEST_LIBRARY) $(LIBRARY)
1867
+ $(AM_LINK)
1868
+
1867
1869
  blob_garbage_meter_test: $(OBJ_DIR)/db/blob/blob_garbage_meter_test.o $(TEST_LIBRARY) $(LIBRARY)
1868
1870
  $(AM_LINK)
1869
1871
 
@@ -2357,10 +2359,14 @@ checkout_folly:
2357
2359
  fi
2358
2360
  @# Pin to a particular version for public CI, so that PR authors don't
2359
2361
  @# need to worry about folly breaking our integration. Update periodically
2360
- cd third-party/folly && git reset --hard 98b9b2c1124e99f50f9085ddee74ce32afffc665
2362
+ cd third-party/folly && git reset --hard beacd86d63cd71c904632262e6c36f60874d78ba
2361
2363
  @# A hack to remove boost dependency.
2362
2364
  @# NOTE: this hack is not needed if using FBCODE compiler config
2363
2365
  perl -pi -e 's/^(#include <boost)/\/\/$$1/' third-party/folly/folly/functional/Invoke.h
2366
+ @# NOTE: this hack is required for clang in some cases
2367
+ perl -pi -e 's/int rv = syscall/int rv = (int)syscall/' third-party/folly/folly/detail/Futex.cpp
2368
+ @# NOTE: this hack is required for gcc in some cases
2369
+ perl -pi -e 's/(__has_include.<experimental.memory_resource>.)/__cpp_rtti && $$1/' third-party/folly/folly/memory/MemoryResource.h
2364
2370
 
2365
2371
  # ---------------------------------------------------------------------------
2366
2372
  # Build size testing
@@ -30,6 +30,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
30
30
  "db/blob/blob_log_format.cc",
31
31
  "db/blob/blob_log_sequential_reader.cc",
32
32
  "db/blob/blob_log_writer.cc",
33
+ "db/blob/blob_source.cc",
33
34
  "db/blob/prefetch_buffer_collection.cc",
34
35
  "db/builder.cc",
35
36
  "db/c.cc",
@@ -165,7 +166,6 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
165
166
  "table/adaptive/adaptive_table_factory.cc",
166
167
  "table/block_based/binary_search_index_reader.cc",
167
168
  "table/block_based/block.cc",
168
- "table/block_based/block_based_filter_block.cc",
169
169
  "table/block_based/block_based_table_builder.cc",
170
170
  "table/block_based/block_based_table_factory.cc",
171
171
  "table/block_based/block_based_table_iterator.cc",
@@ -335,6 +335,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
335
335
  "//folly/experimental/coro:collect",
336
336
  "//folly/experimental/coro:coroutine",
337
337
  "//folly/experimental/coro:task",
338
+ "//folly/synchronization:distributed_mutex",
338
339
  ], headers=None, link_whole=False, extra_test_libs=False)
339
340
 
340
341
  cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
@@ -359,6 +360,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
359
360
  "db/blob/blob_log_format.cc",
360
361
  "db/blob/blob_log_sequential_reader.cc",
361
362
  "db/blob/blob_log_writer.cc",
363
+ "db/blob/blob_source.cc",
362
364
  "db/blob/prefetch_buffer_collection.cc",
363
365
  "db/builder.cc",
364
366
  "db/c.cc",
@@ -494,7 +496,6 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
494
496
  "table/adaptive/adaptive_table_factory.cc",
495
497
  "table/block_based/binary_search_index_reader.cc",
496
498
  "table/block_based/block.cc",
497
- "table/block_based/block_based_filter_block.cc",
498
499
  "table/block_based/block_based_table_builder.cc",
499
500
  "table/block_based/block_based_table_factory.cc",
500
501
  "table/block_based/block_based_table_iterator.cc",
@@ -664,6 +665,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
664
665
  "//folly/experimental/coro:collect",
665
666
  "//folly/experimental/coro:coroutine",
666
667
  "//folly/experimental/coro:task",
668
+ "//folly/synchronization:distributed_mutex",
667
669
  ], headers=None, link_whole=True, extra_test_libs=False)
668
670
 
669
671
  cpp_library_wrapper(name="rocksdb_test_lib", srcs=[
@@ -4800,8 +4802,8 @@ cpp_unittest_wrapper(name="blob_garbage_meter_test",
4800
4802
  extra_compiler_flags=[])
4801
4803
 
4802
4804
 
4803
- cpp_unittest_wrapper(name="block_based_filter_block_test",
4804
- srcs=["table/block_based/block_based_filter_block_test.cc"],
4805
+ cpp_unittest_wrapper(name="blob_source_test",
4806
+ srcs=["db/blob/blob_source_test.cc"],
4805
4807
  deps=[":rocksdb_test_lib"],
4806
4808
  extra_compiler_flags=[])
4807
4809
 
@@ -26,6 +26,7 @@
26
26
  #include "table/block_based/block_based_table_reader.h"
27
27
  #include "table/block_based/cachable_entry.h"
28
28
  #include "util/coding.h"
29
+ #include "util/distributed_mutex.h"
29
30
  #include "util/gflags_compat.h"
30
31
  #include "util/hash.h"
31
32
  #include "util/mutexlock.h"
@@ -587,7 +588,15 @@ class CacheBench {
587
588
  }
588
589
 
589
590
  void PrintEnv() const {
591
+ #if defined(__GNUC__) && !defined(__OPTIMIZE__)
592
+ printf(
593
+ "WARNING: Optimization is disabled: benchmarks unnecessarily slow\n");
594
+ #endif
595
+ #ifndef NDEBUG
596
+ printf("WARNING: Assertions are enabled; benchmarks unnecessarily slow\n");
597
+ #endif
590
598
  printf("RocksDB version : %d.%d\n", kMajorVersion, kMinorVersion);
599
+ printf("DMutex impl name : %s\n", DMutex::kName());
591
600
  printf("Number of threads : %u\n", FLAGS_threads);
592
601
  printf("Ops per thread : %" PRIu64 "\n", FLAGS_ops_per_thread);
593
602
  printf("Cache size : %s\n",
@@ -650,6 +650,10 @@ TEST_P(CacheTest, ReleaseWithoutErase) {
650
650
  }
651
651
 
652
652
  TEST_P(CacheTest, SetCapacity) {
653
+ if (GetParam() == kFast) {
654
+ ROCKSDB_GTEST_BYPASS("FastLRUCache doesn't support capacity adjustments.");
655
+ return;
656
+ }
653
657
  // test1: increase capacity
654
658
  // lets create a cache with capacity 5,
655
659
  // then, insert 5 elements, then increase capacity
@@ -698,6 +702,12 @@ TEST_P(CacheTest, SetCapacity) {
698
702
  }
699
703
 
700
704
  TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
705
+ if (GetParam() == kFast) {
706
+ ROCKSDB_GTEST_BYPASS(
707
+ "FastLRUCache doesn't support an unbounded number of inserts beyond "
708
+ "capacity.");
709
+ return;
710
+ }
701
711
  // test1: set the flag to false. Insert more keys than capacity. See if they
702
712
  // all go through.
703
713
  std::shared_ptr<Cache> cache = NewCache(5, 0, false);
@@ -749,6 +759,10 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
749
759
  }
750
760
 
751
761
  TEST_P(CacheTest, OverCapacity) {
762
+ if (GetParam() == kFast) {
763
+ ROCKSDB_GTEST_BYPASS("FastLRUCache doesn't support capacity adjustments.");
764
+ return;
765
+ }
752
766
  size_t n = 10;
753
767
 
754
768
  // a LRUCache with n entries and one shard only
@@ -39,7 +39,7 @@ std::shared_ptr<Cache> NewClockCache(
39
39
  #include "port/port.h"
40
40
  #include "tbb/concurrent_hash_map.h"
41
41
  #include "util/autovector.h"
42
- #include "util/mutexlock.h"
42
+ #include "util/distributed_mutex.h"
43
43
 
44
44
  namespace ROCKSDB_NAMESPACE {
45
45
 
@@ -368,7 +368,7 @@ class ClockCacheShard final : public CacheShard {
368
368
 
369
369
  // Guards list_, head_, and recycle_. In addition, updating table_ also has
370
370
  // to hold the mutex, to avoid the cache being in inconsistent state.
371
- mutable port::Mutex mutex_;
371
+ mutable DMutex mutex_;
372
372
 
373
373
  // The circular list of cache handles. Initially the list is empty. Once a
374
374
  // handle is needed by insertion, and no more handles are available in
@@ -431,7 +431,7 @@ void ClockCacheShard::ApplyToSomeEntries(
431
431
  DeleterFn deleter)>& callback,
432
432
  uint32_t average_entries_per_lock, uint32_t* state) {
433
433
  assert(average_entries_per_lock > 0);
434
- MutexLock lock(&mutex_);
434
+ DMutexLock l(mutex_);
435
435
 
436
436
  // Figure out the range to iterate, update `state`
437
437
  size_t list_size = list_.size();
@@ -532,7 +532,7 @@ bool ClockCacheShard::Unref(CacheHandle* handle, bool set_usage,
532
532
  pinned_usage_.fetch_sub(total_charge, std::memory_order_relaxed);
533
533
  // Cleanup if it is the last reference.
534
534
  if (!InCache(flags)) {
535
- MutexLock l(&mutex_);
535
+ DMutexLock l(mutex_);
536
536
  RecycleHandle(handle, context);
537
537
  }
538
538
  }
@@ -598,7 +598,7 @@ bool ClockCacheShard::EvictFromCache(size_t charge, CleanupContext* context) {
598
598
  void ClockCacheShard::SetCapacity(size_t capacity) {
599
599
  CleanupContext context;
600
600
  {
601
- MutexLock l(&mutex_);
601
+ DMutexLock l(mutex_);
602
602
  capacity_.store(capacity, std::memory_order_relaxed);
603
603
  EvictFromCache(0, &context);
604
604
  }
@@ -618,7 +618,7 @@ CacheHandle* ClockCacheShard::Insert(
618
618
  uint32_t meta_charge =
619
619
  CacheHandle::CalcMetadataCharge(key, metadata_charge_policy_);
620
620
  size_t total_charge = charge + meta_charge;
621
- MutexLock l(&mutex_);
621
+ DMutexLock l(mutex_);
622
622
  bool success = EvictFromCache(total_charge, context);
623
623
  bool strict = strict_capacity_limit_.load(std::memory_order_relaxed);
624
624
  if (!success && (strict || !hold_reference)) {
@@ -744,7 +744,7 @@ void ClockCacheShard::Erase(const Slice& key, uint32_t hash) {
744
744
 
745
745
  bool ClockCacheShard::EraseAndConfirm(const Slice& key, uint32_t hash,
746
746
  CleanupContext* context) {
747
- MutexLock l(&mutex_);
747
+ DMutexLock l(mutex_);
748
748
  HashTable::accessor accessor;
749
749
  bool erased = false;
750
750
  if (table_.find(accessor, ClockCacheKey(key, hash))) {
@@ -758,7 +758,7 @@ bool ClockCacheShard::EraseAndConfirm(const Slice& key, uint32_t hash,
758
758
  void ClockCacheShard::EraseUnRefEntries() {
759
759
  CleanupContext context;
760
760
  {
761
- MutexLock l(&mutex_);
761
+ DMutexLock l(mutex_);
762
762
  table_.clear();
763
763
  for (auto& handle : list_) {
764
764
  UnsetInCache(&handle, &context);