@nxtedition/rocksdb 7.0.24 → 7.0.25
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 +3 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +5 -0
- package/deps/rocksdb/rocksdb/Makefile +6 -2
- package/deps/rocksdb/rocksdb/TARGETS +14 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +4 -1
- package/deps/rocksdb/rocksdb/cache/cache_helpers.h +20 -0
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +2 -2
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +44 -31
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +491 -722
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +468 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +51 -52
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +28 -16
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +12 -1
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +170 -36
- package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +63 -36
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +4 -6
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +57 -38
- package/deps/rocksdb/rocksdb/db/blob/blob_read_request.h +58 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +164 -74
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +42 -29
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +419 -62
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +208 -8
- package/deps/rocksdb/rocksdb/db/c.cc +68 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +95 -2
- package/deps/rocksdb/rocksdb/db/column_family.cc +12 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +92 -15
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +76 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +52 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +30 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +126 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +203 -1584
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +93 -26
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +87 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +314 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +328 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +4 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +174 -33
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +474 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +825 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +46 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +42 -0
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +223 -0
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +255 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +1253 -0
- package/deps/rocksdb/rocksdb/db/corruption_test.cc +32 -8
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -8
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +376 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +103 -78
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +4 -6
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +0 -8
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +10 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +21 -6
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +19 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +91 -14
- package/deps/rocksdb/rocksdb/db/db_iter.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +33 -0
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +79 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +2 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +5 -2
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +185 -0
- package/deps/rocksdb/rocksdb/db/dbformat.cc +1 -4
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -8
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +71 -29
- package/deps/rocksdb/rocksdb/db/internal_stats.h +160 -5
- package/deps/rocksdb/rocksdb/db/log_reader.cc +29 -3
- package/deps/rocksdb/rocksdb/db/log_reader.h +12 -3
- package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -3
- package/deps/rocksdb/rocksdb/db/version_edit.cc +6 -0
- package/deps/rocksdb/rocksdb/db/version_set.cc +93 -129
- package/deps/rocksdb/rocksdb/db/version_set.h +4 -4
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +42 -35
- package/deps/rocksdb/rocksdb/db/write_batch.cc +10 -2
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +10 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -3
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +140 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +12 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +46 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +27 -7
- package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +8 -0
- package/deps/rocksdb/rocksdb/env/env_posix.cc +14 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +130 -1
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +7 -1
- package/deps/rocksdb/rocksdb/env/io_posix.cc +18 -50
- package/deps/rocksdb/rocksdb/env/io_posix.h +53 -6
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +8 -10
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +3 -7
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +239 -259
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +84 -19
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +24 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +31 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +11 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +37 -13
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +9 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +13 -13
- package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +12 -2
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +38 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +7 -1
- package/deps/rocksdb/rocksdb/port/win/env_win.cc +17 -0
- package/deps/rocksdb/rocksdb/port/win/env_win.h +8 -0
- package/deps/rocksdb/rocksdb/port/win/io_win.cc +6 -3
- package/{prebuilds → deps/rocksdb/rocksdb/prebuilds}/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/src.mk +5 -0
- package/deps/rocksdb/rocksdb/table/block_based/block.h +1 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +5 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +15 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +5 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -4
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +1 -2
- package/deps/rocksdb/rocksdb/table/get_context.cc +1 -0
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +24 -4
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/util/compression.h +2 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +18 -1
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +67 -4
- package/deps/rocksdb/rocksdb/util/threadpool_imp.h +8 -0
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +15 -12
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -2
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb.gyp +5 -1
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
package/binding.cc
CHANGED
|
@@ -1054,7 +1054,9 @@ struct UpdatesNextWorker final : public rocksdb::WriteBatch::Handler, public Wor
|
|
|
1054
1054
|
} else {
|
|
1055
1055
|
cache_.emplace_back(std::nullopt);
|
|
1056
1056
|
}
|
|
1057
|
-
|
|
1057
|
+
if (!updates_->column_family_id_) {
|
|
1058
|
+
cache_.emplace_back(GetColumnName(column_family_id));
|
|
1059
|
+
}
|
|
1058
1060
|
return rocksdb::Status::OK();
|
|
1059
1061
|
}
|
|
1060
1062
|
|
|
@@ -627,7 +627,11 @@ set(SOURCES
|
|
|
627
627
|
db/compaction/compaction_picker_fifo.cc
|
|
628
628
|
db/compaction/compaction_picker_level.cc
|
|
629
629
|
db/compaction/compaction_picker_universal.cc
|
|
630
|
+
db/compaction/compaction_service_job.cc
|
|
631
|
+
db/compaction/compaction_state.cc
|
|
632
|
+
db/compaction/compaction_outputs.cc
|
|
630
633
|
db/compaction/sst_partitioner.cc
|
|
634
|
+
db/compaction/subcompaction_state.cc
|
|
631
635
|
db/convenience.cc
|
|
632
636
|
db/db_filesnapshot.cc
|
|
633
637
|
db/db_impl/compacted_db_impl.cc
|
|
@@ -1231,6 +1235,7 @@ if(WITH_TESTS)
|
|
|
1231
1235
|
db/compaction/compaction_iterator_test.cc
|
|
1232
1236
|
db/compaction/compaction_picker_test.cc
|
|
1233
1237
|
db/compaction/compaction_service_test.cc
|
|
1238
|
+
db/compaction/tiered_compaction_test.cc
|
|
1234
1239
|
db/comparator_db_test.cc
|
|
1235
1240
|
db/corruption_test.cc
|
|
1236
1241
|
db/cuckoo_table_db_test.cc
|
|
@@ -136,6 +136,7 @@ CXXFLAGS += $(PLATFORM_SHARED_CFLAGS) -DROCKSDB_DLL
|
|
|
136
136
|
CFLAGS += $(PLATFORM_SHARED_CFLAGS) -DROCKSDB_DLL
|
|
137
137
|
endif
|
|
138
138
|
|
|
139
|
+
GIT_COMMAND ?= git
|
|
139
140
|
ifeq ($(USE_COROUTINES), 1)
|
|
140
141
|
USE_FOLLY = 1
|
|
141
142
|
OPT += -DUSE_COROUTINES
|
|
@@ -1782,6 +1783,9 @@ write_unprepared_transaction_test: $(OBJ_DIR)/utilities/transactions/write_unpre
|
|
|
1782
1783
|
timestamped_snapshot_test: $(OBJ_DIR)/utilities/transactions/timestamped_snapshot_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1783
1784
|
$(AM_LINK)
|
|
1784
1785
|
|
|
1786
|
+
tiered_compaction_test: $(OBJ_DIR)/db/compaction/tiered_compaction_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1787
|
+
$(AM_LINK)
|
|
1788
|
+
|
|
1785
1789
|
sst_dump: $(OBJ_DIR)/tools/sst_dump.o $(TOOLS_LIBRARY) $(LIBRARY)
|
|
1786
1790
|
$(AM_LINK)
|
|
1787
1791
|
|
|
@@ -2356,9 +2360,9 @@ commit_prereq:
|
|
|
2356
2360
|
# integration.
|
|
2357
2361
|
checkout_folly:
|
|
2358
2362
|
if [ -e third-party/folly ]; then \
|
|
2359
|
-
cd third-party/folly &&
|
|
2363
|
+
cd third-party/folly && ${GIT_COMMAND} fetch origin; \
|
|
2360
2364
|
else \
|
|
2361
|
-
cd third-party &&
|
|
2365
|
+
cd third-party && ${GIT_COMMAND} clone https://github.com/facebook/folly.git; \
|
|
2362
2366
|
fi
|
|
2363
2367
|
@# Pin to a particular version for public CI, so that PR authors don't
|
|
2364
2368
|
@# need to worry about folly breaking our integration. Update periodically
|
|
@@ -38,11 +38,15 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
38
38
|
"db/compaction/compaction.cc",
|
|
39
39
|
"db/compaction/compaction_iterator.cc",
|
|
40
40
|
"db/compaction/compaction_job.cc",
|
|
41
|
+
"db/compaction/compaction_outputs.cc",
|
|
41
42
|
"db/compaction/compaction_picker.cc",
|
|
42
43
|
"db/compaction/compaction_picker_fifo.cc",
|
|
43
44
|
"db/compaction/compaction_picker_level.cc",
|
|
44
45
|
"db/compaction/compaction_picker_universal.cc",
|
|
46
|
+
"db/compaction/compaction_service_job.cc",
|
|
47
|
+
"db/compaction/compaction_state.cc",
|
|
45
48
|
"db/compaction/sst_partitioner.cc",
|
|
49
|
+
"db/compaction/subcompaction_state.cc",
|
|
46
50
|
"db/convenience.cc",
|
|
47
51
|
"db/db_filesnapshot.cc",
|
|
48
52
|
"db/db_impl/compacted_db_impl.cc",
|
|
@@ -368,11 +372,15 @@ cpp_library_wrapper(name="rocksdb_whole_archive_lib", srcs=[
|
|
|
368
372
|
"db/compaction/compaction.cc",
|
|
369
373
|
"db/compaction/compaction_iterator.cc",
|
|
370
374
|
"db/compaction/compaction_job.cc",
|
|
375
|
+
"db/compaction/compaction_outputs.cc",
|
|
371
376
|
"db/compaction/compaction_picker.cc",
|
|
372
377
|
"db/compaction/compaction_picker_fifo.cc",
|
|
373
378
|
"db/compaction/compaction_picker_level.cc",
|
|
374
379
|
"db/compaction/compaction_picker_universal.cc",
|
|
380
|
+
"db/compaction/compaction_service_job.cc",
|
|
381
|
+
"db/compaction/compaction_state.cc",
|
|
375
382
|
"db/compaction/sst_partitioner.cc",
|
|
383
|
+
"db/compaction/subcompaction_state.cc",
|
|
376
384
|
"db/convenience.cc",
|
|
377
385
|
"db/db_filesnapshot.cc",
|
|
378
386
|
"db/db_impl/compacted_db_impl.cc",
|
|
@@ -5764,6 +5772,12 @@ cpp_unittest_wrapper(name="thread_local_test",
|
|
|
5764
5772
|
extra_compiler_flags=[])
|
|
5765
5773
|
|
|
5766
5774
|
|
|
5775
|
+
cpp_unittest_wrapper(name="tiered_compaction_test",
|
|
5776
|
+
srcs=["db/compaction/tiered_compaction_test.cc"],
|
|
5777
|
+
deps=[":rocksdb_test_lib"],
|
|
5778
|
+
extra_compiler_flags=[])
|
|
5779
|
+
|
|
5780
|
+
|
|
5767
5781
|
cpp_unittest_wrapper(name="timer_queue_test",
|
|
5768
5782
|
srcs=["util/timer_queue_test.cc"],
|
|
5769
5783
|
deps=[":rocksdb_test_lib"],
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#include <set>
|
|
14
14
|
#include <sstream>
|
|
15
15
|
|
|
16
|
+
#include "cache/clock_cache.h"
|
|
16
17
|
#include "cache/fast_lru_cache.h"
|
|
17
18
|
#include "db/db_impl/db_impl.h"
|
|
18
19
|
#include "monitoring/histogram.h"
|
|
@@ -284,7 +285,9 @@ class CacheBench {
|
|
|
284
285
|
}
|
|
285
286
|
|
|
286
287
|
if (FLAGS_cache_type == "clock_cache") {
|
|
287
|
-
cache_ =
|
|
288
|
+
cache_ = ExperimentalNewClockCache(
|
|
289
|
+
FLAGS_cache_size, FLAGS_value_bytes, FLAGS_num_shard_bits,
|
|
290
|
+
false /*strict_capacity_limit*/, kDefaultCacheMetadataChargePolicy);
|
|
288
291
|
if (!cache_) {
|
|
289
292
|
fprintf(stderr, "Clock cache not supported.\n");
|
|
290
293
|
exit(1);
|
|
@@ -84,6 +84,16 @@ class CacheHandleGuard {
|
|
|
84
84
|
Cache::Handle* GetCacheHandle() const { return handle_; }
|
|
85
85
|
T* GetValue() const { return value_; }
|
|
86
86
|
|
|
87
|
+
void TransferTo(Cleanable* cleanable) {
|
|
88
|
+
if (cleanable) {
|
|
89
|
+
if (handle_ != nullptr) {
|
|
90
|
+
assert(cache_);
|
|
91
|
+
cleanable->RegisterCleanup(&ReleaseCacheHandle, cache_, handle_);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
ResetFields();
|
|
95
|
+
}
|
|
96
|
+
|
|
87
97
|
void Reset() {
|
|
88
98
|
ReleaseHandle();
|
|
89
99
|
ResetFields();
|
|
@@ -105,6 +115,16 @@ class CacheHandleGuard {
|
|
|
105
115
|
value_ = nullptr;
|
|
106
116
|
}
|
|
107
117
|
|
|
118
|
+
static void ReleaseCacheHandle(void* arg1, void* arg2) {
|
|
119
|
+
Cache* const cache = static_cast<Cache*>(arg1);
|
|
120
|
+
assert(cache);
|
|
121
|
+
|
|
122
|
+
Cache::Handle* const cache_handle = static_cast<Cache::Handle*>(arg2);
|
|
123
|
+
assert(cache_handle);
|
|
124
|
+
|
|
125
|
+
cache->Release(cache_handle);
|
|
126
|
+
}
|
|
127
|
+
|
|
108
128
|
private:
|
|
109
129
|
Cache* cache_ = nullptr;
|
|
110
130
|
Cache::Handle* handle_ = nullptr;
|
|
@@ -147,7 +147,7 @@ TEST(CacheReservationManagerIncreaseReservcationOnFullCacheTest,
|
|
|
147
147
|
|
|
148
148
|
std::size_t new_mem_used = kSmallCacheCapacity + 1;
|
|
149
149
|
Status s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used);
|
|
150
|
-
EXPECT_EQ(s, Status::
|
|
150
|
+
EXPECT_EQ(s, Status::MemoryLimit())
|
|
151
151
|
<< "Failed to return status to indicate failure of dummy entry insertion "
|
|
152
152
|
"during cache reservation on full cache";
|
|
153
153
|
EXPECT_GE(test_cache_rev_mng->GetTotalReservedCacheSize(),
|
|
@@ -192,7 +192,7 @@ TEST(CacheReservationManagerIncreaseReservcationOnFullCacheTest,
|
|
|
192
192
|
// Create cache full again for subsequent tests
|
|
193
193
|
new_mem_used = kSmallCacheCapacity + 1;
|
|
194
194
|
s = test_cache_rev_mng->UpdateCacheReservation(new_mem_used);
|
|
195
|
-
EXPECT_EQ(s, Status::
|
|
195
|
+
EXPECT_EQ(s, Status::MemoryLimit())
|
|
196
196
|
<< "Failed to return status to indicate failure of dummy entry insertion "
|
|
197
197
|
"during cache reservation on full cache";
|
|
198
198
|
EXPECT_GE(test_cache_rev_mng->GetTotalReservedCacheSize(),
|
|
@@ -77,7 +77,7 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
77
77
|
static std::string type_;
|
|
78
78
|
|
|
79
79
|
static void Deleter(const Slice& key, void* v) {
|
|
80
|
-
if (type_ == kFast) {
|
|
80
|
+
if (type_ == kFast || type_ == kClock) {
|
|
81
81
|
current_->deleted_keys_.push_back(DecodeKey16Bytes(key));
|
|
82
82
|
} else {
|
|
83
83
|
current_->deleted_keys_.push_back(DecodeKey32Bits(key));
|
|
@@ -111,7 +111,9 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
111
111
|
return NewLRUCache(capacity);
|
|
112
112
|
}
|
|
113
113
|
if (type == kClock) {
|
|
114
|
-
return
|
|
114
|
+
return ExperimentalNewClockCache(
|
|
115
|
+
capacity, 1 /*estimated_value_size*/, -1 /*num_shard_bits*/,
|
|
116
|
+
false /*strict_capacity_limit*/, kDefaultCacheMetadataChargePolicy);
|
|
115
117
|
}
|
|
116
118
|
if (type == kFast) {
|
|
117
119
|
return NewFastLRUCache(
|
|
@@ -135,8 +137,9 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
135
137
|
return NewLRUCache(co);
|
|
136
138
|
}
|
|
137
139
|
if (type == kClock) {
|
|
138
|
-
return
|
|
139
|
-
|
|
140
|
+
return ExperimentalNewClockCache(capacity, 1 /*estimated_value_size*/,
|
|
141
|
+
num_shard_bits, strict_capacity_limit,
|
|
142
|
+
charge_policy);
|
|
140
143
|
}
|
|
141
144
|
if (type == kFast) {
|
|
142
145
|
return NewFastLRUCache(capacity, 1 /*estimated_value_size*/,
|
|
@@ -152,7 +155,8 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
152
155
|
// LRUCache and ClockCache don't, so the encoding depends on
|
|
153
156
|
// the cache type.
|
|
154
157
|
std::string EncodeKey(int k) {
|
|
155
|
-
|
|
158
|
+
auto type = GetParam();
|
|
159
|
+
if (type == kFast || type == kClock) {
|
|
156
160
|
return EncodeKey16Bytes(k);
|
|
157
161
|
} else {
|
|
158
162
|
return EncodeKey32Bits(k);
|
|
@@ -160,7 +164,8 @@ class CacheTest : public testing::TestWithParam<std::string> {
|
|
|
160
164
|
}
|
|
161
165
|
|
|
162
166
|
int DecodeKey(const Slice& k) {
|
|
163
|
-
|
|
167
|
+
auto type = GetParam();
|
|
168
|
+
if (type == kFast || type == kClock) {
|
|
164
169
|
return DecodeKey16Bytes(k);
|
|
165
170
|
} else {
|
|
166
171
|
return DecodeKey32Bits(k);
|
|
@@ -217,8 +222,9 @@ std::string CacheTest::type_;
|
|
|
217
222
|
class LRUCacheTest : public CacheTest {};
|
|
218
223
|
|
|
219
224
|
TEST_P(CacheTest, UsageTest) {
|
|
220
|
-
|
|
221
|
-
|
|
225
|
+
auto type = GetParam();
|
|
226
|
+
if (type == kFast || type == kClock) {
|
|
227
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache and ClockCache require 16-byte keys.");
|
|
222
228
|
return;
|
|
223
229
|
}
|
|
224
230
|
|
|
@@ -266,8 +272,9 @@ TEST_P(CacheTest, UsageTest) {
|
|
|
266
272
|
}
|
|
267
273
|
|
|
268
274
|
TEST_P(CacheTest, PinnedUsageTest) {
|
|
269
|
-
|
|
270
|
-
|
|
275
|
+
auto type = GetParam();
|
|
276
|
+
if (type == kFast || type == kClock) {
|
|
277
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache and ClockCache require 16-byte keys.");
|
|
271
278
|
return;
|
|
272
279
|
}
|
|
273
280
|
|
|
@@ -492,8 +499,10 @@ TEST_P(CacheTest, EvictionPolicyRef) {
|
|
|
492
499
|
Insert(302, 103);
|
|
493
500
|
Insert(303, 104);
|
|
494
501
|
|
|
495
|
-
// Insert entries much more than
|
|
496
|
-
|
|
502
|
+
// Insert entries much more than cache capacity.
|
|
503
|
+
double load_factor =
|
|
504
|
+
std::min(fast_lru_cache::kLoadFactor, clock_cache::kLoadFactor);
|
|
505
|
+
for (int i = 0; i < 2 * static_cast<int>(kCacheSize / load_factor); i++) {
|
|
497
506
|
Insert(1000 + i, 2000 + i);
|
|
498
507
|
}
|
|
499
508
|
|
|
@@ -523,8 +532,9 @@ TEST_P(CacheTest, EvictionPolicyRef) {
|
|
|
523
532
|
}
|
|
524
533
|
|
|
525
534
|
TEST_P(CacheTest, EvictEmptyCache) {
|
|
526
|
-
|
|
527
|
-
|
|
535
|
+
auto type = GetParam();
|
|
536
|
+
if (type == kFast || type == kClock) {
|
|
537
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache and ClockCache require 16-byte keys.");
|
|
528
538
|
return;
|
|
529
539
|
}
|
|
530
540
|
|
|
@@ -534,8 +544,9 @@ TEST_P(CacheTest, EvictEmptyCache) {
|
|
|
534
544
|
}
|
|
535
545
|
|
|
536
546
|
TEST_P(CacheTest, EraseFromDeleter) {
|
|
537
|
-
|
|
538
|
-
|
|
547
|
+
auto type = GetParam();
|
|
548
|
+
if (type == kFast || type == kClock) {
|
|
549
|
+
ROCKSDB_GTEST_BYPASS("FastLRUCache and ClockCache require 16-byte keys.");
|
|
539
550
|
return;
|
|
540
551
|
}
|
|
541
552
|
|
|
@@ -650,8 +661,10 @@ TEST_P(CacheTest, ReleaseWithoutErase) {
|
|
|
650
661
|
}
|
|
651
662
|
|
|
652
663
|
TEST_P(CacheTest, SetCapacity) {
|
|
653
|
-
|
|
654
|
-
|
|
664
|
+
auto type = GetParam();
|
|
665
|
+
if (type == kFast || type == kClock) {
|
|
666
|
+
ROCKSDB_GTEST_BYPASS(
|
|
667
|
+
"FastLRUCache and ClockCache don't support capacity adjustments.");
|
|
655
668
|
return;
|
|
656
669
|
}
|
|
657
670
|
// test1: increase capacity
|
|
@@ -702,9 +715,11 @@ TEST_P(CacheTest, SetCapacity) {
|
|
|
702
715
|
}
|
|
703
716
|
|
|
704
717
|
TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
705
|
-
|
|
718
|
+
auto type = GetParam();
|
|
719
|
+
if (type == kFast || type == kClock) {
|
|
706
720
|
ROCKSDB_GTEST_BYPASS(
|
|
707
|
-
"FastLRUCache
|
|
721
|
+
"FastLRUCache and ClockCache don't support an unbounded number of "
|
|
722
|
+
"inserts beyond "
|
|
708
723
|
"capacity.");
|
|
709
724
|
return;
|
|
710
725
|
}
|
|
@@ -727,7 +742,7 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
727
742
|
cache->SetStrictCapacityLimit(true);
|
|
728
743
|
Cache::Handle* handle;
|
|
729
744
|
s = cache->Insert(extra_key, extra_value, 1, &deleter, &handle);
|
|
730
|
-
ASSERT_TRUE(s.
|
|
745
|
+
ASSERT_TRUE(s.IsMemoryLimit());
|
|
731
746
|
ASSERT_EQ(nullptr, handle);
|
|
732
747
|
ASSERT_EQ(10, cache->GetUsage());
|
|
733
748
|
|
|
@@ -744,7 +759,7 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
744
759
|
ASSERT_NE(nullptr, handles[i]);
|
|
745
760
|
}
|
|
746
761
|
s = cache2->Insert(extra_key, extra_value, 1, &deleter, &handle);
|
|
747
|
-
ASSERT_TRUE(s.
|
|
762
|
+
ASSERT_TRUE(s.IsMemoryLimit());
|
|
748
763
|
ASSERT_EQ(nullptr, handle);
|
|
749
764
|
// test insert without handle
|
|
750
765
|
s = cache2->Insert(extra_key, extra_value, 1, &deleter);
|
|
@@ -759,8 +774,10 @@ TEST_P(LRUCacheTest, SetStrictCapacityLimit) {
|
|
|
759
774
|
}
|
|
760
775
|
|
|
761
776
|
TEST_P(CacheTest, OverCapacity) {
|
|
762
|
-
|
|
763
|
-
|
|
777
|
+
auto type = GetParam();
|
|
778
|
+
if (type == kFast || type == kClock) {
|
|
779
|
+
ROCKSDB_GTEST_BYPASS(
|
|
780
|
+
"FastLRUCache and ClockCache don't support capacity adjustments.");
|
|
764
781
|
return;
|
|
765
782
|
}
|
|
766
783
|
size_t n = 10;
|
|
@@ -938,15 +955,11 @@ TEST_P(CacheTest, GetChargeAndDeleter) {
|
|
|
938
955
|
cache_->Release(h1);
|
|
939
956
|
}
|
|
940
957
|
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
958
|
+
std::shared_ptr<Cache> (*new_clock_cache_func)(size_t, size_t, int, bool,
|
|
959
|
+
CacheMetadataChargePolicy) =
|
|
960
|
+
ExperimentalNewClockCache;
|
|
944
961
|
INSTANTIATE_TEST_CASE_P(CacheTestInstance, CacheTest,
|
|
945
962
|
testing::Values(kLRU, kClock, kFast));
|
|
946
|
-
#else
|
|
947
|
-
INSTANTIATE_TEST_CASE_P(CacheTestInstance, CacheTest,
|
|
948
|
-
testing::Values(kLRU, kFast));
|
|
949
|
-
#endif // SUPPORT_CLOCK_CACHE
|
|
950
963
|
INSTANTIATE_TEST_CASE_P(CacheTestInstance, LRUCacheTest,
|
|
951
964
|
testing::Values(kLRU, kFast));
|
|
952
965
|
|