@nxtedition/rocksdb 8.1.3 → 8.1.5

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.
Files changed (146) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -1
  2. package/deps/rocksdb/rocksdb/Makefile +2 -2
  3. package/deps/rocksdb/rocksdb/TARGETS +4 -2
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +32 -35
  5. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +0 -30
  6. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +0 -83
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +13 -14
  8. package/deps/rocksdb/rocksdb/cache/cache_helpers.cc +40 -0
  9. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +14 -20
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +8 -9
  11. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +5 -4
  12. package/deps/rocksdb/rocksdb/cache/cache_test.cc +124 -156
  13. package/deps/rocksdb/rocksdb/cache/charged_cache.cc +10 -26
  14. package/deps/rocksdb/rocksdb/cache/charged_cache.h +11 -16
  15. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +35 -32
  16. package/deps/rocksdb/rocksdb/cache/clock_cache.h +19 -21
  17. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +42 -30
  18. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -8
  19. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +91 -143
  20. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +54 -60
  21. package/deps/rocksdb/rocksdb/cache/lru_cache.h +37 -63
  22. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +120 -106
  23. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +14 -5
  24. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +16 -31
  25. package/deps/rocksdb/rocksdb/cache/typed_cache.h +339 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +0 -48
  27. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +18 -15
  28. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +0 -11
  29. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +5 -26
  30. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +7 -8
  31. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +6 -3
  32. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +2 -7
  33. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +19 -47
  34. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -5
  35. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +15 -22
  36. package/deps/rocksdb/rocksdb/db/builder.cc +17 -12
  37. package/deps/rocksdb/rocksdb/db/column_family.cc +0 -1
  38. package/deps/rocksdb/rocksdb/db/column_family.h +0 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +0 -5
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +3 -0
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +0 -2
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +28 -27
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +2 -17
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1 -0
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +254 -139
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -5
  47. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +0 -5
  48. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +98 -9
  49. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -28
  50. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +125 -0
  51. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +65 -4
  52. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +1 -1
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +27 -15
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +78 -49
  55. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +34 -24
  56. package/deps/rocksdb/rocksdb/db/db_iter.cc +8 -2
  57. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +42 -0
  58. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +155 -0
  59. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +12 -12
  60. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +117 -210
  61. package/deps/rocksdb/rocksdb/db/db_test_util.cc +11 -10
  62. package/deps/rocksdb/rocksdb/db/db_test_util.h +36 -24
  63. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +28 -0
  64. package/deps/rocksdb/rocksdb/db/flush_job.cc +6 -6
  65. package/deps/rocksdb/rocksdb/db/flush_job.h +3 -2
  66. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +29 -29
  67. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +0 -4
  68. package/deps/rocksdb/rocksdb/db/internal_stats.cc +11 -11
  69. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -2
  70. package/deps/rocksdb/rocksdb/db/log_reader.cc +8 -6
  71. package/deps/rocksdb/rocksdb/db/log_test.cc +35 -2
  72. package/deps/rocksdb/rocksdb/db/memtable.cc +30 -5
  73. package/deps/rocksdb/rocksdb/db/merge_helper.cc +47 -33
  74. package/deps/rocksdb/rocksdb/db/merge_helper.h +14 -6
  75. package/deps/rocksdb/rocksdb/db/table_cache.cc +41 -91
  76. package/deps/rocksdb/rocksdb/db/table_cache.h +17 -19
  77. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -9
  78. package/deps/rocksdb/rocksdb/db/version_builder.cc +12 -9
  79. package/deps/rocksdb/rocksdb/db/version_edit.h +1 -0
  80. package/deps/rocksdb/rocksdb/db/version_set.cc +20 -28
  81. package/deps/rocksdb/rocksdb/db/version_set.h +2 -2
  82. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -1
  83. package/deps/rocksdb/rocksdb/db/write_batch.cc +4 -1
  84. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -0
  85. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +358 -214
  86. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +137 -135
  87. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +21 -0
  88. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +8 -6
  89. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  90. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +9 -0
  91. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -3
  92. package/deps/rocksdb/rocksdb/port/port_posix.h +2 -0
  93. package/{prebuilds → deps/rocksdb/rocksdb/prebuilds}/linux-x64/node.napi.node +0 -0
  94. package/deps/rocksdb/rocksdb/src.mk +2 -1
  95. package/deps/rocksdb/rocksdb/table/block_based/block.h +3 -0
  96. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +25 -67
  97. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +3 -3
  98. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +18 -13
  99. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +156 -223
  100. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +31 -50
  101. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +46 -18
  102. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +3 -3
  103. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +96 -0
  104. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +132 -0
  105. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +28 -0
  106. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -5
  107. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +1 -4
  108. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -7
  109. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -1
  110. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +6 -1
  111. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +19 -18
  112. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +9 -5
  113. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +3 -1
  114. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +2 -1
  115. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +2 -2
  116. package/deps/rocksdb/rocksdb/table/format.h +1 -1
  117. package/deps/rocksdb/rocksdb/table/get_context.cc +12 -3
  118. package/deps/rocksdb/rocksdb/table/internal_iterator.h +0 -2
  119. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +92 -7
  120. package/deps/rocksdb/rocksdb/table/merging_iterator.h +0 -80
  121. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +66 -1
  122. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +9 -2
  123. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +5 -0
  124. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +1 -1
  125. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +20 -12
  126. package/deps/rocksdb/rocksdb/util/compression.cc +2 -2
  127. package/deps/rocksdb/rocksdb/util/compression.h +11 -2
  128. package/deps/rocksdb/rocksdb/util/xxhash.h +1901 -887
  129. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +35 -57
  130. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +4 -5
  131. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +11 -6
  132. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +6 -5
  133. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +0 -1
  134. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +10 -11
  135. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +31 -31
  136. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  137. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +52 -0
  138. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +1 -0
  139. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +12 -3
  140. package/deps/rocksdb/rocksdb.gyp +0 -3
  141. package/index.js +2 -2
  142. package/package.json +1 -1
  143. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  144. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +0 -182
  145. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +0 -142
  146. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +0 -241
