@nxtedition/rocksdb 8.2.7 → 9.0.0

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 (359) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -1
  2. package/deps/rocksdb/rocksdb/Makefile +22 -19
  3. package/deps/rocksdb/rocksdb/TARGETS +8 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +157 -61
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +43 -92
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +632 -455
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +244 -149
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +41 -13
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +11 -1
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +216 -17
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +7 -5
  12. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +279 -199
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +159 -8
  15. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.h +28 -2
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +1 -1
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +8 -0
  18. package/deps/rocksdb/rocksdb/crash_test.mk +14 -0
  19. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +3 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -1
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +1 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +18 -21
  25. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +1 -2
  26. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +2 -3
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +1 -1
  29. package/deps/rocksdb/rocksdb/db/builder.cc +32 -7
  30. package/deps/rocksdb/rocksdb/db/c.cc +169 -6
  31. package/deps/rocksdb/rocksdb/db/c_test.c +104 -6
  32. package/deps/rocksdb/rocksdb/db/column_family.cc +98 -47
  33. package/deps/rocksdb/rocksdb/db/column_family.h +25 -2
  34. package/deps/rocksdb/rocksdb/db/column_family_test.cc +213 -2
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -1
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +93 -23
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +33 -9
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +17 -6
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +107 -43
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -4
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -0
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +4 -2
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +25 -17
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +13 -4
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -11
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +29 -4
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +24 -31
  50. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +3 -1
  51. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +19 -19
  52. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +2 -1
  53. package/deps/rocksdb/rocksdb/db/convenience.cc +20 -3
  54. package/deps/rocksdb/rocksdb/db/convenience_impl.h +15 -0
  55. package/deps/rocksdb/rocksdb/db/corruption_test.cc +17 -0
  56. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  57. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -3
  58. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +15 -15
  60. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +666 -44
  61. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +2 -29
  62. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +274 -1
  63. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +40 -19
  64. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +6 -5
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +250 -116
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +51 -23
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +354 -96
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +6 -3
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +2 -1
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +50 -21
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +26 -13
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +13 -5
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +61 -21
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -87
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +7 -1
  77. package/deps/rocksdb/rocksdb/db/db_iter.cc +2 -2
  78. package/deps/rocksdb/rocksdb/db/db_iter.h +1 -0
  79. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +4 -11
  80. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +6 -6
  81. package/deps/rocksdb/rocksdb/db/db_options_test.cc +39 -29
  82. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +26 -36
  83. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +106 -0
  84. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +12 -3
  85. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +1 -1
  86. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +1 -0
  87. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +279 -166
  88. package/deps/rocksdb/rocksdb/db/db_test.cc +48 -21
  89. package/deps/rocksdb/rocksdb/db/db_test2.cc +81 -12
  90. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  91. package/deps/rocksdb/rocksdb/db/db_test_util.h +40 -0
  92. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +13 -1
  93. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +233 -0
  94. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +143 -0
  95. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +6 -6
  96. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -2
  97. package/deps/rocksdb/rocksdb/db/dbformat.cc +36 -0
  98. package/deps/rocksdb/rocksdb/db/dbformat.h +169 -20
  99. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +129 -0
  100. package/deps/rocksdb/rocksdb/db/error_handler.cc +16 -0
  101. package/deps/rocksdb/rocksdb/db/error_handler.h +6 -3
  102. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  103. package/deps/rocksdb/rocksdb/db/event_helpers.cc +4 -0
  104. package/deps/rocksdb/rocksdb/db/experimental.cc +2 -1
  105. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +4 -4
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +17 -8
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -4
  108. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/file_indexer.cc +2 -4
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +101 -11
  111. package/deps/rocksdb/rocksdb/db/flush_job.h +24 -1
  112. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +88 -11
  113. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +2 -3
  114. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +159 -91
  115. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +19 -10
  116. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +143 -0
  117. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -1
  118. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  119. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -1
  120. package/deps/rocksdb/rocksdb/db/log_reader.h +3 -2
  121. package/deps/rocksdb/rocksdb/db/log_test.cc +17 -21
  122. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  123. package/deps/rocksdb/rocksdb/db/log_writer.h +3 -2
  124. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +4 -3
  125. package/deps/rocksdb/rocksdb/db/memtable.cc +52 -13
  126. package/deps/rocksdb/rocksdb/db/memtable.h +45 -1
  127. package/deps/rocksdb/rocksdb/db/memtable_list.cc +44 -10
  128. package/deps/rocksdb/rocksdb/db/memtable_list.h +32 -1
  129. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +90 -4
  130. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -2
  131. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  132. package/deps/rocksdb/rocksdb/db/repair.cc +21 -4
  133. package/deps/rocksdb/rocksdb/db/repair_test.cc +143 -2
  134. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -4
  135. package/deps/rocksdb/rocksdb/db/table_cache.cc +44 -35
  136. package/deps/rocksdb/rocksdb/db/table_cache.h +6 -6
  137. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
  138. package/deps/rocksdb/rocksdb/db/version_builder.cc +0 -1
  139. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +236 -204
  140. package/deps/rocksdb/rocksdb/db/version_edit.cc +66 -4
  141. package/deps/rocksdb/rocksdb/db/version_edit.h +48 -6
  142. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +80 -8
  143. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +12 -0
  144. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +86 -17
  145. package/deps/rocksdb/rocksdb/db/version_set.cc +136 -41
  146. package/deps/rocksdb/rocksdb/db/version_set.h +28 -7
  147. package/deps/rocksdb/rocksdb/db/version_set_test.cc +25 -15
  148. package/deps/rocksdb/rocksdb/db/write_batch.cc +11 -0
  149. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +3 -0
  150. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +16 -0
  151. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +22 -3
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +2 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +42 -0
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +32 -3
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +7 -0
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -120
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +9 -4
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +13 -6
  159. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +2 -0
  160. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +15 -27
  161. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +264 -69
  162. package/deps/rocksdb/rocksdb/env/env.cc +1 -2
  163. package/deps/rocksdb/rocksdb/env/env_encryption.cc +11 -165
  164. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +0 -17
  165. package/deps/rocksdb/rocksdb/env/env_posix.cc +6 -2
  166. package/deps/rocksdb/rocksdb/env/env_test.cc +86 -2
  167. package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
  168. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +78 -0
  169. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +34 -0
  170. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -0
  171. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +15 -4
  172. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +52 -43
  173. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +34 -18
  174. package/deps/rocksdb/rocksdb/file/file_util.cc +10 -5
  175. package/deps/rocksdb/rocksdb/file/file_util.h +13 -1
  176. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +724 -79
  177. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +64 -33
  178. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -16
  179. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +23 -12
  180. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +3 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +2 -1
  182. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +153 -88
  183. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +70 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +50 -11
  185. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -0
  186. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +16 -2
  187. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +1 -1
  188. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +55 -8
  189. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +32 -4
  190. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +9 -109
  191. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +90 -13
  192. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  193. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +85 -17
  194. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +13 -1
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +2 -1
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +5 -1
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +21 -2
  198. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +7 -1
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +6 -0
  200. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +5 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +33 -2
  202. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +14 -0
  203. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +33 -2
  204. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +0 -3
  205. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  206. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -0
  207. package/deps/rocksdb/rocksdb/memory/arena_test.cc +18 -11
  208. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +2 -1
  209. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +69 -34
  210. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +16 -1
  211. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +10 -0
  212. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  213. package/deps/rocksdb/rocksdb/options/cf_options.h +10 -2
  214. package/deps/rocksdb/rocksdb/options/customizable_test.cc +2 -1
  215. package/deps/rocksdb/rocksdb/options/db_options.cc +7 -0
  216. package/deps/rocksdb/rocksdb/options/db_options.h +1 -0
  217. package/deps/rocksdb/rocksdb/options/options.cc +15 -1
  218. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  219. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +11 -3
  220. package/deps/rocksdb/rocksdb/options/options_test.cc +8 -0
  221. package/deps/rocksdb/rocksdb/port/mmap.h +20 -0
  222. package/deps/rocksdb/rocksdb/port/stack_trace.cc +27 -12
  223. package/deps/rocksdb/rocksdb/port/win/env_win.h +1 -1
  224. package/deps/rocksdb/rocksdb/src.mk +3 -0
  225. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  226. package/deps/rocksdb/rocksdb/table/block_based/block.cc +48 -22
  227. package/deps/rocksdb/rocksdb/table/block_based/block.h +60 -12
  228. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +115 -42
  229. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +6 -5
  230. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +60 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +2 -0
  232. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +62 -44
  233. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +36 -14
  234. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -15
  235. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +219 -51
  236. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +41 -8
  237. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -1
  238. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +50 -21
  239. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +11 -4
  240. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +195 -55
  241. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  242. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +31 -16
  243. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +97 -58
  244. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +1 -1
  245. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +6 -0
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +27 -12
  247. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +3 -1
  248. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +114 -70
  249. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +1 -2
  250. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +9 -6
  251. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +15 -3
  252. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +6 -3
  253. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +11 -11
  254. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +3 -0
  255. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +1 -0
  256. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +6 -2
  257. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -2
  258. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +2 -3
  259. package/deps/rocksdb/rocksdb/table/format.cc +175 -33
  260. package/deps/rocksdb/rocksdb/table/format.h +63 -10
  261. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -2
  262. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +12 -4
  263. package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -0
  264. package/deps/rocksdb/rocksdb/table/mock_table.cc +8 -3
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +10 -5
  266. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +10 -1
  267. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +1 -2
  268. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +3 -3
  269. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +12 -3
  270. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +26 -1
  271. package/deps/rocksdb/rocksdb/table/table_builder.h +6 -2
  272. package/deps/rocksdb/rocksdb/table/table_properties.cc +6 -0
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +52 -22
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +19 -7
  275. package/deps/rocksdb/rocksdb/test_util/sync_point.h +3 -1
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +29 -0
  277. package/deps/rocksdb/rocksdb/test_util/testutil.h +19 -0
  278. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +65 -26
  279. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  280. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -0
  281. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  282. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +0 -1
  283. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +4 -0
  284. package/deps/rocksdb/rocksdb/unreleased_history/README.txt +73 -0
  285. package/deps/rocksdb/rocksdb/unreleased_history/add.sh +27 -0
  286. package/deps/rocksdb/rocksdb/unreleased_history/behavior_changes/.gitkeep +0 -0
  287. package/deps/rocksdb/rocksdb/unreleased_history/bug_fixes/.gitkeep +0 -0
  288. package/deps/rocksdb/rocksdb/unreleased_history/new_features/.gitkeep +0 -0
  289. package/deps/rocksdb/rocksdb/unreleased_history/performance_improvements/.gitkeep +0 -0
  290. package/deps/rocksdb/rocksdb/unreleased_history/public_api_changes/.gitkeep +0 -0
  291. package/deps/rocksdb/rocksdb/unreleased_history/release.sh +104 -0
  292. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +5 -0
  293. package/deps/rocksdb/rocksdb/util/bloom_impl.h +3 -3
  294. package/deps/rocksdb/rocksdb/util/cast_util.h +14 -0
  295. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -0
  296. package/deps/rocksdb/rocksdb/util/comparator.cc +29 -7
  297. package/deps/rocksdb/rocksdb/util/compression.cc +4 -4
  298. package/deps/rocksdb/rocksdb/util/compression.h +110 -32
  299. package/deps/rocksdb/rocksdb/util/core_local.h +2 -1
  300. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +4 -4
  301. package/deps/rocksdb/rocksdb/util/filelock_test.cc +3 -0
  302. package/deps/rocksdb/rocksdb/util/hash.h +7 -3
  303. package/deps/rocksdb/rocksdb/util/hash_test.cc +44 -0
  304. package/deps/rocksdb/rocksdb/util/math.h +58 -6
  305. package/deps/rocksdb/rocksdb/util/math128.h +29 -7
  306. package/deps/rocksdb/rocksdb/util/mutexlock.h +35 -27
  307. package/deps/rocksdb/rocksdb/util/single_thread_executor.h +1 -0
  308. package/deps/rocksdb/rocksdb/util/stop_watch.h +1 -1
  309. package/deps/rocksdb/rocksdb/util/thread_operation.h +8 -1
  310. package/deps/rocksdb/rocksdb/util/udt_util.cc +343 -0
  311. package/deps/rocksdb/rocksdb/util/udt_util.h +173 -1
  312. package/deps/rocksdb/rocksdb/util/udt_util_test.cc +447 -0
  313. package/deps/rocksdb/rocksdb/util/write_batch_util.cc +25 -0
  314. package/deps/rocksdb/rocksdb/util/write_batch_util.h +80 -0
  315. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -4
  316. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +69 -25
  317. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +7 -6
  318. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +1 -1
  319. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +2 -3
  320. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +6 -11
  321. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -2
  322. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +4 -5
  323. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +1 -1
  324. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +2 -2
  325. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +2 -1
  326. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +3 -3
  327. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +1 -2
  328. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +2 -3
  329. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +2 -2
  330. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  331. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +23 -8
  332. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +9 -6
  333. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +37 -12
  334. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +231 -33
  335. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +0 -1
  336. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +76 -20
  337. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +18 -9
  338. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +40 -23
  339. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +13 -12
  340. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +7 -0
  341. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -1
  342. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +41 -11
  343. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +6 -3
  344. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +71 -24
  345. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +19 -4
  346. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +60 -107
  347. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +39 -11
  348. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +6 -3
  349. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +14 -8
  350. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +1 -1
  351. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +10 -5
  352. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  353. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -1
  354. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +2 -1
  355. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +6 -6
  356. package/deps/rocksdb/rocksdb.gyp +2 -0
  357. package/package.json +1 -1
  358. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  359. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -697,7 +697,7 @@ TEST_F(DBTest, ReadFromPersistedTier) {
697
697
 
698
698
  // 3rd round: delete and flush
699
699
  ASSERT_OK(db_->Delete(wopt, handles_[1], "foo"));
700
- Flush(1);
700
+ ASSERT_OK(Flush(1));
701
701
  ASSERT_OK(db_->Delete(wopt, handles_[1], "bar"));
702
702
 
703
703
  ASSERT_TRUE(db_->Get(ropt, handles_[1], "foo", &value).IsNotFound());
@@ -860,7 +860,7 @@ TEST_F(DBTest, DISABLED_VeryLargeValue) {
860
860
  ASSERT_EQ('w', value[0]);
861
861
 
862
862
  // Compact all files.
863
- Flush();
863
+ ASSERT_OK(Flush());
864
864
  db_->CompactRange(CompactRangeOptions(), nullptr, nullptr);
865
865
 
866
866
  // Check DB is not in read-only state.
@@ -1300,7 +1300,7 @@ TEST_F(DBTest, MetaDataTest) {
1300
1300
  options.disable_auto_compactions = true;
1301
1301
 
1302
1302
  int64_t temp_time = 0;
1303
- options.env->GetCurrentTime(&temp_time);
1303
+ ASSERT_OK(options.env->GetCurrentTime(&temp_time));
1304
1304
  uint64_t start_time = static_cast<uint64_t>(temp_time);
1305
1305
 
1306
1306
  DestroyAndReopen(options);
@@ -1329,7 +1329,7 @@ TEST_F(DBTest, MetaDataTest) {
1329
1329
  std::vector<std::vector<FileMetaData>> files_by_level;
1330
1330
  dbfull()->TEST_GetFilesMetaData(db_->DefaultColumnFamily(), &files_by_level);
1331
1331
 
1332
- options.env->GetCurrentTime(&temp_time);
1332
+ ASSERT_OK(options.env->GetCurrentTime(&temp_time));
1333
1333
  uint64_t end_time = static_cast<uint64_t>(temp_time);
1334
1334
 
1335
1335
  ColumnFamilyMetaData cf_meta;
@@ -3097,7 +3097,7 @@ class ModelDB : public DB {
3097
3097
  const ColumnFamilyOptions& /*options*/,
3098
3098
  const std::string& /*column_family_name*/,
3099
3099
  const ImportColumnFamilyOptions& /*import_options*/,
3100
- const ExportImportFilesMetaData& /*metadata*/,
3100
+ const std::vector<const ExportImportFilesMetaData*>& /*metadatas*/,
3101
3101
  ColumnFamilyHandle** /*handle*/) override {
3102
3102
  return Status::NotSupported("Not implemented.");
3103
3103
  }
@@ -3264,6 +3264,11 @@ class ModelDB : public DB {
3264
3264
 
3265
3265
  void DisableManualCompaction() override { return; }
3266
3266
 
3267
+ virtual Status WaitForCompact(
3268
+ const WaitForCompactOptions& /* wait_for_compact_options */) override {
3269
+ return Status::OK();
3270
+ }
3271
+
3267
3272
  using DB::NumberLevels;
3268
3273
  int NumberLevels(ColumnFamilyHandle* /*column_family*/) override { return 1; }
3269
3274
 
@@ -3643,7 +3648,7 @@ TEST_F(DBTest, BlockBasedTablePrefixHashIndexTest) {
3643
3648
  ASSERT_OK(Put("kk2", "v2"));
3644
3649
  ASSERT_OK(Put("kk", "v3"));
3645
3650
  ASSERT_OK(Put("k", "v4"));
3646
- Flush();
3651
+ ASSERT_OK(Flush());
3647
3652
 
3648
3653
  ASSERT_EQ("v1", Get("kk1"));
3649
3654
  ASSERT_EQ("v2", Get("kk2"));
@@ -4275,8 +4280,8 @@ TEST_F(DBTest, ConcurrentMemtableNotSupported) {
4275
4280
  options.soft_pending_compaction_bytes_limit = 0;
4276
4281
  options.hard_pending_compaction_bytes_limit = 100;
4277
4282
  options.create_if_missing = true;
4278
-
4279
- DestroyDB(dbname_, options);
4283
+ Close();
4284
+ ASSERT_OK(DestroyDB(dbname_, options));
4280
4285
  options.memtable_factory.reset(NewHashLinkListRepFactory(4, 0, 3, true, 4));
4281
4286
  ASSERT_NOK(TryReopen(options));
4282
4287
 
@@ -4617,7 +4622,7 @@ TEST_F(DBTest, GetThreadStatus) {
4617
4622
  Options options;
4618
4623
  options.env = env_;
4619
4624
  options.enable_thread_tracking = true;
4620
- TryReopen(options);
4625
+ ASSERT_OK(TryReopen(options));
4621
4626
 
4622
4627
  std::vector<ThreadStatus> thread_list;
4623
4628
  Status s = env_->GetThreadList(&thread_list);
@@ -4688,7 +4693,7 @@ TEST_F(DBTest, DisableThreadStatus) {
4688
4693
  Options options;
4689
4694
  options.env = env_;
4690
4695
  options.enable_thread_tracking = false;
4691
- TryReopen(options);
4696
+ ASSERT_OK(TryReopen(options));
4692
4697
  CreateAndReopenWithCF({"pikachu", "about-to-remove"}, options);
4693
4698
  // Verify non of the column family info exists
4694
4699
  env_->GetThreadStatusUpdater()->TEST_VerifyColumnFamilyInfoMap(handles_,
@@ -4897,7 +4902,7 @@ TEST_P(DBTestWithParam, PreShutdownMultipleCompaction) {
4897
4902
  options.level0_slowdown_writes_trigger = 1 << 10;
4898
4903
  options.max_subcompactions = max_subcompactions_;
4899
4904
 
4900
- TryReopen(options);
4905
+ ASSERT_OK(TryReopen(options));
4901
4906
  Random rnd(301);
4902
4907
 
4903
4908
  std::vector<ThreadStatus> thread_list;
@@ -4986,7 +4991,7 @@ TEST_P(DBTestWithParam, PreShutdownCompactionMiddle) {
4986
4991
  options.level0_slowdown_writes_trigger = 1 << 10;
4987
4992
  options.max_subcompactions = max_subcompactions_;
4988
4993
 
4989
- TryReopen(options);
4994
+ ASSERT_OK(TryReopen(options));
4990
4995
  Random rnd(301);
4991
4996
 
4992
4997
  std::vector<ThreadStatus> thread_list;
@@ -5267,6 +5272,7 @@ TEST_F(DBTest, DynamicCompactionOptions) {
5267
5272
  const uint64_t k1MB = 1 << 20;
5268
5273
  const uint64_t k4KB = 1 << 12;
5269
5274
  Options options;
5275
+ options.level_compaction_dynamic_level_bytes = false;
5270
5276
  options.env = env_;
5271
5277
  options.create_if_missing = true;
5272
5278
  options.compression = kNoCompression;
@@ -6896,16 +6902,16 @@ TEST_F(DBTest, RowCache) {
6896
6902
  options.statistics = ROCKSDB_NAMESPACE::CreateDBStatistics();
6897
6903
  LRUCacheOptions cache_options;
6898
6904
  cache_options.capacity = 8192;
6899
- options.row_cache = cache_options.MakeSharedGeneralCache();
6905
+ options.row_cache = cache_options.MakeSharedRowCache();
6900
6906
  // BEGIN check that Cache classes as aliases of each other.
6901
- // Currently, GeneralCache and BlockCache are aliases for Cache.
6907
+ // Currently, RowCache and BlockCache are aliases for Cache.
6902
6908
  // This is expected to change (carefully, intentionally)
6903
- std::shared_ptr<GeneralCache> general_cache = options.row_cache;
6904
- std::shared_ptr<Cache> cache = general_cache;
6905
- std::shared_ptr<BlockCache> block_cache = general_cache;
6906
- general_cache = cache;
6909
+ std::shared_ptr<RowCache> row_cache = options.row_cache;
6910
+ std::shared_ptr<Cache> cache = row_cache;
6911
+ std::shared_ptr<BlockCache> block_cache = row_cache;
6912
+ row_cache = cache;
6907
6913
  block_cache = cache;
6908
- general_cache = block_cache;
6914
+ row_cache = block_cache;
6909
6915
  cache = block_cache;
6910
6916
  // END check that Cache classes as aliases of each other.
6911
6917
  DestroyAndReopen(options);
@@ -6921,6 +6927,27 @@ TEST_F(DBTest, RowCache) {
6921
6927
  ASSERT_EQ(Get("foo"), "bar");
6922
6928
  ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_HIT), 1);
6923
6929
  ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 1);
6930
+
6931
+ // Also test non-OK cache insertion (would be ASAN failure on memory leak)
6932
+ class FailInsertionCache : public CacheWrapper {
6933
+ public:
6934
+ using CacheWrapper::CacheWrapper;
6935
+ const char* Name() const override { return "FailInsertionCache"; }
6936
+ Status Insert(const Slice&, Cache::ObjectPtr, const CacheItemHelper*,
6937
+ size_t, Handle** = nullptr,
6938
+ Priority = Priority::LOW) override {
6939
+ return Status::MemoryLimit();
6940
+ }
6941
+ };
6942
+ options.row_cache = std::make_shared<FailInsertionCache>(options.row_cache);
6943
+ ASSERT_OK(options.statistics->Reset());
6944
+ Reopen(options);
6945
+
6946
+ ASSERT_EQ(Get("foo"), "bar");
6947
+ ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 1);
6948
+ ASSERT_EQ(Get("foo"), "bar");
6949
+ // Test condition requires row cache insertion to fail
6950
+ ASSERT_EQ(TestGetTickerCount(options, ROW_CACHE_MISS), 2);
6924
6951
  }
6925
6952
 
6926
6953
  TEST_F(DBTest, PinnableSliceAndRowCache) {
@@ -7179,14 +7206,14 @@ TEST_F(DBTest, CreationTimeOfOldestFile) {
7179
7206
  int idx = 0;
7180
7207
 
7181
7208
  int64_t time_1 = 0;
7182
- env_->GetCurrentTime(&time_1);
7209
+ ASSERT_OK(env_->GetCurrentTime(&time_1));
7183
7210
  const uint64_t uint_time_1 = static_cast<uint64_t>(time_1);
7184
7211
 
7185
7212
  // Add 50 hours
7186
7213
  env_->MockSleepForSeconds(50 * 60 * 60);
7187
7214
 
7188
7215
  int64_t time_2 = 0;
7189
- env_->GetCurrentTime(&time_2);
7216
+ ASSERT_OK(env_->GetCurrentTime(&time_2));
7190
7217
  const uint64_t uint_time_2 = static_cast<uint64_t>(time_2);
7191
7218
 
7192
7219
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->SetCallBack(
@@ -266,7 +266,7 @@ TEST_F(DBTest2, CacheIndexAndFilterWithDBRestart) {
266
266
  ASSERT_OK(Put(1, "a", "begin"));
267
267
  ASSERT_OK(Put(1, "z", "end"));
268
268
  ASSERT_OK(Flush(1));
269
- TryReopenWithColumnFamilies({"default", "pikachu"}, options);
269
+ ASSERT_OK(TryReopenWithColumnFamilies({"default", "pikachu"}, options));
270
270
 
271
271
  std::string value;
272
272
  value = Get(1, "a");
@@ -357,10 +357,10 @@ TEST_P(DBTestSharedWriteBufferAcrossCFs, SharedWriteBufferAcrossCFs) {
357
357
  // are newer CFs created.
358
358
  flush_listener->expected_flush_reason = FlushReason::kManualFlush;
359
359
  ASSERT_OK(Put(3, Key(1), DummyString(1), wo));
360
- Flush(3);
360
+ ASSERT_OK(Flush(3));
361
361
  ASSERT_OK(Put(3, Key(1), DummyString(1), wo));
362
362
  ASSERT_OK(Put(0, Key(1), DummyString(1), wo));
363
- Flush(0);
363
+ ASSERT_OK(Flush(0));
364
364
  ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "default"),
365
365
  static_cast<uint64_t>(1));
366
366
  ASSERT_EQ(GetNumberOfSstFilesForColumnFamily(db_, "nikitich"),
@@ -2063,11 +2063,12 @@ class PinL0IndexAndFilterBlocksTest
2063
2063
  ASSERT_OK(Flush(1));
2064
2064
  // move this table to L1
2065
2065
  ASSERT_OK(dbfull()->TEST_CompactRange(0, nullptr, nullptr, handles_[1]));
2066
+ ASSERT_EQ(1, NumTableFilesAtLevel(1, 1));
2066
2067
 
2067
2068
  // reset block cache
2068
2069
  table_options.block_cache = NewLRUCache(64 * 1024);
2069
2070
  options->table_factory.reset(NewBlockBasedTableFactory(table_options));
2070
- TryReopenWithColumnFamilies({"default", "pikachu"}, *options);
2071
+ ASSERT_OK(TryReopenWithColumnFamilies({"default", "pikachu"}, *options));
2071
2072
  // create new table at L0
2072
2073
  ASSERT_OK(Put(1, "a2", "begin2"));
2073
2074
  ASSERT_OK(Put(1, "z2", "end2"));
@@ -2187,7 +2188,7 @@ TEST_P(PinL0IndexAndFilterBlocksTest, DisablePrefetchingNonL0IndexAndFilter) {
2187
2188
  // Reopen database. If max_open_files is set as -1, table readers will be
2188
2189
  // preloaded. This will trigger a BlockBasedTable::Open() and prefetch
2189
2190
  // L0 index and filter. Level 1's prefetching is disabled in DB::Open()
2190
- TryReopenWithColumnFamilies({"default", "pikachu"}, options);
2191
+ ASSERT_OK(TryReopenWithColumnFamilies({"default", "pikachu"}, options));
2191
2192
 
2192
2193
  ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->DisableProcessing();
2193
2194
 
@@ -2220,7 +2221,7 @@ TEST_P(PinL0IndexAndFilterBlocksTest, DisablePrefetchingNonL0IndexAndFilter) {
2220
2221
  // this should be read from L1
2221
2222
  value = Get(1, "a");
2222
2223
  if (!disallow_preload_) {
2223
- // In inifinite max files case, there's a cache miss in executing Get()
2224
+ // In infinite max files case, there's a cache miss in executing Get()
2224
2225
  // because index and filter are not prefetched before.
2225
2226
  ASSERT_EQ(fm + 2, TestGetTickerCount(options, BLOCK_CACHE_FILTER_MISS));
2226
2227
  ASSERT_EQ(fh, TestGetTickerCount(options, BLOCK_CACHE_FILTER_HIT));
@@ -2248,12 +2249,12 @@ TEST_P(PinL0IndexAndFilterBlocksTest, DisablePrefetchingNonL0IndexAndFilter) {
2248
2249
  ASSERT_EQ(fm + 3, TestGetTickerCount(options, BLOCK_CACHE_FILTER_MISS));
2249
2250
  ASSERT_EQ(fh, TestGetTickerCount(options, BLOCK_CACHE_FILTER_HIT));
2250
2251
  ASSERT_EQ(im + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_MISS));
2251
- ASSERT_EQ(ih + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2252
+ ASSERT_EQ(ih + 2, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2252
2253
  } else {
2253
2254
  ASSERT_EQ(fm + 3, TestGetTickerCount(options, BLOCK_CACHE_FILTER_MISS));
2254
2255
  ASSERT_EQ(fh + 1, TestGetTickerCount(options, BLOCK_CACHE_FILTER_HIT));
2255
2256
  ASSERT_EQ(im + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_MISS));
2256
- ASSERT_EQ(ih + 4, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2257
+ ASSERT_EQ(ih + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2257
2258
  }
2258
2259
 
2259
2260
  // Bloom and index hit will happen when a Get() happens.
@@ -2262,12 +2263,12 @@ TEST_P(PinL0IndexAndFilterBlocksTest, DisablePrefetchingNonL0IndexAndFilter) {
2262
2263
  ASSERT_EQ(fm + 3, TestGetTickerCount(options, BLOCK_CACHE_FILTER_MISS));
2263
2264
  ASSERT_EQ(fh + 1, TestGetTickerCount(options, BLOCK_CACHE_FILTER_HIT));
2264
2265
  ASSERT_EQ(im + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_MISS));
2265
- ASSERT_EQ(ih + 4, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2266
+ ASSERT_EQ(ih + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2266
2267
  } else {
2267
2268
  ASSERT_EQ(fm + 3, TestGetTickerCount(options, BLOCK_CACHE_FILTER_MISS));
2268
2269
  ASSERT_EQ(fh + 2, TestGetTickerCount(options, BLOCK_CACHE_FILTER_HIT));
2269
2270
  ASSERT_EQ(im + 3, TestGetTickerCount(options, BLOCK_CACHE_INDEX_MISS));
2270
- ASSERT_EQ(ih + 5, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2271
+ ASSERT_EQ(ih + 4, TestGetTickerCount(options, BLOCK_CACHE_INDEX_HIT));
2271
2272
  }
2272
2273
  }
2273
2274
 
@@ -3803,7 +3804,7 @@ TEST_F(DBTest2, MemtableOnlyIterator) {
3803
3804
  ASSERT_EQ(2, count);
3804
3805
  delete it;
3805
3806
 
3806
- Flush(1);
3807
+ ASSERT_OK(Flush(1));
3807
3808
 
3808
3809
  // After flushing
3809
3810
  // point lookups
@@ -4111,7 +4112,7 @@ TEST_F(DBTest2, LiveFilesOmitObsoleteFiles) {
4111
4112
  ASSERT_OK(Put("key", "val"));
4112
4113
  FlushOptions flush_opts;
4113
4114
  flush_opts.wait = false;
4114
- db_->Flush(flush_opts);
4115
+ ASSERT_OK(db_->Flush(flush_opts));
4115
4116
  TEST_SYNC_POINT("DBTest2::LiveFilesOmitObsoleteFiles:FlushTriggered");
4116
4117
 
4117
4118
  ASSERT_OK(db_->DisableFileDeletions());
@@ -6875,6 +6876,7 @@ TEST_F(DBTest2, LastLevelTemperatureUniversal) {
6875
6876
  TEST_F(DBTest2, LastLevelStatistics) {
6876
6877
  Options options = CurrentOptions();
6877
6878
  options.bottommost_temperature = Temperature::kWarm;
6879
+ options.default_temperature = Temperature::kHot;
6878
6880
  options.level0_file_num_compaction_trigger = 2;
6879
6881
  options.level_compaction_dynamic_level_bytes = true;
6880
6882
  options.statistics = CreateDBStatistics();
@@ -6888,6 +6890,10 @@ TEST_F(DBTest2, LastLevelStatistics) {
6888
6890
 
6889
6891
  ASSERT_GT(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_BYTES), 0);
6890
6892
  ASSERT_GT(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT), 0);
6893
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_BYTES),
6894
+ options.statistics->getTickerCount(HOT_FILE_READ_BYTES));
6895
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT),
6896
+ options.statistics->getTickerCount(HOT_FILE_READ_COUNT));
6891
6897
  ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_BYTES), 0);
6892
6898
  ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_COUNT), 0);
6893
6899
 
@@ -6898,6 +6904,10 @@ TEST_F(DBTest2, LastLevelStatistics) {
6898
6904
  ASSERT_OK(dbfull()->TEST_WaitForCompact());
6899
6905
  ASSERT_EQ("bar", Get("bar"));
6900
6906
 
6907
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_BYTES),
6908
+ options.statistics->getTickerCount(HOT_FILE_READ_BYTES));
6909
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT),
6910
+ options.statistics->getTickerCount(HOT_FILE_READ_COUNT));
6901
6911
  ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_BYTES),
6902
6912
  options.statistics->getTickerCount(WARM_FILE_READ_BYTES));
6903
6913
  ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_COUNT),
@@ -6918,6 +6928,30 @@ TEST_F(DBTest2, LastLevelStatistics) {
6918
6928
  pre_bytes);
6919
6929
  ASSERT_GT(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT),
6920
6930
  pre_count);
6931
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_BYTES),
6932
+ options.statistics->getTickerCount(HOT_FILE_READ_BYTES));
6933
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT),
6934
+ options.statistics->getTickerCount(HOT_FILE_READ_COUNT));
6935
+ ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_BYTES),
6936
+ options.statistics->getTickerCount(WARM_FILE_READ_BYTES));
6937
+ ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_COUNT),
6938
+ options.statistics->getTickerCount(WARM_FILE_READ_COUNT));
6939
+
6940
+ // Not a realistic setting to make last level kWarm and default temp kCold.
6941
+ // This is just for testing default temp can be reset on reopen while the
6942
+ // last level temp is consistent across DB reopen because those file's temp
6943
+ // are persisted in manifest.
6944
+ options.default_temperature = Temperature::kCold;
6945
+ ASSERT_OK(options.statistics->Reset());
6946
+ Reopen(options);
6947
+ ASSERT_EQ("bar", Get("bar"));
6948
+
6949
+ ASSERT_EQ(0, options.statistics->getTickerCount(HOT_FILE_READ_BYTES));
6950
+
6951
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_BYTES),
6952
+ options.statistics->getTickerCount(COLD_FILE_READ_BYTES));
6953
+ ASSERT_EQ(options.statistics->getTickerCount(NON_LAST_LEVEL_READ_COUNT),
6954
+ options.statistics->getTickerCount(COLD_FILE_READ_COUNT));
6921
6955
  ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_BYTES),
