@nxtedition/rocksdb 7.1.14 → 7.1.15

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 (223) hide show
  1. package/binding.cc +1 -0
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +72 -18
  3. package/deps/rocksdb/rocksdb/Makefile +91 -11
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -4
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +5 -0
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +13 -8
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +2 -0
  8. package/deps/rocksdb/rocksdb/cache/cache_test.cc +116 -57
  9. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +958 -459
  10. package/deps/rocksdb/rocksdb/cache/clock_cache.h +407 -622
  11. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +104 -40
  12. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +23 -8
  13. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +350 -184
  14. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +12 -2
  15. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +2 -0
  16. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +130 -43
  17. package/deps/rocksdb/rocksdb/cache/lru_cache.h +24 -2
  18. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +423 -98
  19. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +19 -2
  20. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +10 -7
  21. package/deps/rocksdb/rocksdb/crash_test.mk +2 -2
  22. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +46 -26
  23. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +9 -3
  24. package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +90 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +56 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -10
  27. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +64 -59
  28. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +11 -8
  29. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +92 -62
  30. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +159 -136
  31. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -13
  32. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +129 -57
  33. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +81 -3
  34. package/deps/rocksdb/rocksdb/db/c.cc +29 -0
  35. package/deps/rocksdb/rocksdb/db/column_family.cc +10 -1
  36. package/deps/rocksdb/rocksdb/db/column_family_test.cc +21 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -36
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +344 -102
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +163 -28
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +52 -17
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +35 -30
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -3
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +167 -11
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +8 -8
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +10 -13
  46. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +0 -117
  47. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +6 -49
  48. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +18 -11
  50. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +4 -10
  51. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +1 -1
  52. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +12 -0
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +144 -93
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +28 -32
  55. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +1 -1
  56. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -9
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +2 -33
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -5
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +11 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -0
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2 -1
  63. package/deps/rocksdb/rocksdb/db/db_iter.cc +76 -138
  64. package/deps/rocksdb/rocksdb/db/db_iter.h +26 -23
  65. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1 -1
  66. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +931 -0
  67. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +2 -2
  68. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -0
  69. package/deps/rocksdb/rocksdb/db/db_test2.cc +44 -22
  70. package/deps/rocksdb/rocksdb/db/db_test_util.cc +6 -14
  71. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +155 -0
  72. package/deps/rocksdb/rocksdb/db/db_write_test.cc +45 -0
  73. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
  74. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -0
  75. package/deps/rocksdb/rocksdb/db/experimental.cc +5 -1
  76. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +24 -12
  77. package/deps/rocksdb/rocksdb/db/internal_stats.cc +7 -1
  78. package/deps/rocksdb/rocksdb/db/internal_stats.h +3 -0
  79. package/deps/rocksdb/rocksdb/db/memtable.cc +79 -18
  80. package/deps/rocksdb/rocksdb/db/memtable.h +5 -0
  81. package/deps/rocksdb/rocksdb/db/memtable_list.cc +26 -4
  82. package/deps/rocksdb/rocksdb/db/memtable_list.h +2 -1
  83. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +113 -0
  84. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +110 -0
  85. package/deps/rocksdb/rocksdb/db/{periodic_work_scheduler_test.cc → periodic_task_scheduler_test.cc} +33 -39
  86. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +12 -20
  87. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +6 -5
  88. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +12 -8
  89. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +20 -5
  90. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +14 -0
  91. package/deps/rocksdb/rocksdb/db/repair.cc +17 -8
  92. package/deps/rocksdb/rocksdb/db/repair_test.cc +2 -1
  93. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +49 -66
  94. package/deps/rocksdb/rocksdb/db/table_cache.cc +92 -63
  95. package/deps/rocksdb/rocksdb/db/table_cache.h +16 -9
  96. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  97. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +2 -2
  98. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -3
  99. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
  100. package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
  101. package/deps/rocksdb/rocksdb/db/version_edit.h +1 -2
  102. package/deps/rocksdb/rocksdb/db/version_set.cc +379 -145
  103. package/deps/rocksdb/rocksdb/db/version_set.h +26 -24
  104. package/deps/rocksdb/rocksdb/db/version_set_test.cc +9 -9
  105. package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
  106. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +10 -2
  107. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +2 -0
  108. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +5 -8
  109. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +5 -8
  110. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +2 -0
  111. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +71 -0
  112. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +14 -0
  113. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +23 -0
  114. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +26 -1
  115. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +105 -34
  116. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +16 -8
  117. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -0
  118. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +4 -8
  119. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -8
  120. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +282 -25
  121. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  122. package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -1
  123. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +367 -177
  124. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +144 -56
  125. package/deps/rocksdb/rocksdb/file/filename.cc +3 -3
  126. package/deps/rocksdb/rocksdb/file/filename.h +4 -2
  127. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +415 -0
  128. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +2 -0
  129. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +36 -45
  130. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +21 -3
  131. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +11 -11
  132. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +15 -1
  133. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +163 -68
  134. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +26 -12
  135. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +23 -5
  136. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +21 -17
  137. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +17 -0
  138. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +3 -3
  139. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -6
  140. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  141. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -0
  142. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +3 -3
  143. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -0
  144. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  145. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +3 -0
  146. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -1
  147. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +2 -1
  148. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -2
  149. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +4 -2
  150. package/deps/rocksdb/rocksdb/monitoring/histogram.h +2 -0
  151. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +15 -1
  152. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +17 -0
  153. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +14 -3
  154. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +3 -0
  155. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +50 -0
  156. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -0
  157. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +31 -32
  158. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -1
  159. package/deps/rocksdb/rocksdb/options/options.cc +2 -2
  160. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -1
  161. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -0
  162. package/deps/rocksdb/rocksdb/src.mk +4 -2
  163. package/deps/rocksdb/rocksdb/table/block_based/block.h +9 -8
  164. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +110 -99
  165. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +12 -10
  166. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +11 -2
  167. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +138 -83
  168. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +25 -24
  169. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +31 -30
  170. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +16 -13
  171. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +4 -4
  172. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -3
  173. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -3
  174. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +17 -19
  175. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  176. package/deps/rocksdb/rocksdb/table/format.cc +26 -29
  177. package/deps/rocksdb/rocksdb/table/format.h +44 -26
  178. package/deps/rocksdb/rocksdb/table/get_context.cc +17 -12
  179. package/deps/rocksdb/rocksdb/table/internal_iterator.h +7 -0
  180. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +4 -0
  181. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +950 -104
  182. package/deps/rocksdb/rocksdb/table/merging_iterator.h +28 -1
  183. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +3 -2
  184. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -1
  185. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +10 -9
  186. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +22 -20
  187. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +1 -1
  188. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
  189. package/deps/rocksdb/rocksdb/table/table_builder.h +9 -21
  190. package/deps/rocksdb/rocksdb/table/table_test.cc +12 -12
  191. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +4 -4
  192. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +1 -0
  193. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +116 -34
  194. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +6 -1
  195. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
  196. package/deps/rocksdb/rocksdb/util/autovector.h +12 -0
  197. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +3 -2
  198. package/deps/rocksdb/rocksdb/util/stderr_logger.cc +30 -0
  199. package/deps/rocksdb/rocksdb/util/stderr_logger.h +5 -18
  200. package/deps/rocksdb/rocksdb/util/timer.h +2 -3
  201. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -2
  202. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +1 -1
  203. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +1 -1
  204. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +34 -53
  205. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +9 -14
  206. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -4
  207. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +4 -0
  208. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +1 -1
  209. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +4 -3
  210. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +3 -1
  211. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +26 -8
  212. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +114 -16
  213. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  214. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +59 -0
  215. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +3 -0
  216. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +39 -0
  217. package/deps/rocksdb/rocksdb.gyp +0 -1
  218. package/index.js +6 -10
  219. package/package.json +1 -1
  220. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  221. package/prebuilds/linux-x64/node.napi.node +0 -0
  222. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +0 -168
  223. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +0 -90