@@ -21,6 +21,7 @@
21
21
  #include <unordered_map>
22
22
  #include <utility>
23
23
 
24
+ #include "block_cache.h"
24
25
  #include "cache/cache_entry_roles.h"
25
26
  #include "cache/cache_helpers.h"
26
27
  #include "cache/cache_key.h"
@@ -41,7 +42,6 @@
41
42
  #include "table/block_based/block_based_table_factory.h"
42
43
  #include "table/block_based/block_based_table_reader.h"
43
44
  #include "table/block_based/block_builder.h"
44
- #include "table/block_based/block_like_traits.h"
45
45
  #include "table/block_based/filter_block.h"
46
46
  #include "table/block_based/filter_policy_internal.h"
47
47
  #include "table/block_based/full_filter_block.h"
@@ -335,6 +335,7 @@ struct BlockBasedTableBuilder::Rep {
335
335
  std::vector<std::unique_ptr<IntTblPropCollector>> table_properties_collectors;
336
336
 
337
337
  std::unique_ptr<ParallelCompressionRep> pc_rep;
338
+ BlockCreateContext create_context;
338
339
 
339
340
  uint64_t get_offset() { return offset.load(std::memory_order_relaxed); }
340
341
  void set_offset(uint64_t o) { offset.store(o, std::memory_order_relaxed); }
@@ -443,6 +444,9 @@ struct BlockBasedTableBuilder::Rep {
443
444
  flush_block_policy(
444
445
  table_options.flush_block_policy_factory->NewFlushBlockPolicy(
445
446
  table_options, data_block)),
447
+ create_context(&table_options, ioptions.stats,
448
+ compression_type == kZSTD ||
449
+ compression_type == kZSTDNotFinalCompression),
446
450
  status_ok(true),
447
451
  io_status_ok(true) {
448
452
  if (tbo.target_file_size == 0) {
@@ -1240,6 +1244,10 @@ void BlockBasedTableBuilder::WriteMaybeCompressedBlock(
1240
1244
  handle->set_size(block_contents.size());
1241
1245
  assert(status().ok());
1242
1246
  assert(io_status().ok());
1247
+ if (uncompressed_block_data == nullptr) {
1248
+ uncompressed_block_data = &block_contents;
1249
+ assert(type == kNoCompression);
1250
+ }
1243
1251
 
1244
1252
  {
1245
1253
  IOStatus io_s = r->file->Append(block_contents);
@@ -1291,12 +1299,8 @@ void BlockBasedTableBuilder::WriteMaybeCompressedBlock(
1291
1299
  warm_cache = false;
1292
1300
  }
1293
1301
  if (warm_cache) {
1294
- if (type == kNoCompression) {
1295
- s = InsertBlockInCacheHelper(block_contents, handle, block_type);
1296
- } else if (uncompressed_block_data != nullptr) {
1297
- s = InsertBlockInCacheHelper(*uncompressed_block_data, handle,
1298
- block_type);
1299
- }
1302
+ s = InsertBlockInCacheHelper(*uncompressed_block_data, handle,
1303
+ block_type);
1300
1304
  if (!s.ok()) {
1301
1305
  r->SetStatus(s);
1302
1306
  return;
@@ -1425,13 +1429,14 @@ Status BlockBasedTableBuilder::InsertBlockInCompressedCache(
1425
1429
  const Slice& block_contents, const CompressionType type,
1426
1430
  const BlockHandle* handle) {
1427
1431
  Rep* r = rep_;
1428
- Cache* block_cache_compressed = r->table_options.block_cache_compressed.get();
1432
+ CompressedBlockCacheInterface block_cache_compressed{
1433
+ r->table_options.block_cache_compressed.get()};
1429
1434
  Status s;
1430
- if (type != kNoCompression && block_cache_compressed != nullptr) {
1435
+ if (type != kNoCompression && block_cache_compressed) {
1431
1436
  size_t size = block_contents.size();
1432
1437
 
1433
- auto ubuf =
1434
- AllocateBlock(size + 1, block_cache_compressed->memory_allocator());
1438
+ auto ubuf = AllocateBlock(size + 1,
1439
+ block_cache_compressed.get()->memory_allocator());
1435
1440
  memcpy(ubuf.get(), block_contents.data(), size);
1436
1441
  ubuf[size] = type;
1437
1442
 
@@ -1443,10 +1448,9 @@ Status BlockBasedTableBuilder::InsertBlockInCompressedCache(
1443
1448
 
1444
1449
  CacheKey key = BlockBasedTable::GetCacheKey(rep_->base_cache_key, *handle);
1445
1450
 
1446
- s = block_cache_compressed->Insert(
1451
+ s = block_cache_compressed.Insert(
1447
1452
  key.AsSlice(), block_contents_to_cache,
1448
- block_contents_to_cache->ApproximateMemoryUsage(),
1449
- &DeleteCacheEntry<BlockContents>);
1453
+ block_contents_to_cache->ApproximateMemoryUsage());
1450
1454
  if (s.ok()) {
1451
1455
  RecordTick(rep_->ioptions.stats, BLOCK_CACHE_COMPRESSED_ADD);
1452
1456
  } else {
@@ -1462,65 +1466,19 @@ Status BlockBasedTableBuilder::InsertBlockInCompressedCache(
1462
1466
  Status BlockBasedTableBuilder::InsertBlockInCacheHelper(
1463
1467
  const Slice& block_contents, const BlockHandle* handle,
1464
1468
  BlockType block_type) {
1465
- Status s;
1466
- switch (block_type) {
1467
- case BlockType::kData:
1468
- case BlockType::kIndex:
1469
- case BlockType::kFilterPartitionIndex:
1470
- s = InsertBlockInCache<Block>(block_contents, handle, block_type);
1471
- break;
1472
- case BlockType::kFilter:
1473
- s = InsertBlockInCache<ParsedFullFilterBlock>(block_contents, handle,
1474
- block_type);
1475
- break;
1476
- case BlockType::kCompressionDictionary:
1477
- s = InsertBlockInCache<UncompressionDict>(block_contents, handle,
1478
- block_type);
1479
- break;
1480
- default:
1481
- // no-op / not cached
1482
- break;
1483
- }
1484
- return s;
1485
- }
1486
1469
 
1487
- template <typename TBlocklike>
1488
- Status BlockBasedTableBuilder::InsertBlockInCache(const Slice& block_contents,
1489
- const BlockHandle* handle,
1490
- BlockType block_type) {
1491
- // Uncompressed regular block cache
1492
1470
  Cache* block_cache = rep_->table_options.block_cache.get();
1493
1471
  Status s;
1494
- if (block_cache != nullptr) {
1495
- size_t size = block_contents.size();
1496
- auto buf = AllocateBlock(size, block_cache->memory_allocator());
1497
- memcpy(buf.get(), block_contents.data(), size);
1498
- BlockContents results(std::move(buf), size);
1499
-
1472
+ auto helper =
1473
+ GetCacheItemHelper(block_type, rep_->ioptions.lowest_used_cache_tier);
1474
+ if (block_cache && helper && helper->create_cb) {
1500
1475
  CacheKey key = BlockBasedTable::GetCacheKey(rep_->base_cache_key, *handle);
1501
-
1502
- const size_t read_amp_bytes_per_bit =
1503
- rep_->table_options.read_amp_bytes_per_bit;
1504
-
1505
- // TODO akanksha:: Dedup below code by calling
1506
- // BlockBasedTable::PutDataBlockToCache.
1507
- std::unique_ptr<TBlocklike> block_holder(
1508
- BlocklikeTraits<TBlocklike>::Create(
1509
- std::move(results), read_amp_bytes_per_bit,
1510
- rep_->ioptions.statistics.get(),
1511
- false /*rep_->blocks_definitely_zstd_compressed*/,
1512
- rep_->table_options.filter_policy.get()));
1513
-
1514
- assert(block_holder->own_bytes());
1515
- size_t charge = block_holder->ApproximateMemoryUsage();
1516
- s = block_cache->Insert(
1517
- key.AsSlice(), block_holder.get(),
1518
- BlocklikeTraits<TBlocklike>::GetCacheItemHelper(block_type), charge,
1519
- nullptr, Cache::Priority::LOW);
1476
+ size_t charge;
1477
+ s = WarmInCache(block_cache, key.AsSlice(), block_contents,
1478
+ &rep_->create_context, helper, Cache::Priority::LOW,
1479
+ &charge);
1520
1480
 
1521
1481
  if (s.ok()) {
1522
- // Release ownership of block_holder.
1523
- block_holder.release();
1524
1482
  BlockBasedTable::UpdateCacheInsertionMetrics(
1525
1483
  block_type, nullptr /*get_context*/, charge, s.IsOkOverwritten(),
1526
1484
  rep_->ioptions.stats);
@@ -122,9 +122,9 @@ class BlockBasedTableBuilder : public TableBuilder {
122
122
  void WriteBlock(const Slice& block_contents, BlockHandle* handle,
123
123
  BlockType block_type);
124
124
  // Directly write data to the file.
125
- void WriteMaybeCompressedBlock(const Slice& data, CompressionType,
126
- BlockHandle* handle, BlockType block_type,
127
- const Slice* raw_data = nullptr);
125
+ void WriteMaybeCompressedBlock(
126
+ const Slice& block_contents, CompressionType, BlockHandle* handle,
127
+ BlockType block_type, const Slice* uncompressed_block_data = nullptr);
128
128
 
129
129
  void SetupCacheKeyPrefix(const TableBuilderOptions& tbo);
130
130
 
@@ -525,20 +525,24 @@ Status CheckCacheOptionCompatibility(const BlockBasedTableOptions& bbto) {
525
525
 
526
526
  // More complex test of shared key space, in case the instances are wrappers
527
527
  // for some shared underlying cache.
528
+ static Cache::CacheItemHelper kHelper{CacheEntryRole::kMisc};
528
529
  CacheKey sentinel_key = CacheKey::CreateUniqueForProcessLifetime();
529
- static char kRegularBlockCacheMarker = 'b';
530
- static char kCompressedBlockCacheMarker = 'c';
531
- static char kPersistentCacheMarker = 'p';
530
+ struct SentinelValue {
531
+ explicit SentinelValue(char _c) : c(_c) {}
532
+ char c;
533
+ };
534
+ static SentinelValue kRegularBlockCacheMarker{'b'};
535
+ static SentinelValue kCompressedBlockCacheMarker{'c'};
536
+ static char kPersistentCacheMarker{'p'};
532
537
  if (bbto.block_cache) {
533
538
  bbto.block_cache
534
- ->Insert(sentinel_key.AsSlice(), &kRegularBlockCacheMarker, 1,
535
- GetNoopDeleterForRole<CacheEntryRole::kMisc>())
539
+ ->Insert(sentinel_key.AsSlice(), &kRegularBlockCacheMarker, &kHelper, 1)
536
540
  .PermitUncheckedError();
537
541
  }
538
542
  if (bbto.block_cache_compressed) {
539
543
  bbto.block_cache_compressed
540
- ->Insert(sentinel_key.AsSlice(), &kCompressedBlockCacheMarker, 1,
541
- GetNoopDeleterForRole<CacheEntryRole::kMisc>())
544
+ ->Insert(sentinel_key.AsSlice(), &kCompressedBlockCacheMarker, &kHelper,
545
+ 1)
542
546
  .PermitUncheckedError();
543
547
  }
544
548
  if (bbto.persistent_cache) {
@@ -552,8 +556,8 @@ Status CheckCacheOptionCompatibility(const BlockBasedTableOptions& bbto) {
552
556
  if (bbto.block_cache) {
553
557
  auto handle = bbto.block_cache->Lookup(sentinel_key.AsSlice());
554
558
  if (handle) {
555
- auto v = static_cast<char*>(bbto.block_cache->Value(handle));
556
- char c = *v;
559
+ auto v = static_cast<SentinelValue*>(bbto.block_cache->Value(handle));
560
+ char c = v->c;
557
561
  bbto.block_cache->Release(handle);
558
562
  if (v == &kCompressedBlockCacheMarker) {
559
563
  return Status::InvalidArgument(
@@ -571,8 +575,9 @@ Status CheckCacheOptionCompatibility(const BlockBasedTableOptions& bbto) {
571
575
  if (bbto.block_cache_compressed) {
572
576
  auto handle = bbto.block_cache_compressed->Lookup(sentinel_key.AsSlice());
573
577
  if (handle) {
574
- auto v = static_cast<char*>(bbto.block_cache_compressed->Value(handle));
575
- char c = *v;
578
+ auto v = static_cast<SentinelValue*>(
579
+ bbto.block_cache_compressed->Value(handle));
580
+ char c = v->c;
576
581
  bbto.block_cache_compressed->Release(handle);
577
582
  if (v == &kRegularBlockCacheMarker) {
578
583
  return Status::InvalidArgument(
@@ -595,11 +600,11 @@ Status CheckCacheOptionCompatibility(const BlockBasedTableOptions& bbto) {
595
600
  bbto.persistent_cache->Lookup(sentinel_key.AsSlice(), &data, &size)
596
601
  .PermitUncheckedError();
597
602
  if (data && size > 0) {
598
- if (data[0] == kRegularBlockCacheMarker) {
603
+ if (data[0] == kRegularBlockCacheMarker.c) {
599
604
  return Status::InvalidArgument(
600
605
  "persistent_cache and block_cache share the same key space, "
601
606
  "which is not supported");
602
- } else if (data[0] == kCompressedBlockCacheMarker) {
607
+ } else if (data[0] == kCompressedBlockCacheMarker.c) {
603
608
  return Status::InvalidArgument(
604
609
  "persistent_cache and block_cache_compressed share the same key "
605
610
  "space, "