@nxtedition/rocksdb 7.0.0-alpha.6 → 7.0.0-alpha.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 +1 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +8 -1
- package/deps/rocksdb/rocksdb/TARGETS +14 -0
- package/deps/rocksdb/rocksdb/cache/cache.cc +50 -2
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +111 -33
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +71 -31
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +31 -30
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +21 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +35 -38
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +22 -9
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +48 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +78 -0
- package/deps/rocksdb/rocksdb/db/builder.cc +7 -5
- package/deps/rocksdb/rocksdb/db/c.cc +777 -108
- package/deps/rocksdb/rocksdb/db/c_test.c +290 -30
- package/deps/rocksdb/rocksdb/db/column_family.cc +13 -0
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +24 -36
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +18 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +24 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +6 -9
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +38 -40
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +14 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -5
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +253 -24
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +9 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +67 -10
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +83 -7
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +68 -0
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +40 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +94 -23
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +17 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +263 -58
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +186 -23
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +43 -14
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +24 -28
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +116 -83
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +13 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +71 -34
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +72 -33
- package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +629 -0
- package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +438 -10
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +43 -2
- package/deps/rocksdb/rocksdb/db/db_test.cc +41 -1
- package/deps/rocksdb/rocksdb/db/db_test2.cc +41 -12
- package/deps/rocksdb/rocksdb/db/db_test_util.h +1 -0
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +90 -0
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +109 -16
- package/deps/rocksdb/rocksdb/db/dbformat.h +1 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +54 -0
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -3
- package/deps/rocksdb/rocksdb/db/log_reader.cc +22 -4
- package/deps/rocksdb/rocksdb/db/log_reader.h +4 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +4 -0
- package/deps/rocksdb/rocksdb/db/post_memtable_callback.h +25 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/repair_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/snapshot_impl.h +65 -2
- package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +3 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +52 -0
- package/deps/rocksdb/rocksdb/db/version_set.h +57 -43
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +14 -4
- package/deps/rocksdb/rocksdb/db/wal_manager.h +16 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +141 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +55 -0
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +292 -0
- package/deps/rocksdb/rocksdb/db/write_thread.h +6 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +42 -19
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +6 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +11 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +18 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +74 -167
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +16 -9
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +117 -10
- package/deps/rocksdb/rocksdb/env/composite_env.cc +7 -0
- package/deps/rocksdb/rocksdb/env/env.cc +4 -0
- package/deps/rocksdb/rocksdb/env/env_posix.cc +3 -3
- package/deps/rocksdb/rocksdb/env/env_test.cc +5 -5
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +45 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.h +14 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +1 -1
- package/deps/rocksdb/rocksdb/env/io_posix.cc +50 -24
- package/deps/rocksdb/rocksdb/env/io_posix.h +9 -7
- package/deps/rocksdb/rocksdb/env/mock_env.cc +9 -3
- package/deps/rocksdb/rocksdb/file/file_util.cc +4 -1
- package/deps/rocksdb/rocksdb/file/filename.cc +14 -0
- package/deps/rocksdb/rocksdb/file/line_file_reader.cc +9 -4
- package/deps/rocksdb/rocksdb/file/line_file_reader.h +3 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +157 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +8 -1
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +68 -32
- package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +20 -6
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +10 -6
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +231 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +4 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +13 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +4 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +31 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +4 -20
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +34 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +36 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +74 -0
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +36 -3
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +16 -3
- package/deps/rocksdb/rocksdb/logging/env_logger.h +3 -3
- package/deps/rocksdb/rocksdb/logging/log_buffer.cc +2 -2
- package/deps/rocksdb/rocksdb/logging/log_buffer.h +1 -1
- package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -3
- package/deps/rocksdb/rocksdb/memory/arena.cc +0 -1
- package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +61 -73
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +6 -5
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +6 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +7 -3
- package/deps/rocksdb/rocksdb/options/cf_options.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +3 -0
- package/deps/rocksdb/rocksdb/options/options.cc +4 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_parser.cc +1 -1
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +1 -0
- package/deps/rocksdb/rocksdb/options/options_test.cc +4 -0
- package/deps/rocksdb/rocksdb/port/port_posix.h +0 -2
- package/deps/rocksdb/rocksdb/port/sys_time.h +27 -11
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +16 -0
- package/deps/rocksdb/rocksdb/port/win/io_win.h +11 -2
- package/deps/rocksdb/rocksdb/port/win/port_win.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -16
- package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +2 -2
- package/deps/rocksdb/rocksdb/port/win/win_logger.cc +2 -2
- package/deps/rocksdb/rocksdb/rocksdb.pc.in +4 -5
- package/deps/rocksdb/rocksdb/src.mk +3 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +7 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +39 -43
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +2 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +42 -34
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +7 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +9 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +6 -2
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +8 -5
- package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -14
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +2 -0
- package/deps/rocksdb/rocksdb/table/format.h +1 -3
- package/deps/rocksdb/rocksdb/table/get_context.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -0
- package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +3 -4
- package/deps/rocksdb/rocksdb/table/table_test.cc +1 -1
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +102 -6
- package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +19 -2
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +2 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2 -1
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +2 -4
- package/deps/rocksdb/rocksdb/util/autovector.h +11 -1
- package/deps/rocksdb/rocksdb/util/cleanable.cc +1 -0
- package/deps/rocksdb/rocksdb/util/compression.h +5 -7
- package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +14 -8
- package/deps/rocksdb/rocksdb/util/string_util.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +33 -63
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +14 -0
- package/deps/rocksdb/rocksdb/utilities/counted_fs.h +7 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +7 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +8 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +3 -0
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +6 -4
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +34 -21
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +31 -7
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +1 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +63 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +40 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +426 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +37 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +6 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +16 -18
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +61 -0
- package/deps/rocksdb/rocksdb.gyp +1 -0
- package/index.js +2 -2
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
package/binding.cc
CHANGED
|
@@ -1479,7 +1479,7 @@ struct NextWorker final : public Worker {
|
|
|
1479
1479
|
cache_.push_back(v.ToString());
|
|
1480
1480
|
}
|
|
1481
1481
|
|
|
1482
|
-
if (bytesRead > iterator_->highWaterMarkBytes_ || cache_.size() / 2 >= size_) {
|
|
1482
|
+
if ((iterator_->highWaterMarkBytes_ != -1 && bytesRead > iterator_->highWaterMarkBytes_) || cache_.size() / 2 >= size_) {
|
|
1483
1483
|
finished_ = false;
|
|
1484
1484
|
return rocksdb::Status::OK();
|
|
1485
1485
|
}
|
|
@@ -89,7 +89,11 @@ include(CMakeDependentOption)
|
|
|
89
89
|
if(MSVC)
|
|
90
90
|
option(WITH_GFLAGS "build with GFlags" OFF)
|
|
91
91
|
option(WITH_XPRESS "build with windows built in compression" OFF)
|
|
92
|
-
|
|
92
|
+
option(ROCKSDB_SKIP_THIRDPARTY "skip thirdparty.inc" OFF)
|
|
93
|
+
|
|
94
|
+
if(NOT ROCKSDB_SKIP_THIRDPARTY)
|
|
95
|
+
include(${CMAKE_CURRENT_SOURCE_DIR}/thirdparty.inc)
|
|
96
|
+
endif()
|
|
93
97
|
else()
|
|
94
98
|
if(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" AND NOT CMAKE_SYSTEM_NAME MATCHES "kFreeBSD")
|
|
95
99
|
# FreeBSD has jemalloc as default malloc
|
|
@@ -671,6 +675,7 @@ set(SOURCES
|
|
|
671
675
|
db/version_set.cc
|
|
672
676
|
db/wal_edit.cc
|
|
673
677
|
db/wal_manager.cc
|
|
678
|
+
db/wide/wide_column_serialization.cc
|
|
674
679
|
db/write_batch.cc
|
|
675
680
|
db/write_batch_base.cc
|
|
676
681
|
db/write_controller.cc
|
|
@@ -1122,8 +1127,8 @@ if(NOT WIN32 OR ROCKSDB_INSTALL_ON_WINDOWS)
|
|
|
1122
1127
|
)
|
|
1123
1128
|
|
|
1124
1129
|
configure_file(
|
|
1125
|
-
${
|
|
1126
|
-
${
|
|
1130
|
+
${PROJECT_NAME}.pc.in
|
|
1131
|
+
${PROJECT_NAME}.pc
|
|
1127
1132
|
@ONLY
|
|
1128
1133
|
)
|
|
1129
1134
|
|
|
@@ -1290,6 +1295,7 @@ if(WITH_TESTS)
|
|
|
1290
1295
|
db/version_set_test.cc
|
|
1291
1296
|
db/wal_manager_test.cc
|
|
1292
1297
|
db/wal_edit_test.cc
|
|
1298
|
+
db/wide/wide_column_serialization_test.cc
|
|
1293
1299
|
db/write_batch_test.cc
|
|
1294
1300
|
db/write_callback_test.cc
|
|
1295
1301
|
db/write_controller_test.cc
|
|
@@ -1384,6 +1390,7 @@ if(WITH_TESTS)
|
|
|
1384
1390
|
utilities/transactions/write_prepared_transaction_test.cc
|
|
1385
1391
|
utilities/transactions/write_unprepared_transaction_test.cc
|
|
1386
1392
|
utilities/transactions/lock/range/range_locking_test.cc
|
|
1393
|
+
utilities/transactions/timestamped_snapshot_test.cc
|
|
1387
1394
|
utilities/ttl/ttl_test.cc
|
|
1388
1395
|
utilities/util_merge_operators_test.cc
|
|
1389
1396
|
utilities/write_batch_with_index/write_batch_with_index_test.cc
|
|
@@ -1777,6 +1777,9 @@ write_prepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_prepare
|
|
|
1777
1777
|
write_unprepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_unprepared_transaction_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1778
1778
|
$(AM_LINK)
|
|
1779
1779
|
|
|
1780
|
+
timestamped_snapshot_test: $(OBJ_DIR)/utilities/transactions/timestamped_snapshot_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1781
|
+
$(AM_LINK)
|
|
1782
|
+
|
|
1780
1783
|
sst_dump: $(OBJ_DIR)/tools/sst_dump.o $(TOOLS_LIBRARY) $(LIBRARY)
|
|
1781
1784
|
$(AM_LINK)
|
|
1782
1785
|
|
|
@@ -1876,7 +1879,7 @@ testutil_test: $(OBJ_DIR)/test_util/testutil_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
|
1876
1879
|
io_tracer_test: $(OBJ_DIR)/trace_replay/io_tracer_test.o $(OBJ_DIR)/trace_replay/io_tracer.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1877
1880
|
$(AM_LINK)
|
|
1878
1881
|
|
|
1879
|
-
prefetch_test: $(OBJ_DIR)/file/prefetch_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1882
|
+
prefetch_test: $(OBJ_DIR)/file/prefetch_test.o $(OBJ_DIR)/tools/io_tracer_parser_tool.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1880
1883
|
$(AM_LINK)
|
|
1881
1884
|
|
|
1882
1885
|
io_tracer_parser_test: $(OBJ_DIR)/tools/io_tracer_parser_test.o $(OBJ_DIR)/tools/io_tracer_parser_tool.o $(TEST_LIBRARY) $(LIBRARY)
|
|
@@ -1902,6 +1905,10 @@ db_basic_bench: $(OBJ_DIR)/microbench/db_basic_bench.o $(LIBRARY)
|
|
|
1902
1905
|
|
|
1903
1906
|
cache_reservation_manager_test: $(OBJ_DIR)/cache/cache_reservation_manager_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1904
1907
|
$(AM_LINK)
|
|
1908
|
+
|
|
1909
|
+
wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1910
|
+
$(AM_LINK)
|
|
1911
|
+
|
|
1905
1912
|
#-------------------------------------------------
|
|
1906
1913
|
# make install related stuff
|
|
1907
1914
|
PREFIX ?= /usr/local
|
|
@@ -91,6 +91,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
91
91
|
"db/version_set.cc",
|
|
92
92
|
"db/wal_edit.cc",
|
|
93
93
|
"db/wal_manager.cc",
|
|
94
|
+
"db/wide/wide_column_serialization.cc",
|
|
94
95
|
"db/write_batch.cc",
|
|
95
96
|
"db/write_batch_base.cc",
|
|
96
97
|
"db/write_controller.cc",
|
|
@@ -419,6 +420,7 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
|
|
|
419
420
|
"db/version_set.cc",
|
|
420
421
|
"db/wal_edit.cc",
|
|
421
422
|
"db/wal_manager.cc",
|
|
423
|
+
"db/wide/wide_column_serialization.cc",
|
|
422
424
|
"db/write_batch.cc",
|
|
423
425
|
"db/write_batch_base.cc",
|
|
424
426
|
"db/write_controller.cc",
|
|
@@ -5766,6 +5768,12 @@ cpp_unittest_wrapper(name="timer_test",
|
|
|
5766
5768
|
extra_compiler_flags=[])
|
|
5767
5769
|
|
|
5768
5770
|
|
|
5771
|
+
cpp_unittest_wrapper(name="timestamped_snapshot_test",
|
|
5772
|
+
srcs=["utilities/transactions/timestamped_snapshot_test.cc"],
|
|
5773
|
+
deps=[":rocksdb_test_lib"],
|
|
5774
|
+
extra_compiler_flags=[])
|
|
5775
|
+
|
|
5776
|
+
|
|
5769
5777
|
cpp_unittest_wrapper(name="trace_analyzer_test",
|
|
5770
5778
|
srcs=["tools/trace_analyzer_test.cc"],
|
|
5771
5779
|
deps=[":rocksdb_test_lib"],
|
|
@@ -5814,6 +5822,12 @@ cpp_unittest_wrapper(name="wal_manager_test",
|
|
|
5814
5822
|
extra_compiler_flags=[])
|
|
5815
5823
|
|
|
5816
5824
|
|
|
5825
|
+
cpp_unittest_wrapper(name="wide_column_serialization_test",
|
|
5826
|
+
srcs=["db/wide/wide_column_serialization_test.cc"],
|
|
5827
|
+
deps=[":rocksdb_test_lib"],
|
|
5828
|
+
extra_compiler_flags=[])
|
|
5829
|
+
|
|
5830
|
+
|
|
5817
5831
|
cpp_unittest_wrapper(name="work_queue_test",
|
|
5818
5832
|
srcs=["util/work_queue_test.cc"],
|
|
5819
5833
|
deps=[":rocksdb_test_lib"],
|
|
@@ -34,13 +34,61 @@ static std::unordered_map<std::string, OptionTypeInfo>
|
|
|
34
34
|
OptionType::kDouble, OptionVerificationType::kNormal,
|
|
35
35
|
OptionTypeFlags::kMutable}},
|
|
36
36
|
};
|
|
37
|
+
|
|
38
|
+
static std::unordered_map<std::string, OptionTypeInfo>
|
|
39
|
+
comp_sec_cache_options_type_info = {
|
|
40
|
+
{"capacity",
|
|
41
|
+
{offsetof(struct CompressedSecondaryCacheOptions, capacity),
|
|
42
|
+
OptionType::kSizeT, OptionVerificationType::kNormal,
|
|
43
|
+
OptionTypeFlags::kMutable}},
|
|
44
|
+
{"num_shard_bits",
|
|
45
|
+
{offsetof(struct CompressedSecondaryCacheOptions, num_shard_bits),
|
|
46
|
+
OptionType::kInt, OptionVerificationType::kNormal,
|
|
47
|
+
OptionTypeFlags::kMutable}},
|
|
48
|
+
{"compression_type",
|
|
49
|
+
{offsetof(struct CompressedSecondaryCacheOptions, compression_type),
|
|
50
|
+
OptionType::kCompressionType, OptionVerificationType::kNormal,
|
|
51
|
+
OptionTypeFlags::kMutable}},
|
|
52
|
+
{"compress_format_version",
|
|
53
|
+
{offsetof(struct CompressedSecondaryCacheOptions,
|
|
54
|
+
compress_format_version),
|
|
55
|
+
OptionType::kUInt32T, OptionVerificationType::kNormal,
|
|
56
|
+
OptionTypeFlags::kMutable}},
|
|
57
|
+
};
|
|
37
58
|
#endif // ROCKSDB_LITE
|
|
38
59
|
|
|
39
60
|
Status SecondaryCache::CreateFromString(
|
|
40
61
|
const ConfigOptions& config_options, const std::string& value,
|
|
41
62
|
std::shared_ptr<SecondaryCache>* result) {
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
if (value.find("compressed_secondary_cache://") == 0) {
|
|
64
|
+
std::string args = value;
|
|
65
|
+
args.erase(0, std::strlen("compressed_secondary_cache://"));
|
|
66
|
+
Status status;
|
|
67
|
+
std::shared_ptr<SecondaryCache> sec_cache;
|
|
68
|
+
|
|
69
|
+
#ifndef ROCKSDB_LITE
|
|
70
|
+
CompressedSecondaryCacheOptions sec_cache_opts;
|
|
71
|
+
status = OptionTypeInfo::ParseStruct(config_options, "",
|
|
72
|
+
&comp_sec_cache_options_type_info, "",
|
|
73
|
+
args, &sec_cache_opts);
|
|
74
|
+
if (status.ok()) {
|
|
75
|
+
sec_cache = NewCompressedSecondaryCache(sec_cache_opts);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
#else
|
|
79
|
+
(void)config_options;
|
|
80
|
+
status = Status::NotSupported(
|
|
81
|
+
"Cannot load compressed secondary cache in LITE mode ", args);
|
|
82
|
+
#endif //! ROCKSDB_LITE
|
|
83
|
+
|
|
84
|
+
if (status.ok()) {
|
|
85
|
+
result->swap(sec_cache);
|
|
86
|
+
}
|
|
87
|
+
return status;
|
|
88
|
+
} else {
|
|
89
|
+
return LoadSharedObject<SecondaryCache>(config_options, value, nullptr,
|
|
90
|
+
result);
|
|
91
|
+
}
|
|
44
92
|
}
|
|
45
93
|
|
|
46
94
|
Status Cache::CreateFromString(const ConfigOptions& config_options,
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include <set>
|
|
13
13
|
#include <sstream>
|
|
14
14
|
|
|
15
|
+
#include "cache/fast_lru_cache.h"
|
|
15
16
|
#include "db/db_impl/db_impl.h"
|
|
16
17
|
#include "monitoring/histogram.h"
|
|
17
18
|
#include "port/port.h"
|
|
@@ -76,7 +77,7 @@ DEFINE_string(secondary_cache_uri, "",
|
|
|
76
77
|
static class std::shared_ptr<ROCKSDB_NAMESPACE::SecondaryCache> secondary_cache;
|
|
77
78
|
#endif // ROCKSDB_LITE
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
|
|
80
81
|
|
|
81
82
|
// ## BEGIN stress_cache_key sub-tool options ##
|
|
82
83
|
// See class StressCacheKey below.
|
|
@@ -279,13 +280,15 @@ class CacheBench {
|
|
|
279
280
|
if (max_key > (static_cast<uint64_t>(1) << max_log_)) max_log_++;
|
|
280
281
|
}
|
|
281
282
|
|
|
282
|
-
if (
|
|
283
|
+
if (FLAGS_cache_type == "clock_cache") {
|
|
283
284
|
cache_ = NewClockCache(FLAGS_cache_size, FLAGS_num_shard_bits);
|
|
284
285
|
if (!cache_) {
|
|
285
286
|
fprintf(stderr, "Clock cache not supported.\n");
|
|
286
287
|
exit(1);
|
|
287
288
|
}
|
|
288
|
-
} else {
|
|
289
|
+
} else if (FLAGS_cache_type == "fast_lru_cache") {
|
|
290
|
+
cache_ = NewFastLRUCache(FLAGS_cache_size, FLAGS_num_shard_bits);
|
|
291
|
+
} else if (FLAGS_cache_type == "lru_cache") {
|
|
289
292
|
LRUCacheOptions opts(FLAGS_cache_size, FLAGS_num_shard_bits, false, 0.5);
|
|
290
293
|
#ifndef ROCKSDB_LITE
|
|
291
294
|
if (!FLAGS_secondary_cache_uri.empty()) {
|
|
@@ -303,6 +306,9 @@ class CacheBench {
|
|
|
303
306
|
#endif // ROCKSDB_LITE
|
|
304
307
|
|
|
305
308
|
cache_ = NewLRUCache(opts);
|
|
309
|
+
} else {
|
|
310
|
+
fprintf(stderr, "Cache type not supported.");
|
|
311
|
+
exit(1);
|
|
306
312
|
}
|
|
307
313
|
}
|
|
308
314
|
|
|
@@ -18,24 +18,43 @@
|
|
|
18
18
|
#include "cache/clock_cache.h"
|
|
19
19
|
#include "cache/fast_lru_cache.h"
|
|
20
20
|
#include "cache/lru_cache.h"
|
|
21
|
+
#include "port/stack_trace.h"
|
|
21
22
|
#include "test_util/testharness.h"
|
|
22
23
|
#include "util/coding.h"
|
|
23
24
|
#include "util/string_util.h"
|
|
24
25
|
|
|
25
26
|
namespace ROCKSDB_NAMESPACE {
|
|
26
27
|
|
|
28
|
+
namespace {
|
|
29
|
+
|
|
27
30
|
// Conversions between numeric keys/values and the types expected by Cache.
|
|
28
|
-
|
|
31
|
+
std::string EncodeKey16Bytes(int k) {
|
|
32
|
+
std::string result;
|
|
33
|
+
PutFixed32(&result, k);
|
|
34
|
+
result.append(std::string(12, 'a')); // Because we need a 16B output, we
|
|
35
|
+
// add a 12-byte padding.
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
int DecodeKey16Bytes(const Slice& k) {
|
|
40
|
+
assert(k.size() == 16);
|
|
41
|
+
return DecodeFixed32(k.data()); // Decodes only the first 4 bytes of k.
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
std::string EncodeKey32Bits(int k) {
|
|
29
45
|
std::string result;
|
|
30
46
|
PutFixed32(&result, k);
|
|
31
47
|
return result;
|
|
32
48
|
}
|
|
33
|
-
|
|
49
|
+
|
|
50
|
+
int DecodeKey32Bits(const Slice& k) {
|
|
34
51
|
assert(k.size() == 4);
|
|
35
52
|
return DecodeFixed32(k.data());
|
|
36
53
|
}
|
|
37
|
-
|
|
38
|
-
|
|
54
|
+
|
|
55
|
+
void* EncodeValue(uintptr_t v) { return reinterpret_cast<void*>(v); }
|
|
56
|
+
|
|
57
|
+
int DecodeValue(void* v) {
|
|
39
58
|
return static_cast<int>(reinterpret_cast<uintptr_t>(v));
|
|
40
59
|
}
|
|
41
60
|
|
|
@@ -50,12 +69,19 @@ void eraseDeleter(const Slice& /*key*/, void* value) {
|
|
|
50
69
|
cache->Erase("foo");
|
|
51
70
|
}
|
|
52
71
|
|
|
72
|
+
} // anonymous namespace
|
|
73
|
+
|
|
53
74
|
class CacheTest : public testing::TestWithParam<std::string> {
|
|
54
75
|
public:
|
|
55
76
|
static CacheTest* current_;
|
|
77
|
+
static std::string type_;
|
|
56
78
|
|
|
57
79
|
static void Deleter(const Slice& key, void* v) {
|
|
58
|
-
|
|
80
|
+
if (type_ == kFast) {
|
|
81
|
+
current_->deleted_keys_.push_back(DecodeKey16Bytes(key));
|
|
82
|
+
} else {
|
|
83
|
+
current_->deleted_keys_.push_back(DecodeKey32Bits(key));
|
|
84
|
+
}
|
|
59
85
|
current_->deleted_values_.push_back(DecodeValue(v));
|
|
60
86
|
}
|
|
61
87
|
|
|
@@ -74,6 +100,7 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
74
100
|
: cache_(NewCache(kCacheSize, kNumShardBits, false)),
|
|
75
101
|
cache2_(NewCache(kCacheSize2, kNumShardBits2, false)) {
|
|
76
102
|
current_ = this;
|
|
103
|
+
type_ = GetParam();
|
|
77
104
|
}
|
|
78
105
|
|
|
79
106
|
~CacheTest() override {}
|
|
@@ -116,6 +143,27 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
116
143
|
return nullptr;
|
|
117
144
|
}
|
|
118
145
|
|
|
146
|
+
// These functions encode/decode keys in tests cases that use
|
|
147
|
+
// int keys.
|
|
148
|
+
// Currently, FastLRUCache requires keys to be 16B long, whereas
|
|
149
|
+
// LRUCache and ClockCache don't, so the encoding depends on
|
|
150
|
+
// the cache type.
|
|
151
|
+
std::string EncodeKey(int k) {
|
|
152
|
+
if (GetParam() == kFast) {
|
|
153
|
+
return EncodeKey16Bytes(k);
|
|
154
|
+
} else {
|
|
155
|
+
return EncodeKey32Bits(k);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
int DecodeKey(const Slice& k) {
|
|
160
|
+
if (GetParam() == kFast) {
|
|
161
|
+
return DecodeKey16Bytes(k);
|
|
162
|
+
} else {
|
|
163
|
+
return DecodeKey32Bits(k);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
119
167
|
int Lookup(std::shared_ptr<Cache> cache, int key) {
|
|
120
168
|
Cache::Handle* handle = cache->Lookup(EncodeKey(key));
|
|
121
169
|
const int r = (handle == nullptr) ? -1 : DecodeValue(cache->Value(handle));
|
|
@@ -159,11 +207,18 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
159
207
|
Erase(cache2_, key);
|
|
160
208
|
}
|
|
161
209
|
};
|
|
210
|
+
|
|
162
211
|
CacheTest* CacheTest::current_;
|
|
212
|
+
std::string CacheTest::type_;
|
|
163
213
|
|
|
164
214
|
class LRUCacheTest : public CacheTest {};
|
|
165
215
|
|
|
166
216
|
TEST_P(CacheTest, UsageTest) {
|
|
217
|
+
if (GetParam() == kFast) {
|
|
218
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache requires 16 byte keys.");
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
|
|
167
222
|
// cache is std::shared_ptr and will be automatically cleaned up.
|
|
168
223
|
const uint64_t kCapacity = 100000;
|
|
169
224
|
auto cache = NewCache(kCapacity, 8, false, kDontChargeCacheMetadata);
|
|
@@ -208,6 +263,11 @@ TEST_P(CacheTest, UsageTest) {
|
|
|
208
263
|
}
|
|
209
264
|
|
|
210
265
|
TEST_P(CacheTest, PinnedUsageTest) {
|
|
266
|
+
if (GetParam() == kFast) {
|
|
267
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache requires 16 byte keys.");
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
|
|
211
271
|
// cache is std::shared_ptr and will be automatically cleaned up.
|
|
212
272
|
const uint64_t kCapacity = 200000;
|
|
213
273
|
auto cache = NewCache(kCapacity, 8, false, kDontChargeCacheMetadata);
|
|
@@ -460,12 +520,22 @@ TEST_P(CacheTest, EvictionPolicyRef) {
|
|
|
460
520
|
}
|
|
461
521
|
|
|
462
522
|
TEST_P(CacheTest, EvictEmptyCache) {
|
|
523
|
+
if (GetParam() == kFast) {
|
|
524
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache requires 16 byte keys.");
|
|
525
|
+
return;
|
|
526
|
+
}
|
|
527
|
+
|
|
463
528
|
// Insert item large than capacity to trigger eviction on empty cache.
|
|
464
529
|
auto cache = NewCache(1, 0, false);
|
|
465
530
|
ASSERT_OK(cache->Insert("foo", nullptr, 10, dumbDeleter));
|
|
466
531
|
}
|
|
467
532
|
|
|
468
533
|
TEST_P(CacheTest, EraseFromDeleter) {
|
|
534
|
+
if (GetParam() == kFast) {
|
|
535
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache requires 16 byte keys.");
|
|
536
|
+
return;
|
|
537
|
+
}
|
|
538
|
+
|
|
469
539
|
// Have deleter which will erase item from cache, which will re-enter
|
|
470
540
|
// the cache at that point.
|
|
471
541
|
std::shared_ptr<Cache> cache = NewCache(10, 0, false);
|
|
@@ -534,9 +604,9 @@ TEST_P(CacheTest, NewId) {
|
|
|
534
604
|
|
|
535
605
|
class Value {
|
|
536
606
|
public:
|
|
537
|
-
explicit Value(
|
|
607
|
+
explicit Value(int v) : v_(v) {}
|
|
538
608
|
|
|
539
|
-
|
|
609
|
+
int v_;
|
|
540
610
|
};
|
|
541
611
|
|
|
542
612
|
namespace {
|
|
@@ -584,8 +654,8 @@ TEST_P(CacheTest, SetCapacity) {
|
|
|
584
654
|
std::shared_ptr<Cache> cache = NewCache(5, 0, false);
|
|
585
655
|
std::vector<Cache::Handle*> handles(10);
|
|
586
656
|
// Insert 5 entries, but not releasing.
|
|
587
|
-
for (
|
|
588
|
-
std::string key =
|
|
657
|
+
for (int i = 0; i < 5; i++) {
|
|
658
|
+
std::string key = EncodeKey(i + 1);
|
|
589
659
|
Status s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
|
|
590
660
|
ASSERT_TRUE(s.ok());
|
|
591
661
|
}
|
|
@@ -599,14 +669,14 @@ TEST_P(CacheTest, SetCapacity) {
|
|
|
599
669
|
// insert 5 more elements to cache, then release 5,
|
|
600
670
|
// then decrease capacity to 7, final capacity should be 7
|
|
601
671
|
// and usage should be 7
|
|
602
|
-
for (
|
|
603
|
-
std::string key =
|
|
672
|
+
for (int i = 5; i < 10; i++) {
|
|
673
|
+
std::string key = EncodeKey(i + 1);
|
|
604
674
|
Status s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
|
|
605
675
|
ASSERT_TRUE(s.ok());
|
|
606
676
|
}
|
|
607
677
|
ASSERT_EQ(10U, cache->GetCapacity());
|
|
608
678
|
ASSERT_EQ(10U, cache->GetUsage());
|
|
609
|
-
for (
|
|
679
|
+
for (int i = 0; i < 5; i++) {
|
|
610
680
|
cache->Release(handles[i]);
|
|
611
681
|
}
|
|
612
682
|
ASSERT_EQ(10U, cache->GetCapacity());
|
|
@@ -616,7 +686,7 @@ TEST_P(CacheTest, SetCapacity) {
|
|
|
616
686
|
ASSERT_EQ(7, cache->GetUsage());
|
|
617
687
|
|
|
618
688
|
// release remaining 5 to keep valgrind happy
|
|
619
|
-
for (
|
|
689
|
+
for (int i = 5; i < 10; i++) {
|
|
620
690
|
cache->Release(handles[i]);
|
|
621
691
|
}
|
|
622
692
|
|
|
@@ -630,8 +700,8 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
630
700
|
std::shared_ptr<Cache> cache = NewCache(5, 0, false);
|
|
631
701
|
std::vector<Cache::Handle*> handles(10);
|
|
632
702
|
Status s;
|
|
633
|
-
for (
|
|
634
|
-
std::string key =
|
|
703
|
+
for (int i = 0; i < 10; i++) {
|
|
704
|
+
std::string key = EncodeKey(i + 1);
|
|
635
705
|
s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
|
|
636
706
|
ASSERT_OK(s);
|
|
637
707
|
ASSERT_NE(nullptr, handles[i]);
|
|
@@ -639,7 +709,7 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
639
709
|
ASSERT_EQ(10, cache->GetUsage());
|
|
640
710
|
|
|
641
711
|
// test2: set the flag to true. Insert and check if it fails.
|
|
642
|
-
std::string extra_key =
|
|
712
|
+
std::string extra_key = EncodeKey(100);
|
|
643
713
|
Value* extra_value = new Value(0);
|
|
644
714
|
cache->SetStrictCapacityLimit(true);
|
|
645
715
|
Cache::Handle* handle;
|
|
@@ -648,14 +718,14 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
648
718
|
ASSERT_EQ(nullptr, handle);
|
|
649
719
|
ASSERT_EQ(10, cache->GetUsage());
|
|
650
720
|
|
|
651
|
-
for (
|
|
721
|
+
for (int i = 0; i < 10; i++) {
|
|
652
722
|
cache->Release(handles[i]);
|
|
653
723
|
}
|
|
654
724
|
|
|
655
725
|
// test3: init with flag being true.
|
|
656
726
|
std::shared_ptr<Cache> cache2 = NewCache(5, 0, true);
|
|
657
|
-
for (
|
|
658
|
-
std::string key =
|
|
727
|
+
for (int i = 0; i < 5; i++) {
|
|
728
|
+
std::string key = EncodeKey(i + 1);
|
|
659
729
|
s = cache2->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
|
|
660
730
|
ASSERT_OK(s);
|
|
661
731
|
ASSERT_NE(nullptr, handles[i]);
|
|
@@ -670,7 +740,7 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
670
740
|
ASSERT_EQ(5, cache2->GetUsage());
|
|
671
741
|
ASSERT_EQ(nullptr, cache2->Lookup(extra_key));
|
|
672
742
|
|
|
673
|
-
for (
|
|
743
|
+
for (int i = 0; i < 5; i++) {
|
|
674
744
|
cache2->Release(handles[i]);
|
|
675
745
|
}
|
|
676
746
|
}
|
|
@@ -684,15 +754,15 @@ TEST_P(CacheTest, OverCapacity) {
|
|
|
684
754
|
std::vector<Cache::Handle*> handles(n+1);
|
|
685
755
|
|
|
686
756
|
// Insert n+1 entries, but not releasing.
|
|
687
|
-
for (
|
|
688
|
-
std::string key =
|
|
757
|
+
for (int i = 0; i < static_cast<int>(n + 1); i++) {
|
|
758
|
+
std::string key = EncodeKey(i + 1);
|
|
689
759
|
Status s = cache->Insert(key, new Value(i + 1), 1, &deleter, &handles[i]);
|
|
690
760
|
ASSERT_TRUE(s.ok());
|
|
691
761
|
}
|
|
692
762
|
|
|
693
763
|
// Guess what's in the cache now?
|
|
694
|
-
for (
|
|
695
|
-
std::string key =
|
|
764
|
+
for (int i = 0; i < static_cast<int>(n + 1); i++) {
|
|
765
|
+
std::string key = EncodeKey(i + 1);
|
|
696
766
|
auto h = cache->Lookup(key);
|
|
697
767
|
ASSERT_TRUE(h != nullptr);
|
|
698
768
|
if (h) cache->Release(h);
|
|
@@ -700,7 +770,7 @@ TEST_P(CacheTest, OverCapacity) {
|
|
|
700
770
|
|
|
701
771
|
// the cache is over capacity since nothing could be evicted
|
|
702
772
|
ASSERT_EQ(n + 1U, cache->GetUsage());
|
|
703
|
-
for (
|
|
773
|
+
for (int i = 0; i < static_cast<int>(n + 1); i++) {
|
|
704
774
|
cache->Release(handles[i]);
|
|
705
775
|
}
|
|
706
776
|
// Make sure eviction is triggered.
|
|
@@ -712,14 +782,14 @@ TEST_P(CacheTest, OverCapacity) {
|
|
|
712
782
|
// element 0 is evicted and the rest is there
|
|
713
783
|
// This is consistent with the LRU policy since the element 0
|
|
714
784
|
// was released first
|
|
715
|
-
for (
|
|
716
|
-
std::string key =
|
|
785
|
+
for (int i = 0; i < static_cast<int>(n + 1); i++) {
|
|
786
|
+
std::string key = EncodeKey(i + 1);
|
|
717
787
|
auto h = cache->Lookup(key);
|
|
718
788
|
if (h) {
|
|
719
|
-
ASSERT_NE(i, 0U);
|
|
789
|
+
ASSERT_NE(static_cast<size_t>(i), 0U);
|
|
720
790
|
cache->Release(h);
|
|
721
791
|
} else {
|
|
722
|
-
ASSERT_EQ(i, 0U);
|
|
792
|
+
ASSERT_EQ(static_cast<size_t>(i), 0U);
|
|
723
793
|
}
|
|
724
794
|
}
|
|
725
795
|
}
|
|
@@ -745,7 +815,7 @@ TEST_P(CacheTest, ApplyToAllCacheEntriesTest) {
|
|
|
745
815
|
std::sort(inserted.begin(), inserted.end());
|
|
746
816
|
std::sort(legacy_callback_state.begin(), legacy_callback_state.end());
|
|
747
817
|
ASSERT_EQ(inserted.size(), legacy_callback_state.size());
|
|
748
|
-
for (
|
|
818
|
+
for (int i = 0; i < static_cast<int>(inserted.size()); ++i) {
|
|
749
819
|
EXPECT_EQ(inserted[i], legacy_callback_state[i]);
|
|
750
820
|
}
|
|
751
821
|
}
|
|
@@ -773,7 +843,7 @@ TEST_P(CacheTest, ApplyToAllEntriesTest) {
|
|
|
773
843
|
std::sort(inserted.begin(), inserted.end());
|
|
774
844
|
std::sort(callback_state.begin(), callback_state.end());
|
|
775
845
|
ASSERT_EQ(inserted.size(), callback_state.size());
|
|
776
|
-
for (
|
|
846
|
+
for (int i = 0; i < static_cast<int>(inserted.size()); ++i) {
|
|
777
847
|
EXPECT_EQ(inserted[i], callback_state[i]);
|
|
778
848
|
}
|
|
779
849
|
}
|
|
@@ -788,8 +858,10 @@ TEST_P(CacheTest, ApplyToAllEntriesDuringResize) {
|
|
|
788
858
|
constexpr int kSpecialCharge = 2;
|
|
789
859
|
constexpr int kNotSpecialCharge = 1;
|
|
790
860
|
constexpr int kSpecialCount = 100;
|
|
861
|
+
size_t expected_usage = 0;
|
|
791
862
|
for (int i = 0; i < kSpecialCount; ++i) {
|
|
792
863
|
Insert(i, i * 2, kSpecialCharge);
|
|
864
|
+
expected_usage += kSpecialCharge;
|
|
793
865
|
}
|
|
794
866
|
|
|
795
867
|
// For callback
|
|
@@ -810,12 +882,17 @@ TEST_P(CacheTest, ApplyToAllEntriesDuringResize) {
|
|
|
810
882
|
});
|
|
811
883
|
|
|
812
884
|
// In parallel, add more entries, enough to cause resize but not enough
|
|
813
|
-
// to cause ejections
|
|
814
|
-
|
|
885
|
+
// to cause ejections. (Note: if any cache shard is over capacity, there
|
|
886
|
+
// will be ejections)
|
|
887
|
+
for (int i = kSpecialCount * 1; i < kSpecialCount * 5; ++i) {
|
|
815
888
|
Insert(i, i * 2, kNotSpecialCharge);
|
|
889
|
+
expected_usage += kNotSpecialCharge;
|
|
816
890
|
}
|
|
817
891
|
|
|
818
892
|
apply_thread.join();
|
|
893
|
+
// verify no evictions
|
|
894
|
+
ASSERT_EQ(cache_->GetUsage(), expected_usage);
|
|
895
|
+
// verify everything seen in ApplyToAllEntries
|
|
819
896
|
ASSERT_EQ(special_count, kSpecialCount);
|
|
820
897
|
}
|
|
821
898
|
|
|
@@ -859,6 +936,7 @@ INSTANTIATE_TEST_CASE_P(CacheTestInstance, LRUCacheTest,
|
|
|
859
936
|
} // namespace ROCKSDB_NAMESPACE
|
|
860
937
|
|
|
861
938
|
int main(int argc, char** argv) {
|
|
939
|
+
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
862
940
|
::testing::InitGoogleTest(&argc, argv);
|
|
863
941
|
return RUN_ALL_TESTS();
|
|
864
942
|
}
|