@@ -1330,10 +1330,13 @@ class TestSecondaryCache : public SecondaryCache {
1330
1330
  }
1331
1331
  std::unique_ptr<SecondaryCacheResultHandle> Lookup(
1332
1332
  const Slice& /*key*/, const Cache::CreateCallback& /*create_cb*/,
1333
- bool /*wait*/, bool& is_in_sec_cache) override {
1333
+ bool /*wait*/, bool /*advise_erase*/, bool& is_in_sec_cache) override {
1334
1334
  is_in_sec_cache = true;
1335
1335
  return nullptr;
1336
1336
  }
1337
+
1338
+ bool SupportForceErase() const override { return false; }
1339
+
1337
1340
  void Erase(const Slice& /*key*/) override {}
1338
1341
 
1339
1342
  // Wait for a collection of handles to become ready
@@ -697,7 +697,7 @@ ReadOptions::ReadOptions()
697
697
  value_size_soft_limit(std::numeric_limits<uint64_t>::max()),
698
698
  adaptive_readahead(false),
699
699
  async_io(false),
700
- optimize_multiget_for_io(false) {}
700
+ optimize_multiget_for_io(true) {}
701
701
 
702
702
  ReadOptions::ReadOptions(bool cksum, bool cache)
703
703
  : snapshot(nullptr),
@@ -723,6 +723,6 @@ ReadOptions::ReadOptions(bool cksum, bool cache)
723
723
  value_size_soft_limit(std::numeric_limits<uint64_t>::max()),
724
724
  adaptive_readahead(false),
725
725
  async_io(false),
726
- optimize_multiget_for_io(false) {}
726
+ optimize_multiget_for_io(true) {}
727
727
 
728
728
  } // namespace ROCKSDB_NAMESPACE
@@ -198,7 +198,8 @@ TEST_F(OptionsSettableTest, BlockBasedTableOptionsAllFieldsSettable) {
198
198
  "block_align=true;"
199
199
  "max_auto_readahead_size=0;"
200
200
  "prepopulate_block_cache=kDisable;"
201
- "initial_auto_readahead_size=0",
201
+ "initial_auto_readahead_size=0;"
202
+ "num_file_reads_for_auto_readahead=0",
202
203
  new_bbto));
203
204
 
