@nxtedition/rocksdb 8.1.17 → 8.2.0-alpha.2
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 -2
- package/binding.gyp +8 -0
- package/deps/liburing/liburing.gyp +20 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +4 -0
- package/deps/rocksdb/rocksdb/TARGETS +7 -0
- package/deps/rocksdb/rocksdb/cache/cache.cc +43 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +8 -5
- package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +1 -1
- package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +12 -48
- package/deps/rocksdb/rocksdb/cache/charged_cache.cc +26 -18
- package/deps/rocksdb/rocksdb/cache/charged_cache.h +5 -62
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +119 -44
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +34 -29
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +148 -209
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +118 -284
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +23 -71
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +351 -392
- package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +5 -2
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +296 -0
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +52 -0
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +22 -19
- package/deps/rocksdb/rocksdb/cache/typed_cache.h +56 -20
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +4 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +3 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +19 -25
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +216 -0
- package/deps/rocksdb/rocksdb/db/c.cc +90 -1
- package/deps/rocksdb/rocksdb/db/column_family.cc +8 -7
- package/deps/rocksdb/rocksdb/db/column_family.h +0 -6
- package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +5 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +24 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +18 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +3 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +245 -302
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +5 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +75 -15
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +2 -3
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -5
- package/deps/rocksdb/rocksdb/db/db_flush_test.cc +91 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +16 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +47 -24
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +4 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +32 -3
- package/deps/rocksdb/rocksdb/db/db_iter.cc +28 -29
- package/deps/rocksdb/rocksdb/db/db_iter.h +0 -3
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +176 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +391 -2
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +26 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +13 -5
- package/deps/rocksdb/rocksdb/db/dbformat.h +3 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +0 -6
- package/deps/rocksdb/rocksdb/db/forward_iterator.cc +3 -0
- package/deps/rocksdb/rocksdb/db/forward_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +4 -0
- package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +68 -40
- package/deps/rocksdb/rocksdb/db/import_column_family_job.h +3 -3
- package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +115 -0
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +169 -72
- package/deps/rocksdb/rocksdb/db/internal_stats.h +36 -7
- package/deps/rocksdb/rocksdb/db/memtable.cc +6 -4
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +4 -0
- package/deps/rocksdb/rocksdb/db/perf_context_test.cc +151 -0
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +47 -16
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +10 -8
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +91 -93
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +1 -2
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_set.cc +30 -14
- package/deps/rocksdb/rocksdb/db/version_set.h +1 -0
- package/deps/rocksdb/rocksdb/db/write_stall_stats.cc +179 -0
- package/deps/rocksdb/rocksdb/db/write_stall_stats.h +47 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +109 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +147 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +31 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +42 -59
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +7 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +7 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +6 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +127 -36
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +8 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +35 -0
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +29 -8
- package/deps/rocksdb/rocksdb/file/file_util.cc +14 -10
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +183 -63
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +159 -66
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +3 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +52 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +134 -73
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +46 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +0 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +28 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +39 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +9 -1
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -2
- package/deps/rocksdb/rocksdb/port/stack_trace.cc +17 -7
- package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -0
- package/deps/rocksdb/rocksdb/src.mk +4 -0
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +38 -34
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +11 -12
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +5 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +126 -132
- package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +16 -16
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +0 -16
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +1 -1
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +370 -0
- package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +44 -0
- package/deps/rocksdb/rocksdb/table/get_context.cc +4 -2
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +555 -267
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +10 -5
- package/deps/rocksdb/rocksdb/table/table_test.cc +113 -70
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.cc +96 -0
- package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +117 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +5 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +3 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +9 -2
- package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -1
- package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +11 -0
- package/deps/rocksdb/rocksdb.gyp +7 -1
- package/package.json +1 -1
- package/prebuilds/linux-x64/node.napi.node +0 -0
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#include "db/range_del_aggregator.h"
|
|
13
13
|
#include "rocksdb/slice.h"
|
|
14
14
|
#include "rocksdb/types.h"
|
|
15
|
+
#include "table/iterator_wrapper.h"
|
|
15
16
|
|
|
16
17
|
namespace ROCKSDB_NAMESPACE {
|
|
17
18
|
|
|
@@ -23,7 +24,7 @@ template <class TValue>
|
|
|
23
24
|
class InternalIteratorBase;
|
|
24
25
|
using InternalIterator = InternalIteratorBase<Slice>;
|
|
25
26
|
|
|
26
|
-
// Return an iterator that
|
|
27
|
+
// Return an iterator that provides the union of the data in
|
|
27
28
|
// children[0,n-1]. Takes ownership of the child iterators and
|
|
28
29
|
// will delete them when the result iterator is deleted.
|
|
29
30
|
//
|
|
@@ -35,11 +36,15 @@ extern InternalIterator* NewMergingIterator(
|
|
|
35
36
|
const InternalKeyComparator* comparator, InternalIterator** children, int n,
|
|
36
37
|
Arena* arena = nullptr, bool prefix_seek_mode = false);
|
|
37
38
|
|
|
39
|
+
// The iterator returned by NewMergingIterator() and
|
|
40
|
+
// MergeIteratorBuilder::Finish(). MergingIterator handles the merging of data
|
|
41
|
+
// from different point and/or range tombstone iterators.
|
|
38
42
|
class MergingIterator;
|
|
39
43
|
|
|
40
|
-
// A builder class to
|
|
41
|
-
//
|
|
42
|
-
// exclusively
|
|
44
|
+
// A builder class to for an iterator that provides the union of data
|
|
45
|
+
// of input iterators. Two APIs are provided to add input iterators. User should
|
|
46
|
+
// only call one of them exclusively depending on if range tombstone should be
|
|
47
|
+
// processed.
|
|
43
48
|
class MergeIteratorBuilder {
|
|
44
49
|
public:
|
|
45
50
|
// comparator: the comparator used in merging comparator
|
|
@@ -49,7 +54,7 @@ class MergeIteratorBuilder {
|
|
|
49
54
|
const Slice* iterate_upper_bound = nullptr);
|
|
50
55
|
~MergeIteratorBuilder();
|
|
51
56
|
|
|
52
|
-
// Add iter to the merging iterator.
|
|
57
|
+
// Add point key iterator `iter` to the merging iterator.
|
|
53
58
|
void AddIterator(InternalIterator* iter);
|
|
54
59
|
|
|
55
60
|
// Add a point key iterator and a range tombstone iterator.
|
|
@@ -2253,6 +2253,12 @@ TEST_P(BlockBasedTableTest, BadChecksumType) {
|
|
|
2253
2253
|
"Corruption: Corrupt or unsupported checksum type: 123 in test");
|
|
2254
2254
|
}
|
|
2255
2255
|
|
|
2256
|
+
class BuiltinChecksumTest : public testing::Test,
|
|
2257
|
+
public testing::WithParamInterface<ChecksumType> {};
|
|
2258
|
+
|
|
2259
|
+
INSTANTIATE_TEST_CASE_P(SupportedChecksums, BuiltinChecksumTest,
|
|
2260
|
+
testing::ValuesIn(GetSupportedChecksums()));
|
|
2261
|
+
|
|
2256
2262
|
namespace {
|
|
2257
2263
|
std::string ChecksumAsString(const std::string& data,
|
|
2258
2264
|
ChecksumType checksum_type) {
|
|
@@ -2278,7 +2284,11 @@ std::string ChecksumAsString(std::string* data, char new_last_byte,
|
|
|
2278
2284
|
|
|
2279
2285
|
// Make sure that checksum values don't change in later versions, even if
|
|
2280
2286
|
// consistent within current version.
|
|
2281
|
-
TEST_P(
|
|
2287
|
+
TEST_P(BuiltinChecksumTest, ChecksumSchemas) {
|
|
2288
|
+
// Trailing 'x' chars will be replaced by compression type. Specifically,
|
|
2289
|
+
// the first byte of a block trailer is compression type, which is part of
|
|
2290
|
+
// the checksum input. This test does not deal with storing or parsing
|
|
2291
|
+
// checksums from the trailer (next 4 bytes of trailer).
|
|
2282
2292
|
std::string b0 = "x";
|
|
2283
2293
|
std::string b1 = "This is a short block!x";
|
|
2284
2294
|
std::string b2;
|
|
@@ -2286,7 +2296,6 @@ TEST_P(BlockBasedTableTest, ChecksumSchemas) {
|
|
|
2286
2296
|
b2.append("This is a long block!");
|
|
2287
2297
|
}
|
|
2288
2298
|
b2.append("x");
|
|
2289
|
-
// Trailing 'x' will be replaced by compression type
|
|
2290
2299
|
|
|
2291
2300
|
std::string empty;
|
|
2292
2301
|
|
|
@@ -2294,74 +2303,108 @@ TEST_P(BlockBasedTableTest, ChecksumSchemas) {
|
|
|
2294
2303
|
char ct2 = kSnappyCompression;
|
|
2295
2304
|
char ct3 = kZSTD;
|
|
2296
2305
|
|
|
2297
|
-
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
|
|
2304
|
-
|
|
2305
|
-
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
|
|
2326
|
-
|
|
2327
|
-
|
|
2328
|
-
|
|
2329
|
-
|
|
2330
|
-
|
|
2331
|
-
|
|
2332
|
-
|
|
2333
|
-
|
|
2334
|
-
|
|
2335
|
-
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
|
|
2342
|
-
|
|
2343
|
-
|
|
2344
|
-
|
|
2345
|
-
|
|
2346
|
-
|
|
2347
|
-
|
|
2348
|
-
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2363
|
-
|
|
2364
|
-
|
|
2306
|
+
ChecksumType t = GetParam();
|
|
2307
|
+
switch (t) {
|
|
2308
|
+
case kNoChecksum:
|
|
2309
|
+
EXPECT_EQ(ChecksumAsString(empty, t), "00000000");
|
|
2310
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct1, t), "00000000");
|
|
2311
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct2, t), "00000000");
|
|
2312
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct3, t), "00000000");
|
|
2313
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct1, t), "00000000");
|
|
2314
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct2, t), "00000000");
|
|
2315
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct3, t), "00000000");
|
|
2316
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct1, t), "00000000");
|
|
2317
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct2, t), "00000000");
|
|
2318
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct3, t), "00000000");
|
|
2319
|
+
break;
|
|
2320
|
+
case kCRC32c:
|
|
2321
|
+
EXPECT_EQ(ChecksumAsString(empty, t), "D8EA82A2");
|
|
2322
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct1, t), "D28F2549");
|
|
2323
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct2, t), "052B2843");
|
|
2324
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct3, t), "46F8F711");
|
|
2325
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct1, t), "583F0355");
|
|
2326
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct2, t), "2F9B0A57");
|
|
2327
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct3, t), "ECE7DA1D");
|
|
2328
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct1, t), "943EF0AB");
|
|
2329
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct2, t), "43A2EDB1");
|
|
2330
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct3, t), "00E53D63");
|
|
2331
|
+
break;
|
|
2332
|
+
case kxxHash:
|
|
2333
|
+
EXPECT_EQ(ChecksumAsString(empty, t), "055DCC02");
|
|
2334
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct1, t), "3EB065CF");
|
|
2335
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct2, t), "31F79238");
|
|
2336
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct3, t), "320D2E00");
|
|
2337
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct1, t), "4A2E5FB0");
|
|
2338
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct2, t), "0BD9F652");
|
|
2339
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct3, t), "B4107E50");
|
|
2340
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct1, t), "20F4D4BA");
|
|
2341
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct2, t), "8F1A1F99");
|
|
2342
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct3, t), "A191A338");
|
|
2343
|
+
break;
|
|
2344
|
+
case kxxHash64:
|
|
2345
|
+
EXPECT_EQ(ChecksumAsString(empty, t), "99E9D851");
|
|
2346
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct1, t), "682705DB");
|
|
2347
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct2, t), "30E7211B");
|
|
2348
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct3, t), "B7BB58E8");
|
|
2349
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct1, t), "B74655EF");
|
|
2350
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct2, t), "B6C8BBBE");
|
|
2351
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct3, t), "AED9E3B4");
|
|
2352
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct1, t), "0D4999FE");
|
|
2353
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct2, t), "F5932423");
|
|
2354
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct3, t), "6B31BAB1");
|
|
2355
|
+
break;
|
|
2356
|
+
case kXXH3:
|
|
2357
|
+
EXPECT_EQ(ChecksumAsString(empty, t), "00000000");
|
|
2358
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct1, t), "C294D338");
|
|
2359
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct2, t), "1B174353");
|
|
2360
|
+
EXPECT_EQ(ChecksumAsString(&b0, ct3, t), "2D0E20C8");
|
|
2361
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct1, t), "B37FB5E6");
|
|
2362
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct2, t), "6AFC258D");
|
|
2363
|
+
EXPECT_EQ(ChecksumAsString(&b1, ct3, t), "5CE54616");
|
|
2364
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct1, t), "FA2D482E");
|
|
2365
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct2, t), "23AED845");
|
|
2366
|
+
EXPECT_EQ(ChecksumAsString(&b2, ct3, t), "15B7BBDE");
|
|
2367
|
+
break;
|
|
2368
|
+
default:
|
|
2369
|
+
// Force this test to be updated on new ChecksumTypes
|
|
2370
|
+
assert(false);
|
|
2371
|
+
break;
|
|
2372
|
+
}
|
|
2373
|
+
}
|
|
2374
|
+
|
|
2375
|
+
TEST_P(BuiltinChecksumTest, ChecksumZeroInputs) {
|
|
2376
|
+
// Verify that no reasonably sized "all zeros" inputs produce "all zeros"
|
|
2377
|
+
// output. Otherwise, "wiped" data could appear to be well-formed.
|
|
2378
|
+
// Assuming essentially random assignment of output values, the likelihood
|
|
2379
|
+
// of encountering checksum == 0 for an input not specifically crafted is
|
|
2380
|
+
// 1 in 4 billion.
|
|
2381
|
+
if (GetParam() == kNoChecksum) {
|
|
2382
|
+
return;
|
|
2383
|
+
}
|
|
2384
|
+
// "Thorough" case is too slow for continouous testing
|
|
2385
|
+
bool thorough = getenv("ROCKSDB_THOROUGH_CHECKSUM_TEST") != nullptr;
|
|
2386
|
+
// Verified through 10M
|
|
2387
|
+
size_t kMaxZerosLen = thorough ? 10000000 : 20000;
|
|
2388
|
+
std::string zeros(kMaxZerosLen, '\0');
|
|
2389
|
+
|
|
2390
|
+
for (size_t len = 0; len < kMaxZerosLen; ++len) {
|
|
2391
|
+
if (thorough && (len & 0xffffU) == 0) {
|
|
2392
|
+
fprintf(stderr, "t=%u len=%u\n", (unsigned)GetParam(), (unsigned)len);
|
|
2393
|
+
}
|
|
2394
|
+
uint32_t v = ComputeBuiltinChecksum(GetParam(), zeros.data(), len);
|
|
2395
|
+
if (v == 0U) {
|
|
2396
|
+
// One exception case:
|
|
2397
|
+
if (GetParam() == kXXH3 && len == 0) {
|
|
2398
|
+
// This is not a big deal because assuming the block length is known
|
|
2399
|
+
// from the block handle, which comes from a checksum-verified block,
|
|
2400
|
+
// there is nothing to corrupt in a zero-length block. And when there
|
|
2401
|
+
// is a block trailer with compression byte (as in block-based table),
|
|
2402
|
+
// zero length checksummed data never arises.
|
|
2403
|
+
continue;
|
|
2404
|
+
}
|
|
2405
|
+
// Only compute this on failure
|
|
2406
|
+
SCOPED_TRACE("len=" + std::to_string(len));
|
|
2407
|
+
ASSERT_NE(v, 0U);
|
|
2365
2408
|
}
|
|
2366
2409
|
}
|
|
2367
2410
|
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
|
|
6
|
+
#include "test_util/secondary_cache_test_util.h"
|
|
7
|
+
|
|
8
|
+
#include <array>
|
|
9
|
+
|
|
10
|
+
namespace ROCKSDB_NAMESPACE {
|
|
11
|
+
|
|
12
|
+
namespace secondary_cache_test_util {
|
|
13
|
+
|
|
14
|
+
namespace {
|
|
15
|
+
using TestItem = WithCacheType::TestItem;
|
|
16
|
+
|
|
17
|
+
size_t SizeCallback(Cache::ObjectPtr obj) {
|
|
18
|
+
return static_cast<TestItem*>(obj)->Size();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
Status SaveToCallback(Cache::ObjectPtr from_obj, size_t from_offset,
|
|
22
|
+
size_t length, char* out) {
|
|
23
|
+
auto item = static_cast<TestItem*>(from_obj);
|
|
24
|
+
const char* buf = item->Buf();
|
|
25
|
+
EXPECT_EQ(length, item->Size());
|
|
26
|
+
EXPECT_EQ(from_offset, 0);
|
|
27
|
+
memcpy(out, buf, length);
|
|
28
|
+
return Status::OK();
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
void DeletionCallback(Cache::ObjectPtr obj, MemoryAllocator* /*alloc*/) {
|
|
32
|
+
delete static_cast<TestItem*>(obj);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
Status SaveToCallbackFail(Cache::ObjectPtr /*obj*/, size_t /*offset*/,
|
|
36
|
+
size_t /*size*/, char* /*out*/) {
|
|
37
|
+
return Status::NotSupported();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Status CreateCallback(const Slice& data, Cache::CreateContext* context,
|
|
41
|
+
MemoryAllocator* /*allocator*/, Cache::ObjectPtr* out_obj,
|
|
42
|
+
size_t* out_charge) {
|
|
43
|
+
auto t = static_cast<TestCreateContext*>(context);
|
|
44
|
+
if (t->fail_create_) {
|
|
45
|
+
return Status::NotSupported();
|
|
46
|
+
}
|
|
47
|
+
*out_obj = new TestItem(data.data(), data.size());
|
|
48
|
+
*out_charge = data.size();
|
|
49
|
+
return Status::OK();
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// If helpers without_secondary are provided, returns helpers with secondary
|
|
53
|
+
// support. If not provided, returns helpers without secondary support.
|
|
54
|
+
auto GenerateHelpersByRole(
|
|
55
|
+
const std::array<Cache::CacheItemHelper, kNumCacheEntryRoles>*
|
|
56
|
+
without_secondary,
|
|
57
|
+
bool fail) {
|
|
58
|
+
std::array<Cache::CacheItemHelper, kNumCacheEntryRoles> a;
|
|
59
|
+
for (uint32_t i = 0; i < kNumCacheEntryRoles; ++i) {
|
|
60
|
+
if (without_secondary) {
|
|
61
|
+
a[i] =
|
|
62
|
+
Cache::CacheItemHelper{static_cast<CacheEntryRole>(i),
|
|
63
|
+
&DeletionCallback,
|
|
64
|
+
&SizeCallback,
|
|
65
|
+
fail ? &SaveToCallbackFail : &SaveToCallback,
|
|
66
|
+
&CreateCallback,
|
|
67
|
+
&(*without_secondary)[i]};
|
|
68
|
+
} else {
|
|
69
|
+
a[i] = Cache::CacheItemHelper{static_cast<CacheEntryRole>(i),
|
|
70
|
+
&DeletionCallback};
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return a;
|
|
74
|
+
}
|
|
75
|
+
} // namespace
|
|
76
|
+
|
|
77
|
+
const Cache::CacheItemHelper* WithCacheType::GetHelper(
|
|
78
|
+
CacheEntryRole r, bool secondary_compatible, bool fail) {
|
|
79
|
+
static const std::array<Cache::CacheItemHelper, kNumCacheEntryRoles>
|
|
80
|
+
without_secondary = GenerateHelpersByRole(nullptr, false);
|
|
81
|
+
static const std::array<Cache::CacheItemHelper, kNumCacheEntryRoles>
|
|
82
|
+
with_secondary = GenerateHelpersByRole(&without_secondary, false);
|
|
83
|
+
static const std::array<Cache::CacheItemHelper, kNumCacheEntryRoles>
|
|
84
|
+
with_secondary_fail = GenerateHelpersByRole(&without_secondary, true);
|
|
85
|
+
return &(fail ? with_secondary_fail
|
|
86
|
+
: secondary_compatible ? with_secondary
|
|
87
|
+
: without_secondary)[static_cast<int>(r)];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const Cache::CacheItemHelper* WithCacheType::GetHelperFail(CacheEntryRole r) {
|
|
91
|
+
return GetHelper(r, true, true);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
} // namespace secondary_cache_test_util
|
|
95
|
+
|
|
96
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
2
|
+
// This source code is licensed under both the GPLv2 (found in the
|
|
3
|
+
// COPYING file in the root directory) and Apache 2.0 License
|
|
4
|
+
// (found in the LICENSE.Apache file in the root directory).
|
|
5
|
+
|
|
6
|
+
#pragma once
|
|
7
|
+
|
|
8
|
+
#include <gtest/gtest.h>
|
|
9
|
+
|
|
10
|
+
#include <functional>
|
|
11
|
+
|
|
12
|
+
#include "rocksdb/advanced_cache.h"
|
|
13
|
+
|
|
14
|
+
namespace ROCKSDB_NAMESPACE {
|
|
15
|
+
namespace secondary_cache_test_util {
|
|
16
|
+
|
|
17
|
+
struct TestCreateContext : public Cache::CreateContext {
|
|
18
|
+
void SetFailCreate(bool fail) { fail_create_ = fail; }
|
|
19
|
+
|
|
20
|
+
bool fail_create_ = false;
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
class WithCacheType : public TestCreateContext {
|
|
24
|
+
public:
|
|
25
|
+
WithCacheType() {}
|
|
26
|
+
virtual ~WithCacheType() {}
|
|
27
|
+
|
|
28
|
+
class TestItem {
|
|
29
|
+
public:
|
|
30
|
+
TestItem(const char* buf, size_t size) : buf_(new char[size]), size_(size) {
|
|
31
|
+
memcpy(buf_.get(), buf, size);
|
|
32
|
+
}
|
|
33
|
+
~TestItem() = default;
|
|
34
|
+
|
|
35
|
+
char* Buf() { return buf_.get(); }
|
|
36
|
+
[[nodiscard]] size_t Size() const { return size_; }
|
|
37
|
+
std::string ToString() { return std::string(Buf(), Size()); }
|
|
38
|
+
|
|
39
|
+
private:
|
|
40
|
+
std::unique_ptr<char[]> buf_;
|
|
41
|
+
size_t size_;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
static constexpr auto kLRU = "lru";
|
|
45
|
+
static constexpr auto kHyperClock = "hyper_clock";
|
|
46
|
+
|
|
47
|
+
// For options other than capacity
|
|
48
|
+
size_t estimated_value_size_ = 1;
|
|
49
|
+
|
|
50
|
+
virtual const std::string& Type() = 0;
|
|
51
|
+
|
|
52
|
+
std::shared_ptr<Cache> NewCache(
|
|
53
|
+
size_t capacity,
|
|
54
|
+
std::function<void(ShardedCacheOptions&)> modify_opts_fn = {}) {
|
|
55
|
+
const auto& type = Type();
|
|
56
|
+
if (type == kLRU) {
|
|
57
|
+
LRUCacheOptions lru_opts;
|
|
58
|
+
lru_opts.capacity = capacity;
|
|
59
|
+
if (modify_opts_fn) {
|
|
60
|
+
modify_opts_fn(lru_opts);
|
|
61
|
+
}
|
|
62
|
+
return NewLRUCache(lru_opts);
|
|
63
|
+
}
|
|
64
|
+
if (type == kHyperClock) {
|
|
65
|
+
HyperClockCacheOptions hc_opts{capacity, estimated_value_size_};
|
|
66
|
+
if (modify_opts_fn) {
|
|
67
|
+
modify_opts_fn(hc_opts);
|
|
68
|
+
}
|
|
69
|
+
return hc_opts.MakeSharedCache();
|
|
70
|
+
}
|
|
71
|
+
assert(false);
|
|
72
|
+
return nullptr;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
std::shared_ptr<Cache> NewCache(
|
|
76
|
+
size_t capacity, int num_shard_bits, bool strict_capacity_limit,
|
|
77
|
+
CacheMetadataChargePolicy charge_policy = kDontChargeCacheMetadata) {
|
|
78
|
+
return NewCache(capacity, [=](ShardedCacheOptions& opts) {
|
|
79
|
+
opts.num_shard_bits = num_shard_bits;
|
|
80
|
+
opts.strict_capacity_limit = strict_capacity_limit;
|
|
81
|
+
opts.metadata_charge_policy = charge_policy;
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
std::shared_ptr<Cache> NewCache(
|
|
86
|
+
size_t capacity, int num_shard_bits, bool strict_capacity_limit,
|
|
87
|
+
std::shared_ptr<SecondaryCache> secondary_cache) {
|
|
88
|
+
return NewCache(capacity, [=](ShardedCacheOptions& opts) {
|
|
89
|
+
opts.num_shard_bits = num_shard_bits;
|
|
90
|
+
opts.strict_capacity_limit = strict_capacity_limit;
|
|
91
|
+
opts.metadata_charge_policy = kDontChargeCacheMetadata;
|
|
92
|
+
opts.secondary_cache = secondary_cache;
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
static const Cache::CacheItemHelper* GetHelper(
|
|
97
|
+
CacheEntryRole r = CacheEntryRole::kDataBlock,
|
|
98
|
+
bool secondary_compatible = true, bool fail = false);
|
|
99
|
+
|
|
100
|
+
static const Cache::CacheItemHelper* GetHelperFail(
|
|
101
|
+
CacheEntryRole r = CacheEntryRole::kDataBlock);
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
class WithCacheTypeParam : public WithCacheType,
|
|
105
|
+
public testing::WithParamInterface<std::string> {
|
|
106
|
+
const std::string& Type() override { return GetParam(); }
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
constexpr auto kLRU = WithCacheType::kLRU;
|
|
110
|
+
constexpr auto kHyperClock = WithCacheType::kHyperClock;
|
|
111
|
+
|
|
112
|
+
inline auto GetTestingCacheTypes() {
|
|
113
|
+
return testing::Values(std::string(kLRU), std::string(kHyperClock));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
} // namespace secondary_cache_test_util
|
|
117
|
+
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -372,17 +372,19 @@ Status CheckpointImpl::ExportColumnFamily(
|
|
|
372
372
|
for (const auto& file_metadata : level_metadata.files) {
|
|
373
373
|
LiveFileMetaData live_file_metadata;
|
|
374
374
|
live_file_metadata.size = file_metadata.size;
|
|
375
|
-
live_file_metadata.name =
|
|
375
|
+
live_file_metadata.name = file_metadata.name;
|
|
376
376
|
live_file_metadata.file_number = file_metadata.file_number;
|
|
377
377
|
live_file_metadata.db_path = export_dir;
|
|
378
378
|
live_file_metadata.smallest_seqno = file_metadata.smallest_seqno;
|
|
379
379
|
live_file_metadata.largest_seqno = file_metadata.largest_seqno;
|
|
380
|
-
live_file_metadata.smallestkey =
|
|
381
|
-
live_file_metadata.largestkey =
|
|
380
|
+
live_file_metadata.smallestkey = file_metadata.smallestkey;
|
|
381
|
+
live_file_metadata.largestkey = file_metadata.largestkey;
|
|
382
382
|
live_file_metadata.oldest_blob_file_number =
|
|
383
383
|
file_metadata.oldest_blob_file_number;
|
|
384
384
|
live_file_metadata.epoch_number = file_metadata.epoch_number;
|
|
385
385
|
live_file_metadata.level = level_metadata.level;
|
|
386
|
+
live_file_metadata.smallest = file_metadata.smallest;
|
|
387
|
+
live_file_metadata.largest = file_metadata.largest;
|
|
386
388
|
result_metadata->files.push_back(live_file_metadata);
|
|
387
389
|
}
|
|
388
390
|
*metadata = result_metadata;
|
|
@@ -92,18 +92,18 @@ FaultInjectionSecondaryCache::Lookup(const Slice& key,
|
|
|
92
92
|
const Cache::CacheItemHelper* helper,
|
|
93
93
|
Cache::CreateContext* create_context,
|
|
94
94
|
bool wait, bool advise_erase,
|
|
95
|
-
bool&
|
|
95
|
+
bool& kept_in_sec_cache) {
|
|
96
96
|
ErrorContext* ctx = GetErrorContext();
|
|
97
97
|
if (base_is_compressed_sec_cache_) {
|
|
98
98
|
if (ctx->rand.OneIn(prob_)) {
|
|
99
99
|
return nullptr;
|
|
100
100
|
} else {
|
|
101
101
|
return base_->Lookup(key, helper, create_context, wait, advise_erase,
|
|
102
|
-
|
|
102
|
+
kept_in_sec_cache);
|
|
103
103
|
}
|
|
104
104
|
} else {
|
|
105
105
|
std::unique_ptr<SecondaryCacheResultHandle> hdl = base_->Lookup(
|
|
106
|
-
key, helper, create_context, wait, advise_erase,
|
|
106
|
+
key, helper, create_context, wait, advise_erase, kept_in_sec_cache);
|
|
107
107
|
if (wait && ctx->rand.OneIn(prob_)) {
|
|
108
108
|
hdl.reset();
|
|
109
109
|
}
|
|
@@ -37,7 +37,7 @@ class FaultInjectionSecondaryCache : public SecondaryCache {
|
|
|
37
37
|
std::unique_ptr<SecondaryCacheResultHandle> Lookup(
|
|
38
38
|
const Slice& key, const Cache::CacheItemHelper* helper,
|
|
39
39
|
Cache::CreateContext* create_context, bool wait, bool advise_erase,
|
|
40
|
-
bool&
|
|
40
|
+
bool& kept_in_sec_cache) override;
|
|
41
41
|
|
|
42
42
|
bool SupportForceErase() const override { return base_->SupportForceErase(); }
|
|
43
43
|
|
|
@@ -194,13 +194,20 @@ class SimCacheImpl : public SimCache {
|
|
|
194
194
|
|
|
195
195
|
Handle* Lookup(const Slice& key, const CacheItemHelper* helper,
|
|
196
196
|
CreateContext* create_context,
|
|
197
|
-
Priority priority = Priority::LOW,
|
|
197
|
+
Priority priority = Priority::LOW,
|
|
198
198
|
Statistics* stats = nullptr) override {
|
|
199
199
|
HandleLookup(key, stats);
|
|
200
200
|
if (!target_) {
|
|
201
201
|
return nullptr;
|
|
202
202
|
}
|
|
203
|
-
return target_->Lookup(key, helper, create_context, priority,
|
|
203
|
+
return target_->Lookup(key, helper, create_context, priority, stats);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
void StartAsyncLookup(AsyncLookupHandle& async_handle) override {
|
|
207
|
+
HandleLookup(async_handle.key, async_handle.stats);
|
|
208
|
+
if (target_) {
|
|
209
|
+
target_->StartAsyncLookup(async_handle);
|
|
210
|
+
}
|
|
204
211
|
}
|
|
205
212
|
|
|
206
213
|
bool Ref(Handle* handle) override { return target_->Ref(handle); }
|
|
@@ -451,7 +451,11 @@ bool DBWithTTLImpl::IsStale(const Slice& value, int32_t ttl,
|
|
|
451
451
|
if (!clock->GetCurrentTime(&curtime).ok()) {
|
|
452
452
|
return false; // Treat the data as fresh if could not get current time
|
|
453
453
|
}
|
|
454
|
-
int32_t timestamp_value
|
|
454
|
+
/* int32_t may overflow when timestamp_value + ttl
|
|
455
|
+
* for example ttl = 86400 * 365 * 15
|
|
456
|
+
* convert timestamp_value to int64_t
|
|
457
|
+
*/
|
|
458
|
+
int64_t timestamp_value =
|
|
455
459
|
DecodeFixed32(value.data() + value.size() - kTSLength);
|
|
456
460
|
return (timestamp_value + ttl) < curtime;
|
|
457
461
|
}
|
|
@@ -635,6 +635,17 @@ TEST_F(TtlTest, MultiGetTest) {
|
|
|
635
635
|
CloseTtl();
|
|
636
636
|
}
|
|
637
637
|
|
|
638
|
+
TEST_F(TtlTest, TtlFiftenYears) {
|
|
639
|
+
MakeKVMap(kSampleSize_);
|
|
640
|
+
// 15 year will lead int32_t overflow from now
|
|
641
|
+
const int kFifteenYearSeconds = 86400 * 365 * 15;
|
|
642
|
+
OpenTtl(kFifteenYearSeconds);
|
|
643
|
+
PutValues(0, kSampleSize_, true);
|
|
644
|
+
// trigger the compaction
|
|
645
|
+
SleepCompactCheck(1, 0, kSampleSize_);
|
|
646
|
+
CloseTtl();
|
|
647
|
+
}
|
|
648
|
+
|
|
638
649
|
TEST_F(TtlTest, ColumnFamiliesTest) {
|
|
639
650
|
DB* db;
|
|
640
651
|
Options options;
|
package/deps/rocksdb/rocksdb.gyp
CHANGED
|
@@ -87,7 +87,7 @@
|
|
|
87
87
|
"ROCKSDB_PTHREAD_ADAPTIVE_MUTEX=1",
|
|
88
88
|
"ROCKSDB_RANGESYNC_PRESENT=1",
|
|
89
89
|
"ROCKSDB_SCHED_GETCPU_PRESENT=1",
|
|
90
|
-
|
|
90
|
+
"ROCKSDB_IOURING_PRESENT=1",
|
|
91
91
|
"USE_FOLLY=1",
|
|
92
92
|
"FOLLY_NO_CONFIG=1"
|
|
93
93
|
"HAVE_SSE42=1",
|
|
@@ -115,6 +115,9 @@
|
|
|
115
115
|
"/usr/lib/include",
|
|
116
116
|
# "/usr/local/Cellar/jemalloc/5.3.0/include"
|
|
117
117
|
],
|
|
118
|
+
"dependencies": [
|
|
119
|
+
"../liburing/liburing.gyp:liburing"
|
|
120
|
+
],
|
|
118
121
|
"cflags": [
|
|
119
122
|
"-msse4.2",
|
|
120
123
|
"-mpclmul",
|
|
@@ -168,6 +171,7 @@
|
|
|
168
171
|
"rocksdb/cache/compressed_secondary_cache.cc",
|
|
169
172
|
"rocksdb/cache/lru_cache.cc",
|
|
170
173
|
"rocksdb/cache/secondary_cache.cc",
|
|
174
|
+
"rocksdb/cache/secondary_cache_adapter.cc",
|
|
171
175
|
"rocksdb/cache/sharded_cache.cc",
|
|
172
176
|
"rocksdb/db/arena_wrapped_db_iter.cc",
|
|
173
177
|
"rocksdb/db/blob/blob_contents.cc",
|
|
@@ -254,6 +258,7 @@
|
|
|
254
258
|
"rocksdb/db/write_batch.cc",
|
|
255
259
|
"rocksdb/db/write_batch_base.cc",
|
|
256
260
|
"rocksdb/db/write_controller.cc",
|
|
261
|
+
"rocksdb/db/write_stall_stats.cc",
|
|
257
262
|
"rocksdb/db/write_thread.cc",
|
|
258
263
|
"rocksdb/env/composite_env.cc",
|
|
259
264
|
"rocksdb/env/env.cc",
|
|
@@ -345,6 +350,7 @@
|
|
|
345
350
|
"rocksdb/table/get_context.cc",
|
|
346
351
|
"rocksdb/table/iterator.cc",
|
|
347
352
|
"rocksdb/table/merging_iterator.cc",
|
|
353
|
+
"rocksdb/table/compaction_merging_iterator.cc",
|
|
348
354
|
"rocksdb/table/meta_blocks.cc",
|
|
349
355
|
"rocksdb/table/persistent_cache_helper.cc",
|
|
350
356
|
"rocksdb/table/plain/plain_table_bloom.cc",
|
package/package.json
CHANGED
|
Binary file
|