@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.
- package/binding.cc +320 -324
- package/chained-batch.js +6 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +8 -3
- package/deps/rocksdb/rocksdb/Makefile +10 -4
- package/deps/rocksdb/rocksdb/TARGETS +6 -4
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +14 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +8 -8
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +272 -174
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +201 -57
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +19 -19
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +2 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +170 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +95 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +298 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +172 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +8 -3
- package/deps/rocksdb/rocksdb/db/column_family.h +6 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +38 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +4 -7
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -71
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +70 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +13 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +36 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +139 -91
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +48 -14
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +90 -55
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +9 -4
- package/deps/rocksdb/rocksdb/db/db_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -7
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/dbformat.cc +3 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +1 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +13 -5
- package/deps/rocksdb/rocksdb/db/version_edit.h +22 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +4 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +109 -41
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -4
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/version_util.h +1 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +34 -10
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +2 -0
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +7 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +5 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +24 -3
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +9 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -3
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -2
- package/deps/rocksdb/rocksdb/options/options_test.cc +1 -11
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +11 -3
- package/deps/rocksdb/rocksdb/src.mk +6 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +4 -33
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +38 -118
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +10 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +4 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -28
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -91
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -30
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -27
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +11 -13
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -40
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +22 -43
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +11 -22
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +24 -25
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +0 -1
- package/deps/rocksdb/rocksdb/table/get_context.h +0 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +3 -18
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +3 -16
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +0 -201
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +48 -0
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +5 -11
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -21
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +45 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +21 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +10 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +9 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +5 -4
- package/deps/rocksdb/rocksdb.gyp +1 -1
- package/index.js +36 -14
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +0 -358
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +0 -127
- 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
|
-
|
|
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
|
|
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="
|
|
4804
|
-
srcs=["
|
|
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/
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
761
|
+
DMutexLock l(mutex_);
|
|
762
762
|
table_.clear();
|
|
763
763
|
for (auto& handle : list_) {
|
|
764
764
|
UnsetInCache(&handle, &context);
|