204
205
  ASSERT_EQ(unset_bytes_base,
@@ -21,6 +21,7 @@
21
21
  #ifdef ROCKSDB_JEMALLOC
22
22
  #ifdef __FreeBSD__
23
23
  #include <malloc_np.h>
24
+ #define JEMALLOC_USABLE_SIZE_CONST const
24
25
  #else
25
26
  #define JEMALLOC_MANGLE
26
27
  #include <jemalloc/jemalloc.h>
@@ -11,6 +11,7 @@ LIB_SOURCES = \
11
11
  cache/compressed_secondary_cache.cc \
12
12
  cache/sharded_cache.cc \
13
13
  db/arena_wrapped_db_iter.cc \
14
+ db/blob/blob_contents.cc \
14
15
  db/blob/blob_fetcher.cc \
15
16
  db/blob/blob_file_addition.cc \
16
17
  db/blob/blob_file_builder.cc \
@@ -73,7 +74,7 @@ LIB_SOURCES = \
73
74
  db/merge_helper.cc \
74
75
  db/merge_operator.cc \
75
76
  db/output_validator.cc \
76
- db/periodic_work_scheduler.cc \
77
+ db/periodic_task_scheduler.cc \
77
78
  db/range_del_aggregator.cc \
78
79
  db/range_tombstone_fragmenter.cc \
79
80
  db/repair.cc \
@@ -239,6 +240,7 @@ LIB_SOURCES = \
239
240
  util/slice.cc \
240
241
  util/file_checksum_helper.cc \
241
242
  util/status.cc \
243
+ util/stderr_logger.cc \
242
244
  util/string_util.cc \
243
245
  util/thread_local.cc \
244
246
  util/threadpool_imp.cc \
@@ -500,7 +502,7 @@ TEST_MAIN_SOURCES = \
500
502
  db/obsolete_files_test.cc \
501
503
  db/options_file_test.cc \
502
504
  db/perf_context_test.cc \
503
- db/periodic_work_scheduler_test.cc \
505
+ db/periodic_task_scheduler_test.cc \
504
506
  db/plain_table_db_test.cc \
505
507
  db/prefix_test.cc \
506
508
  db/repair_test.cc \
@@ -137,18 +137,19 @@ class BlockReadAmpBitmap {
137
137
  uint32_t rnd_;
138
138
  };
139
139
 
140
- // This Block class is not for any old block: it is designed to hold only
141
- // uncompressed blocks containing sorted key-value pairs. It is thus
142
- // suitable for storing uncompressed data blocks, index blocks (including
143
- // partitions), range deletion blocks, properties blocks, metaindex blocks,
144
- // as well as the top level of the partitioned filter structure (which is
145
- // actually an index of the filter partitions). It is NOT suitable for
140
+ // class Block is the uncompressed and "parsed" form for blocks containing
141
+ // key-value pairs. (See BlockContents comments for more on terminology.)
142
+ // This includes the in-memory representation of data blocks, index blocks
143
+ // (including partitions), range deletion blocks, properties blocks, metaindex
144
+ // blocks, as well as the top level of the partitioned filter structure (which
145
+ // is actually an index of the filter partitions). It is NOT suitable for
146
146
  // compressed blocks in general, filter blocks/partitions, or compression
147
- // dictionaries (since the latter do not contain sorted key-value pairs).
148
- // Use BlockContents directly for those.
147
+ // dictionaries.
149
148
  //
150
149
  // See https://github.com/facebook/rocksdb/wiki/Rocksdb-BlockBasedTable-Format
151
150
  // for details of the format and the various block types.
151
+ //
152
+ // TODO: Rename to ParsedKvBlock?
152
153
  class Block {
153
154
  public:
154
155
  // Initialize the block with the specified contents.
@@ -104,15 +104,15 @@ FilterBlockBuilder* CreateFilterBlockBuilder(
104
104
  }
105
105
  }
106
106
 
107
- bool GoodCompressionRatio(size_t compressed_size, size_t raw_size) {
107
+ bool GoodCompressionRatio(size_t compressed_size, size_t uncomp_size) {
108
108
  // Check to see if compressed less than 12.5%
109
- return compressed_size < raw_size - (raw_size / 8u);
109
+ return compressed_size < uncomp_size - (uncomp_size / 8u);
110
110
  }
111
111
 
112
112
  } // namespace
113
113
 
114
114
  // format_version is the block format as defined in include/rocksdb/table.h
115
- Slice CompressBlock(const Slice& raw, const CompressionInfo& info,
115
+ Slice CompressBlock(const Slice& uncompressed_data, const CompressionInfo& info,
116
116
  CompressionType* type, uint32_t format_version,
117
117
  bool do_sample, std::string* compressed_output,
118
118
  std::string* sampled_output_fast,
@@ -139,7 +139,8 @@ Slice CompressBlock(const Slice& raw, const CompressionInfo& info,
139
139
  CompressionDict::GetEmptyDict(), c,
140
140
  info.SampleForCompression());
141
141
 
142
- CompressData(raw, info_tmp, GetCompressFormatForVersion(format_version),
142
+ CompressData(uncompressed_data, info_tmp,
143
+ GetCompressFormatForVersion(format_version),
143
144
  sampled_output_fast);
144
145
  }
145
146
 
@@ -152,29 +153,32 @@ Slice CompressBlock(const Slice& raw, const CompressionInfo& info,
152
153
  CompressionDict::GetEmptyDict(), c,
153
154
  info.SampleForCompression());
154
155
 
155
- CompressData(raw, info_tmp, GetCompressFormatForVersion(format_version),
156
+ CompressData(uncompressed_data, info_tmp,
157
+ GetCompressFormatForVersion(format_version),
156
158
  sampled_output_slow);
157
159
  }
158
160
  }
159
161
 
160
162
  if (info.type() == kNoCompression) {
161
163
  *type = kNoCompression;
162
- return raw;
164
+ return uncompressed_data;
163
165
  }
164
166
 
165
167
  // Actually compress the data; if the compression method is not supported,
166
168
  // or the compression fails etc., just fall back to uncompressed
167
- if (!CompressData(raw, info, GetCompressFormatForVersion(format_version),
169
+ if (!CompressData(uncompressed_data, info,
170
+ GetCompressFormatForVersion(format_version),
168
171
  compressed_output)) {
169
172
  *type = kNoCompression;
170
- return raw;
173
+ return uncompressed_data;
171
174
  }
172
175
 
173
176
  // Check the compression ratio; if it's not good enough, just fall back to
174
177
  // uncompressed
175
- if (!GoodCompressionRatio(compressed_output->size(), raw.size())) {
178
+ if (!GoodCompressionRatio(compressed_output->size(),
179
+ uncompressed_data.size())) {
176
180
  *type = kNoCompression;
177
- return raw;
181
+ return uncompressed_data;
178
182
  }
179
183
 
180
184
  *type = info.type();
@@ -216,7 +220,7 @@ class BlockBasedTableBuilder::BlockBasedTablePropertiesCollector
216
220
  return Status::OK();
217
221
  }
218
222
 
219
- virtual void BlockAdd(uint64_t /* block_raw_bytes */,
223
+ virtual void BlockAdd(uint64_t /* block_uncomp_bytes */,
220
224
  uint64_t /* block_compressed_bytes_fast */,
221
225
  uint64_t /* block_compressed_bytes_slow */) override {
222
226
  // Intentionally left blank. No interest in collecting stats for
@@ -665,21 +669,21 @@ struct BlockBasedTableBuilder::ParallelCompressionRep {
665
669
  class FileSizeEstimator {
666
670
  public:
667
671
  explicit FileSizeEstimator()
668
- : raw_bytes_compressed(0),
669
- raw_bytes_curr_block(0),
670
- raw_bytes_curr_block_set(false),
671
- raw_bytes_inflight(0),
672
+ : uncomp_bytes_compressed(0),
673
+ uncomp_bytes_curr_block(0),
674
+ uncomp_bytes_curr_block_set(false),
675
+ uncomp_bytes_inflight(0),
672
676
  blocks_inflight(0),
673
677
  curr_compression_ratio(0),
674
678
  estimated_file_size(0) {}
675
679
 
676
680
  // Estimate file size when a block is about to be emitted to
677
681
  // compression thread
678
- void EmitBlock(uint64_t raw_block_size, uint64_t curr_file_size) {
679
- uint64_t new_raw_bytes_inflight =
680
- raw_bytes_inflight.fetch_add(raw_block_size,
681
- std::memory_order_relaxed) +
682
- raw_block_size;
682
+ void EmitBlock(uint64_t uncomp_block_size, uint64_t curr_file_size) {
683
+ uint64_t new_uncomp_bytes_inflight =
684
+ uncomp_bytes_inflight.fetch_add(uncomp_block_size,
685
+ std::memory_order_relaxed) +
686
+ uncomp_block_size;
683
687
 
684
688
  uint64_t new_blocks_inflight =
685
689
  blocks_inflight.fetch_add(1, std::memory_order_relaxed) + 1;
@@ -687,7 +691,7 @@ struct BlockBasedTableBuilder::ParallelCompressionRep {
687
691
  estimated_file_size.store(
688
692
  curr_file_size +
689
693
  static_cast<uint64_t>(
690
- static_cast<double>(new_raw_bytes_inflight) *
694
+ static_cast<double>(new_uncomp_bytes_inflight) *
691
695
  curr_compression_ratio.load(std::memory_order_relaxed)) +
692
696
  new_blocks_inflight * kBlockTrailerSize,
693
697
  std::memory_order_relaxed);
@@ -696,24 +700,24 @@ struct BlockBasedTableBuilder::ParallelCompressionRep {
696
700
  // Estimate file size when a block is already reaped from
697
701
  // compression thread
698
702
  void ReapBlock(uint64_t compressed_block_size, uint64_t curr_file_size) {
699
- assert(raw_bytes_curr_block_set);
703
+ assert(uncomp_bytes_curr_block_set);
700
704
 
701
- uint64_t new_raw_bytes_compressed =
702
- raw_bytes_compressed + raw_bytes_curr_block;
703
- assert(new_raw_bytes_compressed > 0);
705
+ uint64_t new_uncomp_bytes_compressed =
706
+ uncomp_bytes_compressed + uncomp_bytes_curr_block;
707
+ assert(new_uncomp_bytes_compressed > 0);
704
708
 
705
709
  curr_compression_ratio.store(
706
710
  (curr_compression_ratio.load(std::memory_order_relaxed) *
707
- raw_bytes_compressed +
711
+ uncomp_bytes_compressed +
708
712
  compressed_block_size) /
709
- static_cast<double>(new_raw_bytes_compressed),
713
+ static_cast<double>(new_uncomp_bytes_compressed),
710
714
  std::memory_order_relaxed);
711
- raw_bytes_compressed = new_raw_bytes_compressed;
715
+ uncomp_bytes_compressed = new_uncomp_bytes_compressed;
712
716
 
713
- uint64_t new_raw_bytes_inflight =
714
- raw_bytes_inflight.fetch_sub(raw_bytes_curr_block,
715
- std::memory_order_relaxed) -
716
- raw_bytes_curr_block;
717
+ uint64_t new_uncomp_bytes_inflight =
718
+ uncomp_bytes_inflight.fetch_sub(uncomp_bytes_curr_block,
719
+ std::memory_order_relaxed) -
720
+ uncomp_bytes_curr_block;
717
721
 
718
722
  uint64_t new_blocks_inflight =
719
723
  blocks_inflight.fetch_sub(1, std::memory_order_relaxed) - 1;
@@ -721,12 +725,12 @@ struct BlockBasedTableBuilder::ParallelCompressionRep {
721
725
  estimated_file_size.store(
722
726
  curr_file_size +
723
727
  static_cast<uint64_t>(
724
- static_cast<double>(new_raw_bytes_inflight) *
728
+ static_cast<double>(new_uncomp_bytes_inflight) *
725
729
  curr_compression_ratio.load(std::memory_order_relaxed)) +
726
730
  new_blocks_inflight * kBlockTrailerSize,
727
731
  std::memory_order_relaxed);
728
732
 
729
- raw_bytes_curr_block_set = false;
733
+ uncomp_bytes_curr_block_set = false;
730
734
  }
731
735
 
732
736
  void SetEstimatedFileSize(uint64_t size) {
@@ -737,24 +741,24 @@ struct BlockBasedTableBuilder::ParallelCompressionRep {
737
741
  return estimated_file_size.load(std::memory_order_relaxed);
738
742
  }
739
743
 
740
- void SetCurrBlockRawSize(uint64_t size) {
741
- raw_bytes_curr_block = size;
742
- raw_bytes_curr_block_set = true;
744
+ void SetCurrBlockUncompSize(uint64_t size) {
745
+ uncomp_bytes_curr_block = size;
746
+ uncomp_bytes_curr_block_set = true;
743
747
  }
744
748
 
745
749
  private:
746
- // Raw bytes compressed so far.
747
- uint64_t raw_bytes_compressed;
750
+ // Input bytes compressed so far.
751
+ uint64_t uncomp_bytes_compressed;
748
752
  // Size of current block being appended.
749
- uint64_t raw_bytes_curr_block;
750
- // Whether raw_bytes_curr_block has been set for next
753
+ uint64_t uncomp_bytes_curr_block;
754
+ // Whether uncomp_bytes_curr_block has been set for next
751
755
  // ReapBlock call.
752
- bool raw_bytes_curr_block_set;
753
- // Raw bytes under compression and not appended yet.
754
- std::atomic<uint64_t> raw_bytes_inflight;
756
+ bool uncomp_bytes_curr_block_set;
757
+ // Input bytes under compression and not appended yet.
758
+ std::atomic<uint64_t> uncomp_bytes_inflight;
755
759
  // Number of blocks under compression and not appended yet.
756
760
  std::atomic<uint64_t> blocks_inflight;
757
- // Current compression ratio, maintained by BGWorkWriteRawBlock.
761
+ // Current compression ratio, maintained by BGWorkWriteMaybeCompressedBlock.
758
762
  std::atomic<double> curr_compression_ratio;
759
763
  // Estimated SST file size.
760
764
  std::atomic<uint64_t> estimated_file_size;
@@ -1040,19 +1044,19 @@ void BlockBasedTableBuilder::WriteBlock(BlockBuilder* block,
1040
1044
  BlockHandle* handle,
1041
1045
  BlockType block_type) {
1042
1046
  block->Finish();
1043
- std::string raw_block_contents;
1044
- raw_block_contents.reserve(rep_->table_options.block_size);
1045
- block->SwapAndReset(raw_block_contents);
1047
+ std::string uncompressed_block_data;
1048
+ uncompressed_block_data.reserve(rep_->table_options.block_size);
1049
+ block->SwapAndReset(uncompressed_block_data);
1046
1050
  if (rep_->state == Rep::State::kBuffered) {
1047
1051
  assert(block_type == BlockType::kData);
1048
- rep_->data_block_buffers.emplace_back(std::move(raw_block_contents));
1052
+ rep_->data_block_buffers.emplace_back(std::move(uncompressed_block_data));
1049
1053
  rep_->data_begin_offset += rep_->data_block_buffers.back().size();
1050
1054
  return;
1051
1055
  }
1052
- WriteBlock(raw_block_contents, handle, block_type);
1056
+ WriteBlock(uncompressed_block_data, handle, block_type);
1053
1057
  }
1054
1058
 
1055
- void BlockBasedTableBuilder::WriteBlock(const Slice& raw_block_contents,
1059
+ void BlockBasedTableBuilder::WriteBlock(const Slice& uncompressed_block_data,
1056
1060
  BlockHandle* handle,
1057
1061
  BlockType block_type) {
1058
1062
  Rep* r = rep_;
@@ -1061,7 +1065,7 @@ void BlockBasedTableBuilder::WriteBlock(const Slice& raw_block_contents,
1061
1065
  CompressionType type;
1062
1066
  Status compress_status;
1063
1067
  bool is_data_block = block_type == BlockType::kData;
1064
- CompressAndVerifyBlock(raw_block_contents, is_data_block,
1068
+ CompressAndVerifyBlock(uncompressed_block_data, is_data_block,
1065
1069
  *(r->compression_ctxs[0]), r->verify_ctxs[0].get(),
1066
1070
  &(r->compressed_output), &(block_contents), &type,
1067
1071
  &compress_status);
@@ -1070,7 +1074,8 @@ void BlockBasedTableBuilder::WriteBlock(const Slice& raw_block_contents,
1070
1074
  return;
1071
1075
  }
1072
1076
 
1073
- WriteRawBlock(block_contents, type, handle, block_type, &raw_block_contents);
1077
+ WriteMaybeCompressedBlock(block_contents, type, handle, block_type,
1078
+ &uncompressed_block_data);
1074
1079
  r->compressed_output.clear();
1075
1080
  if (is_data_block) {
1076
1081
  r->props.data_size = r->get_offset();
@@ -1094,7 +1099,7 @@ void BlockBasedTableBuilder::BGWorkCompression(
1094
1099
  }
1095
1100
 
1096
1101
  void BlockBasedTableBuilder::CompressAndVerifyBlock(
1097
- const Slice& raw_block_contents, bool is_data_block,
1102
+ const Slice& uncompressed_block_data, bool is_data_block,
1098
1103
  const CompressionContext& compression_ctx, UncompressionContext* verify_ctx,
1099
1104
  std::string* compressed_output, Slice* block_contents,
1100
1105
  CompressionType* type, Status* out_status) {
@@ -1116,9 +1121,9 @@ void BlockBasedTableBuilder::CompressAndVerifyBlock(
1116
1121
  r->ioptions.clock,
1117
1122
  ShouldReportDetailedTime(r->ioptions.env, r->ioptions.stats));
1118
1123
 
1119
- if (is_status_ok && raw_block_contents.size() < kCompressionSizeLimit) {
1124
+ if (is_status_ok && uncompressed_block_data.size() < kCompressionSizeLimit) {
1120
1125
  if (is_data_block) {
1121
- r->compressible_input_data_bytes.fetch_add(raw_block_contents.size(),
1126
+ r->compressible_input_data_bytes.fetch_add(uncompressed_block_data.size(),
1122
1127
  std::memory_order_relaxed);
1123
1128
  }
1124
1129
  const CompressionDict* compression_dict;
@@ -1135,14 +1140,14 @@ void BlockBasedTableBuilder::CompressAndVerifyBlock(
1135
1140
  std::string sampled_output_fast;
1136
1141
  std::string sampled_output_slow;
1137
1142
  *block_contents = CompressBlock(
1138
- raw_block_contents, compression_info, type,
1143
+ uncompressed_block_data, compression_info, type,
1139
1144
  r->table_options.format_version, is_data_block /* do_sample */,
1140
1145
  compressed_output, &sampled_output_fast, &sampled_output_slow);
1141
1146
 
1142
1147
  if (sampled_output_slow.size() > 0 || sampled_output_fast.size() > 0) {
1143
1148
  // Currently compression sampling is only enabled for data block.
1144
1149
  assert(is_data_block);
1145
- r->sampled_input_data_bytes.fetch_add(raw_block_contents.size(),
1150
+ r->sampled_input_data_bytes.fetch_add(uncompressed_block_data.size(),
1146
1151
  std::memory_order_relaxed);
1147
1152
  r->sampled_output_slow_data_bytes.fetch_add(sampled_output_slow.size(),
1148
1153
  std::memory_order_relaxed);
@@ -1151,7 +1156,7 @@ void BlockBasedTableBuilder::CompressAndVerifyBlock(
1151
1156
  }
1152
1157
  // notify collectors on block add
1153
1158
  NotifyCollectTableCollectorsOnBlockAdd(
1154
- r->table_properties_collectors, raw_block_contents.size(),
1159
+ r->table_properties_collectors, uncompressed_block_data.size(),
1155
1160
  sampled_output_fast.size(), sampled_output_slow.size());
1156
1161
 
1157
1162
  // Some of the compression algorithms are known to be unreliable. If
@@ -1169,19 +1174,20 @@ void BlockBasedTableBuilder::CompressAndVerifyBlock(
1169
1174
  BlockContents contents;
1170
1175
  UncompressionInfo uncompression_info(*verify_ctx, *verify_dict,
1171
1176
  r->compression_type);
1172
- Status stat = UncompressBlockContentsForCompressionType(
1177
+ Status stat = UncompressBlockData(
1173
1178
  uncompression_info, block_contents->data(), block_contents->size(),
1174
1179
  &contents, r->table_options.format_version, r->ioptions);
1175
1180
 
1176
1181
  if (stat.ok()) {
1177
- bool compressed_ok = contents.data.compare(raw_block_contents) == 0;
1182
+ bool compressed_ok =
1183
+ contents.data.compare(uncompressed_block_data) == 0;
1178
1184
  if (!compressed_ok) {
1179
1185
  // The result of the compression was invalid. abort.
1180
1186
  abort_compression = true;
1181
- ROCKS_LOG_ERROR(r->ioptions.logger,
1182
- "Decompressed block did not match raw block");
1183
- *out_status =
1184
- Status::Corruption("Decompressed block did not match raw block");
1187
+ const char* const msg =
1188
+ "Decompressed block did not match pre-compression block";
1189
+ ROCKS_LOG_ERROR(r->ioptions.logger, "%s", msg);
1190
+ *out_status = Status::Corruption(msg);
1185
1191
  }
1186
1192
  } else {
1187
1193
  // Decompression reported an error. abort.
@@ -1193,8 +1199,8 @@ void BlockBasedTableBuilder::CompressAndVerifyBlock(
1193
1199
  } else {
1194
1200
  // Block is too big to be compressed.
1195
1201
  if (is_data_block) {
1196
- r->uncompressible_input_data_bytes.fetch_add(raw_block_contents.size(),
1197
- std::memory_order_relaxed);
1202
+ r->uncompressible_input_data_bytes.fetch_add(
1203
+ uncompressed_block_data.size(), std::memory_order_relaxed);
1198
1204
  }
1199
1205
  abort_compression = true;
1200
1206
  }
@@ -1208,27 +1214,26 @@ void BlockBasedTableBuilder::CompressAndVerifyBlock(
1208
1214
  if (abort_compression) {
1209
1215
  RecordTick(r->ioptions.stats, NUMBER_BLOCK_NOT_COMPRESSED);
1210
1216
  *type = kNoCompression;
1211
- *block_contents = raw_block_contents;
1217
+ *block_contents = uncompressed_block_data;
1212
1218
  } else if (*type != kNoCompression) {
1213
1219
  if (ShouldReportDetailedTime(r->ioptions.env, r->ioptions.stats)) {
1214
1220
  RecordTimeToHistogram(r->ioptions.stats, COMPRESSION_TIMES_NANOS,
1215
1221
  timer.ElapsedNanos());
1216
1222
  }
1217
1223
  RecordInHistogram(r->ioptions.stats, BYTES_COMPRESSED,
1218
- raw_block_contents.size());
1224
+ uncompressed_block_data.size());
1219
1225
  RecordTick(r->ioptions.stats, NUMBER_BLOCK_COMPRESSED);
1220
1226
  } else if (*type != r->compression_type) {
1221
1227
  RecordTick(r->ioptions.stats, NUMBER_BLOCK_NOT_COMPRESSED);
1222
1228
  }
1223
1229
  }
1224
1230
 
1225
- void BlockBasedTableBuilder::WriteRawBlock(const Slice& block_contents,
1226
- CompressionType type,
1227
- BlockHandle* handle,
1228
- BlockType block_type,
1229
- const Slice* raw_block_contents) {
1231
+ void BlockBasedTableBuilder::WriteMaybeCompressedBlock(
1232
+ const Slice& block_contents, CompressionType type, BlockHandle* handle,
1233
+ BlockType block_type, const Slice* uncompressed_block_data) {
1230
1234
  Rep* r = rep_;
1231
1235
  bool is_data_block = block_type == BlockType::kData;
1236
+ // Old, misleading name of this function: WriteRawBlock
1232
1237
  StopWatch sw(r->ioptions.clock, r->ioptions.stats, WRITE_RAW_BLOCK_MICROS);
1233
1238
  handle->set_offset(r->get_offset());
1234
1239
  handle->set_size(block_contents.size());
@@ -1259,7 +1264,7 @@ void BlockBasedTableBuilder::WriteRawBlock(const Slice& block_contents,
1259
1264
 
1260
1265
  EncodeFixed32(trailer.data() + 1, checksum);
1261
1266
  TEST_SYNC_POINT_CALLBACK(
1262
- "BlockBasedTableBuilder::WriteRawBlock:TamperWithChecksum",
1267
+ "BlockBasedTableBuilder::WriteMaybeCompressedBlock:TamperWithChecksum",
1263
1268
  trailer.data());
1264
1269
  {
1265
1270
  IOStatus io_s = r->file->Append(Slice(trailer.data(), trailer.size()));
@@ -1287,8 +1292,9 @@ void BlockBasedTableBuilder::WriteRawBlock(const Slice& block_contents,
1287
1292
  if (warm_cache) {
1288
1293
  if (type == kNoCompression) {
1289
1294
  s = InsertBlockInCacheHelper(block_contents, handle, block_type);
1290
- } else if (raw_block_contents != nullptr) {
1291
- s = InsertBlockInCacheHelper(*raw_block_contents, handle, block_type);
1295
+ } else if (uncompressed_block_data != nullptr) {
1296
+ s = InsertBlockInCacheHelper(*uncompressed_block_data, handle,
1297
+ block_type);
1292
1298
  }
1293
1299
  if (!s.ok()) {
1294
1300
  r->SetStatus(s);
@@ -1327,7 +1333,7 @@ void BlockBasedTableBuilder::WriteRawBlock(const Slice& block_contents,
1327
1333
  }
1328
1334
  }
1329
1335
 
1330
- void BlockBasedTableBuilder::BGWorkWriteRawBlock() {
1336
+ void BlockBasedTableBuilder::BGWorkWriteMaybeCompressedBlock() {
1331
1337
  Rep* r = rep_;
1332
1338
  ParallelCompressionRep::BlockRepSlot* slot = nullptr;
1333
1339
  ParallelCompressionRep::BlockRep* block_rep = nullptr;
@@ -1354,9 +1360,11 @@ void BlockBasedTableBuilder::BGWorkWriteRawBlock() {
1354
1360
  r->index_builder->OnKeyAdded(key);
1355
1361
  }
1356
1362
 
1357
- r->pc_rep->file_size_estimator.SetCurrBlockRawSize(block_rep->data->size());
1358
- WriteRawBlock(block_rep->compressed_contents, block_rep->compression_type,
1359
- &r->pending_handle, BlockType::kData, &block_rep->contents);
1363
+ r->pc_rep->file_size_estimator.SetCurrBlockUncompSize(
1364
+ block_rep->data->size());
1365
+ WriteMaybeCompressedBlock(block_rep->compressed_contents,
1366
+ block_rep->compression_type, &r->pending_handle,
1367
+ BlockType::kData, &block_rep->contents);
1360
1368
  if (!ok()) {
1361
1369
  break;
1362
1370
  }
@@ -1391,7 +1399,7 @@ void BlockBasedTableBuilder::StartParallelCompression() {
1391
1399
  });
1392
1400
  }
1393
1401
  rep_->pc_rep->write_thread.reset(
1394
- new port::Thread([this] { BGWorkWriteRawBlock(); }));
1402
+ new port::Thread([this] { BGWorkWriteMaybeCompressedBlock(); }));
1395
1403
  }
1396
1404
 
1397
1405
  void BlockBasedTableBuilder::StopParallelCompression() {
@@ -1438,7 +1446,7 @@ Status BlockBasedTableBuilder::InsertBlockInCompressedCache(
1438
1446
  BlockContents* block_contents_to_cache =
1439
1447
  new BlockContents(std::move(ubuf), size);
1440
1448
  #ifndef NDEBUG
1441
- block_contents_to_cache->is_raw_block = true;
1449
+ block_contents_to_cache->has_trailer = true;
1442
1450
  #endif // NDEBUG
1443
1451
 
1444
1452
  CacheKey key = BlockBasedTable::GetCacheKey(rep_->base_cache_key, *handle);
@@ -1567,8 +1575,8 @@ void BlockBasedTableBuilder::WriteFilterBlock(
1567
1575
  BlockType btype = is_partitioned_filter && /* last */ s.ok()
1568
1576
  ? BlockType::kFilterPartitionIndex
1569
1577
  : BlockType::kFilter;
1570
- WriteRawBlock(filter_content, kNoCompression, &filter_block_handle, btype,
1571
- nullptr /*raw_contents*/);
1578
+ WriteMaybeCompressedBlock(filter_content, kNoCompression,
1579
+ &filter_block_handle, btype);
1572
1580
  }
1573
1581
  rep_->filter_builder->ResetFilterBitsBuilder();
1574
1582
  }
@@ -1613,8 +1621,9 @@ void BlockBasedTableBuilder::WriteIndexBlock(
1613
1621
  WriteBlock(index_blocks.index_block_contents, index_block_handle,
1614
1622
  BlockType::kIndex);
1615
1623
  } else {
1616
- WriteRawBlock(index_blocks.index_block_contents, kNoCompression,
1617
- index_block_handle, BlockType::kIndex);
1624
+ WriteMaybeCompressedBlock(index_blocks.index_block_contents,
1625
+ kNoCompression, index_block_handle,
1626
+ BlockType::kIndex);
1618
1627
  }
1619
1628
  }
1620
1629
  // If there are more index partitions, finish them and write them out
@@ -1638,8 +1647,9 @@ void BlockBasedTableBuilder::WriteIndexBlock(
1638
1647
  WriteBlock(index_blocks.index_block_contents, index_block_handle,
1639
1648
  BlockType::kIndex);
1640
1649
  } else {
1641
- WriteRawBlock(index_blocks.index_block_contents, kNoCompression,
1642
- index_block_handle, BlockType::kIndex);
1650
+ WriteMaybeCompressedBlock(index_blocks.index_block_contents,
1651
+ kNoCompression, index_block_handle,
1652
+ BlockType::kIndex);
1643
1653
  }
1644
1654
  // The last index_block_handle will be for the partition index block
1645
1655
  }
@@ -1727,8 +1737,8 @@ void BlockBasedTableBuilder::WritePropertiesBlock(
1727
1737
  Slice block_data = property_block_builder.Finish();
1728
1738
  TEST_SYNC_POINT_CALLBACK(
1729
1739
  "BlockBasedTableBuilder::WritePropertiesBlock:BlockData", &block_data);
1730
- WriteRawBlock(block_data, kNoCompression, &properties_block_handle,
1731
- BlockType::kProperties);
1740
+ WriteMaybeCompressedBlock(block_data, kNoCompression,
1741
+ &properties_block_handle, BlockType::kProperties);
1732
1742
  }
1733
1743
  if (ok()) {
1734
1744
  #ifndef NDEBUG
@@ -1758,9 +1768,9 @@ void BlockBasedTableBuilder::WriteCompressionDictBlock(
1758
1768
  rep_->compression_dict->GetRawDict().size()) {
1759
1769
  BlockHandle compression_dict_block_handle;
1760
1770
  if (ok()) {
1761
- WriteRawBlock(rep_->compression_dict->GetRawDict(), kNoCompression,
1762
- &compression_dict_block_handle,
1763
- BlockType::kCompressionDictionary);
1771
+ WriteMaybeCompressedBlock(rep_->compression_dict->GetRawDict(),
1772
+ kNoCompression, &compression_dict_block_handle,
1773
+ BlockType::kCompressionDictionary);
1764
1774
  #ifndef NDEBUG
1765
1775
  Slice compression_dict = rep_->compression_dict->GetRawDict();
1766
1776
  TEST_SYNC_POINT_CALLBACK(
@@ -1779,8 +1789,9 @@ void BlockBasedTableBuilder::WriteRangeDelBlock(
1779
1789
  MetaIndexBuilder* meta_index_builder) {
1780
1790
  if (ok() && !rep_->range_del_block.empty()) {
1781
1791
  BlockHandle range_del_block_handle;
1782
- WriteRawBlock(rep_->range_del_block.Finish(), kNoCompression,
1783
- &range_del_block_handle, BlockType::kRangeDeletion);
1792
+ WriteMaybeCompressedBlock(rep_->range_del_block.Finish(), kNoCompression,
1793
+ &range_del_block_handle,
1794
+ BlockType::kRangeDeletion);
1784
1795
  meta_index_builder->Add(kRangeDelBlockName, range_del_block_handle);
1785
1796
  }
1786
1797
  }
@@ -2001,8 +2012,8 @@ Status BlockBasedTableBuilder::Finish() {
2001
2012
  WritePropertiesBlock(&meta_index_builder);
2002
2013
  if (ok()) {
2003
2014
  // flush the meta index block
2004
- WriteRawBlock(meta_index_builder.Finish(), kNoCompression,
2005
- &metaindex_block_handle, BlockType::kMetaIndex);
2015
+ WriteMaybeCompressedBlock(meta_index_builder.Finish(), kNoCompression,
2016
+ &metaindex_block_handle, BlockType::kMetaIndex);
2006
2017
  }
2007
2018
  if (ok()) {
2008
2019
  WriteFooter(metaindex_block_handle, index_block_handle);
@@ -2036,7 +2047,7 @@ uint64_t BlockBasedTableBuilder::FileSize() const { return rep_->offset; }
2036
2047
 
2037
2048
  uint64_t BlockBasedTableBuilder::EstimatedFileSize() const {
2038
2049
  if (rep_->IsParallelCompressionEnabled()) {
2039
- // Use compression ratio so far and inflight raw bytes to estimate
2050
+ // Use compression ratio so far and inflight uncompressed bytes to estimate
2040
2051
  // final SST size.
2041
2052
  return rep_->pc_rep->file_size_estimator.GetEstimatedFileSize();
2042
2053
  } else {