6922
6956
  options.statistics->getTickerCount(WARM_FILE_READ_BYTES));
6923
6957
  ASSERT_EQ(options.statistics->getTickerCount(LAST_LEVEL_READ_COUNT),
@@ -7669,6 +7703,41 @@ TEST_F(DBTest2, GetLatestSeqAndTsForKey) {
7669
7703
  ASSERT_EQ(0, options.statistics->getTickerCount(GET_HIT_L0));
7670
7704
  }
7671
7705
 
7706
+ #if defined(ZSTD_ADVANCED)
7707
+ TEST_F(DBTest2, ZSTDChecksum) {
7708
+ // Verify that corruption during decompression is caught.
7709
+ Options options = CurrentOptions();
7710
+ options.create_if_missing = true;
7711
+ options.compression = kZSTD;
7712
+ options.compression_opts.max_compressed_bytes_per_kb = 1024;
7713
+ options.compression_opts.checksum = true;
7714
+ DestroyAndReopen(options);
7715
+ Random rnd(33);
7716
+ ASSERT_OK(Put(Key(0), rnd.RandomString(4 << 10)));
7717
+ SyncPoint::GetInstance()->SetCallBack(
7718
+ "BlockBasedTableBuilder::WriteBlock:TamperWithCompressedData",
7719
+ [&](void* arg) {
7720
+ std::string* output = static_cast<std::string*>(arg);
7721
+ // https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md#zstandard-frames
7722
+ // Checksum is the last 4 bytes, corrupting that part in unit test is
7723
+ // more controllable.
7724
+ output->data()[output->size() - 1]++;
7725
+ });
7726
+ SyncPoint::GetInstance()->EnableProcessing();
7727
+ ASSERT_OK(Flush());
7728
+ PinnableSlice val;
7729
+ Status s = Get(Key(0), &val);
7730
+ ASSERT_TRUE(s.IsCorruption());
7731
+
7732
+ // Corruption caught during flush.
7733
+ options.paranoid_file_checks = true;
7734
+ DestroyAndReopen(options);
7735
+ ASSERT_OK(Put(Key(0), rnd.RandomString(4 << 10)));
7736
+ s = Flush();
7737
+ ASSERT_TRUE(s.IsCorruption());
7738
+ }
7739
+ #endif
7740
+
7672
7741
  } // namespace ROCKSDB_NAMESPACE
