@nxtedition/rocksdb 7.1.5 → 7.1.6
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 +32 -14
- package/deps/rocksdb/rocksdb/cache/cache.cc +4 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +6 -8
- package/deps/rocksdb/rocksdb/cache/cache_key.cc +184 -164
- package/deps/rocksdb/rocksdb/cache/cache_key.h +38 -29
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +4 -4
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +4 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +11 -9
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +1 -1
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +28 -18
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +86 -17
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +48 -8
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +356 -153
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +3 -7
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +4 -5
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +12 -4
- package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +69 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +6 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +4 -1
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +222 -182
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +239 -23
- package/deps/rocksdb/rocksdb/db/db_test2.cc +6 -2
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +2 -1
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +6 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/kv_checksum.h +8 -4
- package/deps/rocksdb/rocksdb/db/memtable.cc +173 -33
- package/deps/rocksdb/rocksdb/db/memtable.h +10 -0
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db/version_set.cc +37 -18
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +15 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +31 -6
- package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -1
- package/deps/rocksdb/rocksdb/options/cf_options.cc +4 -0
- package/deps/rocksdb/rocksdb/options/cf_options.h +4 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +2 -6
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +1 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +2 -4
- 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_sync_and_async.h +2 -1
- package/deps/rocksdb/rocksdb/table/unique_id.cc +22 -24
- package/deps/rocksdb/rocksdb/table/unique_id_impl.h +2 -1
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +7 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +27 -3
- package/deps/rocksdb/rocksdb/util/async_file_reader.cc +2 -1
- package/deps/rocksdb/rocksdb/util/async_file_reader.h +3 -3
- package/deps/rocksdb/rocksdb/util/coro_utils.h +2 -1
- package/deps/rocksdb/rocksdb/util/hash_test.cc +67 -0
- package/deps/rocksdb/rocksdb/util/math.h +41 -0
- package/deps/rocksdb/rocksdb/util/math128.h +6 -0
- package/deps/rocksdb/rocksdb/util/single_thread_executor.h +2 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +3 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +5 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +6 -0
- package/index.js +15 -6
- package/package.json +1 -1
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -74,7 +74,7 @@ struct LRUHandle {
|
|
|
74
74
|
// The number of external refs to this entry. The cache itself is not counted.
|
|
75
75
|
uint32_t refs;
|
|
76
76
|
|
|
77
|
-
enum Flags :
|
|
77
|
+
enum Flags : uint16_t {
|
|
78
78
|
// Whether this entry is referenced by the hash table.
|
|
79
79
|
IN_CACHE = (1 << 0),
|
|
80
80
|
// Whether this entry is high priority entry.
|
|
@@ -89,9 +89,13 @@ struct LRUHandle {
|
|
|
89
89
|
IS_PENDING = (1 << 5),
|
|
90
90
|
// Whether this handle is still in a lower tier
|
|
91
91
|
IS_IN_SECONDARY_CACHE = (1 << 6),
|
|
92
|
+
// Whether this entry is low priority entry.
|
|
93
|
+
IS_LOW_PRI = (1 << 7),
|
|
94
|
+
// Whether this entry is in low-pri pool.
|
|
95
|
+
IN_LOW_PRI_POOL = (1 << 8),
|
|
92
96
|
};
|
|
93
97
|
|
|
94
|
-
|
|
98
|
+
uint16_t flags;
|
|
95
99
|
|
|
96
100
|
#ifdef __SANITIZE_THREAD__
|
|
97
101
|
// TSAN can report a false data race on flags, where one thread is writing
|
|
@@ -122,6 +126,8 @@ struct LRUHandle {
|
|
|
122
126
|
bool InCache() const { return flags & IN_CACHE; }
|
|
123
127
|
bool IsHighPri() const { return flags & IS_HIGH_PRI; }
|
|
124
128
|
bool InHighPriPool() const { return flags & IN_HIGH_PRI_POOL; }
|
|
129
|
+
bool IsLowPri() const { return flags & IS_LOW_PRI; }
|
|
130
|
+
bool InLowPriPool() const { return flags & IN_LOW_PRI_POOL; }
|
|
125
131
|
bool HasHit() const { return flags & HAS_HIT; }
|
|
126
132
|
bool IsSecondaryCacheCompatible() const {
|
|
127
133
|
#ifdef __SANITIZE_THREAD__
|
|
@@ -144,8 +150,13 @@ struct LRUHandle {
|
|
|
144
150
|
void SetPriority(Cache::Priority priority) {
|
|
145
151
|
if (priority == Cache::Priority::HIGH) {
|
|
146
152
|
flags |= IS_HIGH_PRI;
|
|
153
|
+
flags &= ~IS_LOW_PRI;
|
|
154
|
+
} else if (priority == Cache::Priority::LOW) {
|
|
155
|
+
flags &= ~IS_HIGH_PRI;
|
|
156
|
+
flags |= IS_LOW_PRI;
|
|
147
157
|
} else {
|
|
148
158
|
flags &= ~IS_HIGH_PRI;
|
|
159
|
+
flags &= ~IS_LOW_PRI;
|
|
149
160
|
}
|
|
150
161
|
}
|
|
151
162
|
|
|
@@ -157,6 +168,14 @@ struct LRUHandle {
|
|
|
157
168
|
}
|
|
158
169
|
}
|
|
159
170
|
|
|
171
|
+
void SetInLowPriPool(bool in_low_pri_pool) {
|
|
172
|
+
if (in_low_pri_pool) {
|
|
173
|
+
flags |= IN_LOW_PRI_POOL;
|
|
174
|
+
} else {
|
|
175
|
+
flags &= ~IN_LOW_PRI_POOL;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
|
|
160
179
|
void SetHit() { flags |= HAS_HIT; }
|
|
161
180
|
|
|
162
181
|
void SetSecondaryCacheCompatible(bool compat) {
|
|
@@ -298,7 +317,8 @@ class LRUHandleTable {
|
|
|
298
317
|
class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
|
|
299
318
|
public:
|
|
300
319
|
LRUCacheShard(size_t capacity, bool strict_capacity_limit,
|
|
301
|
-
double high_pri_pool_ratio,
|
|
320
|
+
double high_pri_pool_ratio, double low_pri_pool_ratio,
|
|
321
|
+
bool use_adaptive_mutex,
|
|
302
322
|
CacheMetadataChargePolicy metadata_charge_policy,
|
|
303
323
|
int max_upper_hash_bits,
|
|
304
324
|
const std::shared_ptr<SecondaryCache>& secondary_cache);
|
|
@@ -315,6 +335,9 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
|
|
|
315
335
|
// Set percentage of capacity reserved for high-pri cache entries.
|
|
316
336
|
void SetHighPriorityPoolRatio(double high_pri_pool_ratio);
|
|
317
337
|
|
|
338
|
+
// Set percentage of capacity reserved for low-pri cache entries.
|
|
339
|
+
void SetLowPriorityPoolRatio(double low_pri_pool_ratio);
|
|
340
|
+
|
|
318
341
|
// Like Cache methods, but with an extra "hash" parameter.
|
|
319
342
|
virtual Status Insert(const Slice& key, uint32_t hash, void* value,
|
|
320
343
|
size_t charge, Cache::DeleterFn deleter,
|
|
@@ -366,15 +389,19 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
|
|
|
366
389
|
|
|
367
390
|
virtual std::string GetPrintableOptions() const override;
|
|
368
391
|
|
|
369
|
-
void TEST_GetLRUList(LRUHandle** lru, LRUHandle** lru_low_pri
|
|
392
|
+
void TEST_GetLRUList(LRUHandle** lru, LRUHandle** lru_low_pri,
|
|
393
|
+
LRUHandle** lru_bottom_pri);
|
|
370
394
|
|
|
371
|
-
//
|
|
372
|
-
//
|
|
395
|
+
// Retrieves number of elements in LRU, for unit test purpose only.
|
|
396
|
+
// Not threadsafe.
|
|
373
397
|
size_t TEST_GetLRUSize();
|
|
374
398
|
|
|
375
|
-
//
|
|
399
|
+
// Retrieves high pri pool ratio
|
|
376
400
|
double GetHighPriPoolRatio();
|
|
377
401
|
|
|
402
|
+
// Retrieves low pri pool ratio
|
|
403
|
+
double GetLowPriPoolRatio();
|
|
404
|
+
|
|
378
405
|
private:
|
|
379
406
|
friend class LRUCache;
|
|
380
407
|
// Insert an item into the hash table and, if handle is null, insert into
|
|
@@ -414,6 +441,9 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
|
|
|
414
441
|
// Memory size for entries in high-pri pool.
|
|
415
442
|
size_t high_pri_pool_usage_;
|
|
416
443
|
|
|
444
|
+
// Memory size for entries in low-pri pool.
|
|
445
|
+
size_t low_pri_pool_usage_;
|
|
446
|
+
|
|
417
447
|
// Whether to reject insertion if cache reaches its full capacity.
|
|
418
448
|
bool strict_capacity_limit_;
|
|
419
449
|
|
|
@@ -424,6 +454,13 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
|
|
|
424
454
|
// Remember the value to avoid recomputing each time.
|
|
425
455
|
double high_pri_pool_capacity_;
|
|
426
456
|
|
|
457
|
+
// Ratio of capacity reserved for low priority cache entries.
|
|
458
|
+
double low_pri_pool_ratio_;
|
|
459
|
+
|
|
460
|
+
// Low-pri pool size, equals to capacity * low_pri_pool_ratio.
|
|
461
|
+
// Remember the value to avoid recomputing each time.
|
|
462
|
+
double low_pri_pool_capacity_;
|
|
463
|
+
|
|
427
464
|
// Dummy head of LRU list.
|
|
428
465
|
// lru.prev is newest entry, lru.next is oldest entry.
|
|
429
466
|
// LRU contains items which can be evicted, ie reference only by cache
|
|
@@ -432,6 +469,9 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard final : public CacheShard {
|
|
|
432
469
|
// Pointer to head of low-pri pool in LRU list.
|
|
433
470
|
LRUHandle* lru_low_pri_;
|
|
434
471
|
|
|
472
|
+
// Pointer to head of bottom-pri pool in LRU list.
|
|
473
|
+
LRUHandle* lru_bottom_pri_;
|
|
474
|
+
|
|
435
475
|
// ------------^^^^^^^^^^^^^-----------
|
|
436
476
|
// Not frequently modified data members
|
|
437
477
|
// ------------------------------------
|
|
@@ -466,7 +506,7 @@ class LRUCache
|
|
|
466
506
|
: public ShardedCache {
|
|
467
507
|
public:
|
|
468
508
|
LRUCache(size_t capacity, int num_shard_bits, bool strict_capacity_limit,
|
|
469
|
-
double high_pri_pool_ratio,
|
|
509
|
+
double high_pri_pool_ratio, double low_pri_pool_ratio,
|
|
470
510
|
std::shared_ptr<MemoryAllocator> memory_allocator = nullptr,
|
|
471
511
|
bool use_adaptive_mutex = kDefaultToAdaptiveMutex,
|
|
472
512
|
CacheMetadataChargePolicy metadata_charge_policy =
|