7673
7742
 
7674
7743
  int main(int argc, char** argv) {
@@ -259,7 +259,7 @@ bool DBTestBase::ChangeFilterOptions() {
259
259
 
260
260
  auto options = CurrentOptions();
261
261
  options.create_if_missing = true;
262
- TryReopen(options);
262
+ EXPECT_OK(TryReopen(options));
263
263
  return true;
264
264
  }
265
265
 
@@ -270,34 +270,34 @@ bool DBTestBase::ChangeOptionsForFileIngestionTest() {
270
270
  Destroy(last_options_);
271
271
  auto options = CurrentOptions();
272
272
  options.create_if_missing = true;
273
- TryReopen(options);
273
+ EXPECT_OK(TryReopen(options));
274
274
  return true;
275
275
  } else if (option_config_ == kUniversalCompaction) {
276
276
  option_config_ = kUniversalCompactionMultiLevel;
277
277
  Destroy(last_options_);
278
278
  auto options = CurrentOptions();
279
279
  options.create_if_missing = true;
280
- TryReopen(options);
280
+ EXPECT_OK(TryReopen(options));
281
281
  return true;
282
282
  } else if (option_config_ == kUniversalCompactionMultiLevel) {
283
283
  option_config_ = kLevelSubcompactions;
284
284
  Destroy(last_options_);
285
285
  auto options = CurrentOptions();
286
286
  assert(options.max_subcompactions > 1);
287
- TryReopen(options);
287
+ EXPECT_OK(TryReopen(options));
288
288
  return true;
289
289
  } else if (option_config_ == kLevelSubcompactions) {
290
290
  option_config_ = kUniversalSubcompactions;
291
291
  Destroy(last_options_);
292
292
  auto options = CurrentOptions();
293
293
  assert(options.max_subcompactions > 1);
294
- TryReopen(options);
294
+ EXPECT_OK(TryReopen(options));
295
295
  return true;
296
296
  } else if (option_config_ == kUniversalSubcompactions) {
297
297
  option_config_ = kDirectIO;
298
298
  Destroy(last_options_);
299
299
  auto options = CurrentOptions();
300
- TryReopen(options);
300
+ EXPECT_OK(TryReopen(options));
301
301
  return true;
302
302
  } else {
303
303
  return false;
@@ -324,6 +324,12 @@ Options DBTestBase::GetDefaultOptions() const {
324
324
  options.max_open_files = 5000;
325
325
  options.wal_recovery_mode = WALRecoveryMode::kTolerateCorruptedTailRecords;
326
326
  options.compaction_pri = CompactionPri::kByCompensatedSize;
327
+ // The original default value for this option is false,
328
+ // and many unit tests assume this value. It also makes
329
+ // it easier to create desired LSM shape in unit tests.
330
+ // Unit tests for this option sets level_compaction_dynamic_level_bytes=true
331
+ // explicitly.
332
+ options.level_compaction_dynamic_level_bytes = false;
327
333
  options.env = env_;
328
334
  if (!env_->skip_fsync_) {
329
335
  options.track_and_verify_wals_in_manifest = true;
@@ -569,6 +575,8 @@ Options DBTestBase::GetOptions(
569
575
  if (set_block_based_table_factory) {
570
576
  options.table_factory.reset(NewBlockBasedTableFactory(table_options));
571
577
  }
578
+ options.level_compaction_dynamic_level_bytes =
579
+ options_override.level_compaction_dynamic_level_bytes;
572
580
  options.env = env_;
573
581
  options.create_if_missing = true;
574
582
  options.fail_if_options_file_error = true;
@@ -114,6 +114,12 @@ struct OptionsOverride {
114
114
 
115
115
  // Used as a bit mask of individual enums in which to skip an XF test point
116
116
  int skip_policy = 0;
117
+
118
+ // The default value for this option is changed from false to true.
119
+ // Keeping the default to false for unit tests as old unit tests assume
120
+ // this behavior. Tests for level_compaction_dynamic_level_bytes
121
+ // will set the option to true explicitly.
122
+ bool level_compaction_dynamic_level_bytes = false;
117
123
  };
118
124
 
119
125
  } // namespace anon
@@ -1327,6 +1333,40 @@ class DBTestBase : public testing::Test {
1327
1333
  // supported
1328
1334
  void SetTimeElapseOnlySleepOnReopen(DBOptions* options);
1329
1335
 
1336
+ void ResetTableProperties(TableProperties* tp) {
1337
+ tp->data_size = 0;
1338
+ tp->index_size = 0;
1339
+ tp->filter_size = 0;
1340
+ tp->raw_key_size = 0;
1341
+ tp->raw_value_size = 0;
1342
+ tp->num_data_blocks = 0;
1343
+ tp->num_entries = 0;
1344
+ tp->num_deletions = 0;
1345
+ tp->num_merge_operands = 0;
1346
+ tp->num_range_deletions = 0;
1347
+ }
1348
+
1349
+ void ParseTablePropertiesString(std::string tp_string, TableProperties* tp) {
1350
+ double dummy_double;
1351
+ std::replace(tp_string.begin(), tp_string.end(), ';', ' ');
1352
+ std::replace(tp_string.begin(), tp_string.end(), '=', ' ');
1353
+ ResetTableProperties(tp);
1354
+ sscanf(tp_string.c_str(),
1355
+ "# data blocks %" SCNu64 " # entries %" SCNu64
1356
+ " # deletions %" SCNu64 " # merge operands %" SCNu64
1357
+ " # range deletions %" SCNu64 " raw key size %" SCNu64
1358
+ " raw average key size %lf "
1359
+ " raw value size %" SCNu64
1360
+ " raw average value size %lf "
1361
+ " data block size %" SCNu64 " index block size (user-key? %" SCNu64
1362
+ ", delta-value? %" SCNu64 ") %" SCNu64 " filter block size %" SCNu64,
1363
+ &tp->num_data_blocks, &tp->num_entries, &tp->num_deletions,
1364
+ &tp->num_merge_operands, &tp->num_range_deletions, &tp->raw_key_size,
1365
+ &dummy_double, &tp->raw_value_size, &dummy_double, &tp->data_size,
1366
+ &tp->index_key_is_user_key, &tp->index_value_is_delta_encoded,
1367
+ &tp->index_size, &tp->filter_size);
1368
+ }
1369
+
1330
1370
  private: // Prone to error on direct use
1331
1371
  void MaybeInstallTimeElapseOnlySleep(const DBOptions& options);
1332
1372
 
@@ -2145,7 +2145,19 @@ TEST_F(DBTestUniversalCompaction2, PeriodicCompactionDefault) {
2145
2145
  options.ttl = 60 * 24 * 60 * 60;
2146
2146
  options.compaction_filter = nullptr;
2147
2147
  Reopen(options);
2148
- ASSERT_EQ(60 * 24 * 60 * 60,
2148
+ ASSERT_EQ(30 * 24 * 60 * 60,
2149
+ dbfull()->GetOptions().periodic_compaction_seconds);
2150
+
2151
+ options.periodic_compaction_seconds = 45 * 24 * 60 * 60;
2152
+ options.ttl = 50 * 24 * 60 * 60;
2153
+ Reopen(options);
2154
+ ASSERT_EQ(45 * 24 * 60 * 60,
2155
+ dbfull()->GetOptions().periodic_compaction_seconds);
2156
+
2157
+ options.periodic_compaction_seconds = 0;
2158
+ options.ttl = 50 * 24 * 60 * 60;
2159
+ Reopen(options);
2160
+ ASSERT_EQ(50 * 24 * 60 * 60,
2149
2161
  dbfull()->GetOptions().periodic_compaction_seconds);
2150
2162
  }
2151
2163