@nxtedition/rocksdb 8.2.0 → 8.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/binding.cc +3 -3
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +16 -52
  3. package/deps/rocksdb/rocksdb/Makefile +10 -5
  4. package/deps/rocksdb/rocksdb/TARGETS +8 -345
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +92 -0
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +32 -32
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +12 -9
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +6 -43
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +3 -13
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +8 -5
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +21 -47
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +3 -8
  13. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -1
  14. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +1 -2
  15. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +44 -7
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +13 -14
  17. package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +1 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +1 -0
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +2 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +2 -1
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +17 -8
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +40 -21
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +41 -42
  25. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +1 -1
  26. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +1 -1
  27. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +5 -4
  28. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +2 -2
  29. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +5 -3
  30. package/deps/rocksdb/rocksdb/db/builder.cc +7 -6
  31. package/deps/rocksdb/rocksdb/db/builder.h +2 -2
  32. package/deps/rocksdb/rocksdb/db/c.cc +76 -5
  33. package/deps/rocksdb/rocksdb/db/c_test.c +141 -0
  34. package/deps/rocksdb/rocksdb/db/column_family.cc +32 -0
  35. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +3 -2
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +5 -0
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +8 -5
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +12 -10
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +21 -17
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -2
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +8 -7
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +3 -1
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +77 -50
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +4 -5
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +55 -8
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +142 -56
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +1 -2
  50. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +21 -20
  51. package/deps/rocksdb/rocksdb/db/convenience.cc +8 -6
  52. package/deps/rocksdb/rocksdb/db/corruption_test.cc +5 -4
  53. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +6 -3
  54. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +260 -220
  55. package/deps/rocksdb/rocksdb/db/db_clip_test.cc +142 -0
  56. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +1 -1
  57. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +333 -27
  58. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +5 -0
  59. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +7 -0
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +189 -27
  61. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +23 -10
  62. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +134 -90
  63. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +2 -2
  64. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -3
  65. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +5 -1
  66. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +124 -16
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +10 -0
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +7 -0
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +15 -0
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +11 -5
  71. package/deps/rocksdb/rocksdb/db/db_iter.cc +7 -8
  72. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +54 -3
  73. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +42 -0
  74. package/deps/rocksdb/rocksdb/db/db_options_test.cc +116 -1
  75. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -2
  76. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +3 -2
  77. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +9 -8
  78. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +142 -63
  79. package/deps/rocksdb/rocksdb/db/db_test.cc +28 -7
  80. package/deps/rocksdb/rocksdb/db/db_test2.cc +71 -131
  81. package/deps/rocksdb/rocksdb/db/db_test_util.cc +18 -0
  82. package/deps/rocksdb/rocksdb/db/db_test_util.h +6 -0
  83. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +10 -10
  84. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +25 -0
  85. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +88 -0
  86. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +67 -0
  87. package/deps/rocksdb/rocksdb/db/db_write_test.cc +5 -0
  88. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -2
  90. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +86 -1
  91. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +15 -2
  92. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -2
  93. package/deps/rocksdb/rocksdb/db/flush_job.cc +21 -14
  94. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +14 -7
  95. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +31 -8
  96. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +21 -19
  97. package/deps/rocksdb/rocksdb/db/internal_stats.cc +42 -12
  98. package/deps/rocksdb/rocksdb/db/internal_stats.h +1 -0
  99. package/deps/rocksdb/rocksdb/db/kv_checksum.h +92 -6
  100. package/deps/rocksdb/rocksdb/db/listener_test.cc +2 -2
  101. package/deps/rocksdb/rocksdb/db/log_format.h +8 -4
  102. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -51
  103. package/deps/rocksdb/rocksdb/db/log_reader.h +16 -0
  104. package/deps/rocksdb/rocksdb/db/log_test.cc +125 -4
  105. package/deps/rocksdb/rocksdb/db/log_writer.cc +32 -2
  106. package/deps/rocksdb/rocksdb/db/log_writer.h +16 -0
  107. package/deps/rocksdb/rocksdb/db/memtable.cc +17 -46
  108. package/deps/rocksdb/rocksdb/db/memtable.h +1 -1
  109. package/deps/rocksdb/rocksdb/db/memtable_list.cc +8 -4
  110. package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -1
  111. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +2 -1
  112. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +5 -4
  113. package/deps/rocksdb/rocksdb/db/repair.cc +38 -11
  114. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +3 -3
  115. package/deps/rocksdb/rocksdb/db/table_cache.cc +68 -51
  116. package/deps/rocksdb/rocksdb/db/table_cache.h +20 -10
  117. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -1
  118. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +6 -3
  119. package/deps/rocksdb/rocksdb/db/version_builder.cc +9 -5
  120. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  121. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +140 -120
  122. package/deps/rocksdb/rocksdb/db/version_edit.cc +14 -0
  123. package/deps/rocksdb/rocksdb/db/version_edit.h +12 -4
  124. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +21 -13
  125. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +26 -16
  126. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +9 -9
  127. package/deps/rocksdb/rocksdb/db/version_set.cc +292 -96
  128. package/deps/rocksdb/rocksdb/db/version_set.h +53 -28
  129. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -0
  130. package/deps/rocksdb/rocksdb/db/version_set_test.cc +62 -22
  131. package/deps/rocksdb/rocksdb/db/version_util.h +5 -4
  132. package/deps/rocksdb/rocksdb/db/write_batch.cc +3 -1
  133. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -0
  134. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +119 -27
  135. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +123 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +4 -0
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +7 -2
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +34 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +13 -0
  140. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +43 -33
  141. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +29 -17
  142. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
  143. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -1
  144. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +85 -50
  145. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +96 -54
  146. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.cc +122 -0
  147. package/deps/rocksdb/rocksdb/db_stress_tool/expected_value.h +206 -0
  148. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +9 -1
  149. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +9 -3
  150. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +322 -92
  151. package/deps/rocksdb/rocksdb/env/env_posix.cc +12 -8
  152. package/deps/rocksdb/rocksdb/env/env_test.cc +31 -0
  153. package/deps/rocksdb/rocksdb/env/mock_env.cc +1 -1
  154. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +14 -0
  155. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +1 -1
  156. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +5 -1
  157. package/deps/rocksdb/rocksdb/file/file_util.cc +3 -3
  158. package/deps/rocksdb/rocksdb/file/file_util.h +2 -0
  159. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +89 -0
  160. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +22 -7
  161. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +3 -2
  162. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +1 -1
  163. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +1 -1
  164. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +1 -1
  165. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +3 -0
  166. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +154 -74
  167. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +27 -7
  168. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +107 -28
  169. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -0
  170. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +8 -0
  171. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +2 -0
  172. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +7 -1
  173. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +137 -152
  174. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +61 -26
  175. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +30 -26
  176. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +33 -16
  177. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +87 -8
  178. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +1 -1
  179. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +5 -0
  180. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -0
  181. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +1 -0
  182. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -0
  183. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -1
  184. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  185. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +9 -2
  186. package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -0
  187. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +78 -42
  188. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +14 -9
  189. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +4 -9
  192. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +19 -11
  193. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +1 -1
  194. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +211 -555
  195. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +1 -1
  196. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +36 -2
  197. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +17 -7
  198. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +10 -7
  199. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +19 -18
  200. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +10 -2
  201. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +14 -0
  202. package/deps/rocksdb/rocksdb/options/cf_options.cc +35 -2
  203. package/deps/rocksdb/rocksdb/options/cf_options.h +5 -0
  204. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1 -1
  205. package/deps/rocksdb/rocksdb/options/options.cc +12 -53
  206. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -0
  207. package/deps/rocksdb/rocksdb/options/options_parser.cc +11 -0
  208. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +32 -4
  209. package/deps/rocksdb/rocksdb/options/options_test.cc +89 -5
  210. package/deps/rocksdb/rocksdb/port/lang.h +27 -0
  211. package/deps/rocksdb/rocksdb/port/stack_trace.cc +67 -24
  212. package/deps/rocksdb/rocksdb/src.mk +2 -0
  213. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -3
  214. package/deps/rocksdb/rocksdb/table/block_based/block.cc +195 -35
  215. package/deps/rocksdb/rocksdb/table/block_based/block.h +197 -24
  216. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +71 -51
  217. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -1
  218. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +4 -6
  219. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +3 -0
  220. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +43 -2
  221. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +36 -6
  222. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +266 -166
  223. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +44 -14
  224. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +1 -1
  225. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +63 -56
  226. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +8 -2
  227. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +4 -2
  228. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +10 -0
  229. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +14 -2
  230. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +918 -2
  231. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +3 -2
  232. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -9
  233. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +6 -8
  234. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +2 -2
  235. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +1 -1
  236. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +18 -23
  237. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +8 -8
  238. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +16 -32
  239. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +7 -8
  240. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +4 -5
  241. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +3 -3
  242. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +46 -53
  243. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +12 -12
  244. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +7 -9
  245. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +26 -23
  246. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +2 -1
  247. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +3 -0
  248. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -2
  249. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +3 -2
  250. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +7 -1
  251. package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
  252. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +2 -1
  253. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +3 -2
  254. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +5 -2
  255. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +4 -2
  256. package/deps/rocksdb/rocksdb/table/format.cc +4 -4
  257. package/deps/rocksdb/rocksdb/table/format.h +1 -1
  258. package/deps/rocksdb/rocksdb/table/get_context.cc +1 -1
  259. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +33 -22
  260. package/deps/rocksdb/rocksdb/table/meta_blocks.h +4 -0
  261. package/deps/rocksdb/rocksdb/table/mock_table.cc +4 -2
  262. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +1 -1
  264. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +18 -10
  265. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -3
  266. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +10 -7
  267. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +4 -2
  268. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +11 -0
  269. package/deps/rocksdb/rocksdb/table/table_builder.h +14 -5
  270. package/deps/rocksdb/rocksdb/table/table_properties.cc +2 -0
  271. package/deps/rocksdb/rocksdb/table/table_reader.h +6 -3
  272. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +1 -1
  273. package/deps/rocksdb/rocksdb/table/table_test.cc +291 -34
  274. package/deps/rocksdb/rocksdb/test_util/secondary_cache_test_util.h +3 -1
  275. package/deps/rocksdb/rocksdb/test_util/testharness.h +5 -0
  276. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -2
  277. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +33 -17
  278. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -1
  279. package/deps/rocksdb/rocksdb/util/bloom_impl.h +2 -2
  280. package/deps/rocksdb/rocksdb/util/compression.h +1 -1
  281. package/deps/rocksdb/rocksdb/util/crc32c.cc +24 -83
  282. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +7 -9
  283. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +4 -1
  284. package/deps/rocksdb/rocksdb/util/filter_bench.cc +1 -1
  285. package/deps/rocksdb/rocksdb/util/gflags_compat.h +9 -10
  286. package/deps/rocksdb/rocksdb/util/math.h +12 -7
  287. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +16 -18
  288. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +46 -2
  289. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +6 -6
  290. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +12 -7
  291. package/deps/rocksdb/rocksdb/util/stop_watch.h +31 -13
  292. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -0
  293. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  294. package/deps/rocksdb/rocksdb/util/udt_util.h +77 -0
  295. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +2 -2
  296. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -1
  297. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +1 -1
  298. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +1 -1
  299. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +1 -1
  300. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -1
  301. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +11 -1
  302. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +34 -1
  303. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +15 -0
  304. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +1 -1
  305. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +5 -1
  306. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +29 -1
  307. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +0 -1
  308. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +0 -1
  309. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +6 -1
  310. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +10 -0
  311. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +6 -1
  312. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +5 -0
  313. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +5 -0
  314. package/package.json +1 -1
  315. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  316. package/prebuilds/linux-x64/node.napi.node +0 -0
  317. /package/deps/rocksdb/rocksdb/memory/{memory_allocator.h → memory_allocator_impl.h} +0 -0
  318. /package/deps/rocksdb/rocksdb/monitoring/{statistics.h → statistics_impl.h} +0 -0
  319. /package/deps/rocksdb/rocksdb/table/block_based/{flush_block_policy.h → flush_block_policy_impl.h} +0 -0
  320. /package/deps/rocksdb/rocksdb/util/{rate_limiter.h → rate_limiter_impl.h} +0 -0
  321. /package/deps/rocksdb/rocksdb/utilities/agg_merge/{agg_merge.h → agg_merge_impl.h} +0 -0
@@ -101,7 +101,9 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
101
101
  {"compaction_style", "kCompactionStyleLevel"},
102
102
  {"compaction_pri", "kOldestSmallestSeqFirst"},
103
103
  {"verify_checksums_in_compaction", "false"},
104
- {"compaction_options_fifo", "23"},
104
+ {"compaction_options_fifo",
105
+ "{allow_compaction=true;max_table_files_size=11002244;"
106
+ "file_temperature_age_thresholds={{temperature=kCold;age=12345}}}"},
105
107
  {"max_sequential_skip_in_iterations", "24"},
106
108
  {"inplace_update_support", "true"},
107
109
  {"report_bg_io_stats", "true"},
@@ -128,6 +130,7 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
128
130
  {"blob_file_starting_level", "1"},
129
131
  {"prepopulate_blob_cache", "kDisable"},
130
132
  {"last_level_temperature", "kWarm"},
133
+ {"persist_user_defined_timestamps", "true"},
131
134
  };
132
135
 
133
136
  std::unordered_map<std::string, std::string> db_options_map = {
@@ -243,7 +246,18 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
243
246
  ASSERT_EQ(new_cf_opt.compaction_style, kCompactionStyleLevel);
244
247
  ASSERT_EQ(new_cf_opt.compaction_pri, kOldestSmallestSeqFirst);
245
248
  ASSERT_EQ(new_cf_opt.compaction_options_fifo.max_table_files_size,
246
- static_cast<uint64_t>(23));
249
+ static_cast<uint64_t>(11002244));
250
+ ASSERT_EQ(new_cf_opt.compaction_options_fifo.allow_compaction, true);
251
+ ASSERT_EQ(
252
+ new_cf_opt.compaction_options_fifo.file_temperature_age_thresholds.size(),
253
+ 1);
254
+ ASSERT_EQ(
255
+ new_cf_opt.compaction_options_fifo.file_temperature_age_thresholds[0]
256
+ .temperature,
257
+ Temperature::kCold);
258
+ ASSERT_EQ(
259
+ new_cf_opt.compaction_options_fifo.file_temperature_age_thresholds[0].age,
260
+ 12345);
247
261
  ASSERT_EQ(new_cf_opt.max_sequential_skip_in_iterations,
248
262
  static_cast<uint64_t>(24));
249
263
  ASSERT_EQ(new_cf_opt.inplace_update_support, true);
@@ -269,6 +283,7 @@ TEST_F(OptionsTest, GetOptionsFromMapTest) {
269
283
  ASSERT_EQ(new_cf_opt.prepopulate_blob_cache, PrepopulateBlobCache::kDisable);
270
284
  ASSERT_EQ(new_cf_opt.last_level_temperature, Temperature::kWarm);
271
285
  ASSERT_EQ(new_cf_opt.bottommost_temperature, Temperature::kWarm);
286
+ ASSERT_EQ(new_cf_opt.persist_user_defined_timestamps, true);
272
287
 
273
288
  cf_options_map["write_buffer_size"] = "hello";
274
289
  ASSERT_NOK(GetColumnFamilyOptionsFromMap(exact, base_cf_opt, cf_options_map,
@@ -2161,7 +2176,7 @@ TEST_F(OptionsTest, ConvertOptionsTest) {
2161
2176
  const auto table_opt = table_factory->GetOptions<BlockBasedTableOptions>();
2162
2177
  ASSERT_NE(table_opt, nullptr);
2163
2178
 
2164
- ASSERT_EQ(table_opt->block_cache->GetCapacity(), 8UL << 20);
2179
+ ASSERT_EQ(table_opt->block_cache->GetCapacity(), 32UL << 20);
2165
2180
  ASSERT_EQ(table_opt->block_size, leveldb_opt.block_size);
2166
2181
  ASSERT_EQ(table_opt->block_restart_interval,
2167
2182
  leveldb_opt.block_restart_interval);
@@ -2293,7 +2308,9 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2293
2308
  {"compaction_style", "kCompactionStyleLevel"},
2294
2309
  {"compaction_pri", "kOldestSmallestSeqFirst"},
2295
2310
  {"verify_checksums_in_compaction", "false"},
2296
- {"compaction_options_fifo", "23"},
2311
+ {"compaction_options_fifo",
2312
+ "{allow_compaction=true;max_table_files_size=11002244;"
2313
+ "file_temperature_age_thresholds={{temperature=kCold;age=12345}}}"},
2297
2314
  {"max_sequential_skip_in_iterations", "24"},
2298
2315
  {"inplace_update_support", "true"},
2299
2316
  {"report_bg_io_stats", "true"},
@@ -2320,6 +2337,7 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2320
2337
  {"blob_file_starting_level", "1"},
2321
2338
  {"prepopulate_blob_cache", "kDisable"},
2322
2339
  {"last_level_temperature", "kWarm"},
2340
+ {"persist_user_defined_timestamps", "true"},
2323
2341
  };
2324
2342
 
2325
2343
  std::unordered_map<std::string, std::string> db_options_map = {
@@ -2433,7 +2451,18 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2433
2451
  ASSERT_EQ(new_cf_opt.compaction_style, kCompactionStyleLevel);
2434
2452
  ASSERT_EQ(new_cf_opt.compaction_pri, kOldestSmallestSeqFirst);
2435
2453
  ASSERT_EQ(new_cf_opt.compaction_options_fifo.max_table_files_size,
2436
- static_cast<uint64_t>(23));
2454
+ static_cast<uint64_t>(11002244));
2455
+ ASSERT_EQ(new_cf_opt.compaction_options_fifo.allow_compaction, true);
2456
+ ASSERT_EQ(
2457
+ new_cf_opt.compaction_options_fifo.file_temperature_age_thresholds.size(),
2458
+ 1);
2459
+ ASSERT_EQ(
2460
+ new_cf_opt.compaction_options_fifo.file_temperature_age_thresholds[0]
2461
+ .temperature,
2462
+ Temperature::kCold);
2463
+ ASSERT_EQ(
2464
+ new_cf_opt.compaction_options_fifo.file_temperature_age_thresholds[0].age,
2465
+ 12345);
2437
2466
  ASSERT_EQ(new_cf_opt.max_sequential_skip_in_iterations,
2438
2467
  static_cast<uint64_t>(24));
2439
2468
  ASSERT_EQ(new_cf_opt.inplace_update_support, true);
@@ -2459,6 +2488,7 @@ TEST_F(OptionsOldApiTest, GetOptionsFromMapTest) {
2459
2488
  ASSERT_EQ(new_cf_opt.prepopulate_blob_cache, PrepopulateBlobCache::kDisable);
2460
2489
  ASSERT_EQ(new_cf_opt.last_level_temperature, Temperature::kWarm);
2461
2490
  ASSERT_EQ(new_cf_opt.bottommost_temperature, Temperature::kWarm);
2491
+ ASSERT_EQ(new_cf_opt.persist_user_defined_timestamps, true);
2462
2492
 
2463
2493
  cf_options_map["write_buffer_size"] = "hello";
2464
2494
  ASSERT_NOK(GetColumnFamilyOptionsFromMap(cf_config_options, base_cf_opt,
@@ -3923,6 +3953,36 @@ class OptionsSanityCheckTest : public OptionsParserTest,
3923
3953
  const std::string kOptionsFileName = "OPTIONS";
3924
3954
  };
3925
3955
 
3956
+ TEST_P(OptionsSanityCheckTest, MergeOperatorErrorMessage) {
3957
+ ColumnFamilyOptions opts;
3958
+ Random rnd(301);
3959
+ opts.merge_operator.reset(test::RandomMergeOperator(&rnd));
3960
+ std::string merge_op_name = opts.merge_operator->Name();
3961
+ ASSERT_OK(PersistCFOptions(opts));
3962
+
3963
+ // Test when going from merge operator -> nullptr
3964
+ opts.merge_operator = nullptr;
3965
+ Status s =
3966
+ SanityCheckCFOptions(opts, ConfigOptions::kSanityLevelLooselyCompatible);
3967
+ ASSERT_TRUE(s.IsInvalidArgument());
3968
+ std::string err_msg = s.ToString();
3969
+ std::string specified = "The specified one is " + kNullptrString;
3970
+ std::string persisted = "the persisted one is " + merge_op_name;
3971
+ ASSERT_TRUE(err_msg.find(specified) != std::string::npos);
3972
+ ASSERT_TRUE(err_msg.find(persisted) != std::string::npos);
3973
+
3974
+ // Test when using a different merge operator
3975
+ opts.merge_operator.reset(test::RandomMergeOperator(&rnd));
3976
+ s = SanityCheckCFOptions(opts, ConfigOptions::kSanityLevelLooselyCompatible);
3977
+ ASSERT_TRUE(s.IsInvalidArgument());
3978
+ err_msg = s.ToString();
3979
+ specified =
3980
+ "The specified one is " + std::string(opts.merge_operator->Name());
3981
+ persisted = "the persisted one is " + merge_op_name;
3982
+ ASSERT_TRUE(err_msg.find(specified) != std::string::npos);
3983
+ ASSERT_TRUE(err_msg.find(persisted) != std::string::npos);
3984
+ }
3985
+
3926
3986
  TEST_P(OptionsSanityCheckTest, CFOptionsSanityCheck) {
3927
3987
  ColumnFamilyOptions opts;
3928
3988
  Random rnd(301);
@@ -4068,6 +4128,30 @@ TEST_P(OptionsSanityCheckTest, CFOptionsSanityCheck) {
4068
4128
  SanityCheckCFOptions(opts, config_options_.ignore_unsupported_options);
4069
4129
  }
4070
4130
  }
4131
+
4132
+ // persist_user_defined_timestamps
4133
+ {
4134
+ // Test change from true to false not allowed in loose and exact mode.
4135
+ opts.persist_user_defined_timestamps = false;
4136
+ ASSERT_NOK(SanityCheckCFOptions(
4137
+ opts, ConfigOptions::kSanityLevelLooselyCompatible));
4138
+ ASSERT_NOK(
4139
+ SanityCheckCFOptions(opts, ConfigOptions::kSanityLevelExactMatch));
4140
+
4141
+ // persist the change
4142
+ ASSERT_OK(PersistCFOptions(opts));
4143
+ SanityCheckCFOptions(opts, config_options_.ignore_unsupported_options);
4144
+
4145
+ // Test change from false to true not allowed in loose and exact mode.
4146
+ opts.persist_user_defined_timestamps = true;
4147
+ ASSERT_NOK(SanityCheckCFOptions(
4148
+ opts, ConfigOptions::kSanityLevelLooselyCompatible));
4149
+ ASSERT_NOK(
4150
+ SanityCheckCFOptions(opts, ConfigOptions::kSanityLevelExactMatch));
4151
+
4152
+ // persist the change
4153
+ ASSERT_OK(PersistCFOptions(opts));
4154
+ }
4071
4155
  }
4072
4156
 
4073
4157
  TEST_P(OptionsSanityCheckTest, DBOptionsSanityCheck) {
@@ -68,3 +68,30 @@ constexpr bool kMustFreeHeapAllocations = false;
68
68
  #else
69
69
  #define TSAN_SUPPRESSION
70
70
  #endif // TSAN_SUPPRESSION
71
+
72
+ // Compile-time CPU feature testing compatibility
73
+ //
74
+ // A way to be extra sure these defines have been included.
75
+ #define ASSERT_FEATURE_COMPAT_HEADER() /* empty */
76
+
77
+ // MSVC doesn't support the same defines that gcc and clang provide
78
+ // but does some like __AVX__. Here we can infer some features from others.
79
+ #ifdef __AVX__
80
+ #define __SSE4_2__ 1
81
+ #define __PCLMUL__ 1
82
+ #endif // __AVX__
83
+
84
+ // A way to disable PCLMUL
85
+ #ifdef NO_PCLMUL
86
+ #undef __PCLMUL__
87
+ #endif
88
+
89
+ // popcnt is generally implied by SSE4.2
90
+ #if defined(__SSE4_2__)
91
+ #define __POPCNT__ 1
92
+ #endif
93
+
94
+ // A way to disable POPCNT
95
+ #ifdef NO_POPCNT
96
+ #undef __POPCNT__
97
+ #endif
@@ -128,6 +128,14 @@ void PrintStackTraceLine(const char* symbol, void* frame) {
128
128
 
129
129
  #endif
130
130
 
131
+ const char* GetLldbScriptSelectThread(long long tid) {
132
+ // NOTE: called from a signal handler, so no heap allocation
133
+ static char script[80];
134
+ snprintf(script, sizeof(script),
135
+ "script -l python -- lldb.process.SetSelectedThreadByID(%lld)", tid);
136
+ return script;
137
+ }
138
+
131
139
  } // namespace
132
140
 
133
141
  void PrintStack(void* frames[], int num_frames) {
@@ -152,9 +160,13 @@ void PrintStack(int first_frames_to_skip) {
152
160
  // * It doesn't appear easy to detect when ASLR is in use.
153
161
  // * With DEBUG_LEVEL < 2, backtrace() can skip frames that are not skipped
154
162
  // in GDB.
163
+ //
164
+ // LLDB also available as an option
165
+ bool lldb_stack_trace = getenv("ROCKSDB_LLDB_STACK") != nullptr;
155
166
  #if defined(OS_LINUX)
156
167
  // Default true, override with ROCKSDB_BACKTRACE_STACK=1
157
- bool gdb_stack_trace = getenv("ROCKSDB_BACKTRACE_STACK") == nullptr;
168
+ bool gdb_stack_trace =
169
+ !lldb_stack_trace && getenv("ROCKSDB_BACKTRACE_STACK") == nullptr;
158
170
  #else
159
171
  // Default false, override with ROCKSDB_GDB_STACK=1
160
172
  bool gdb_stack_trace = getenv("ROCKSDB_GDB_STACK") != nullptr;
@@ -164,53 +176,84 @@ void PrintStack(int first_frames_to_skip) {
164
176
  char* debug_env = getenv("ROCKSDB_DEBUG");
165
177
  bool debug = debug_env != nullptr && strlen(debug_env) > 0;
166
178
 
167
- if (gdb_stack_trace || debug) {
179
+ if (lldb_stack_trace || gdb_stack_trace || debug) {
168
180
  // Allow ouside debugger to attach, even with Yama security restrictions
169
181
  #ifdef PR_SET_PTRACER_ANY
170
182
  (void)prctl(PR_SET_PTRACER, PR_SET_PTRACER_ANY, 0, 0, 0);
171
183
  #endif
172
184
  // Try to invoke GDB, either for stack trace or debugging.
173
- long long attach_id = getpid();
185
+ long long attach_pid = getpid();
186
+ // NOTE: we're in a signal handler, so no heap allocation
187
+ char attach_pid_str[20];
188
+ snprintf(attach_pid_str, sizeof(attach_pid_str), "%lld", attach_pid);
174
189
 
175
190
  // `gdb -p PID` seems to always attach to main thread, but `gdb -p TID`
176
191
  // seems to be able to attach to a particular thread in a process, which
177
192
  // makes sense as the main thread TID == PID of the process.
178
193
  // But I haven't found that gdb capability documented anywhere, so leave
179
194
  // a back door to attach to main thread.
195
+ long long gdb_attach_id = attach_pid;
196
+ // Save current thread id before fork
197
+ long long attach_tid = 0;
180
198
  #ifdef OS_LINUX
199
+ attach_tid = gettid();
181
200
  if (getenv("ROCKSDB_DEBUG_USE_PID") == nullptr) {
182
- attach_id = gettid();
201
+ gdb_attach_id = attach_tid;
183
202
  }
184
203
  #endif
185
- char attach_id_str[20];
186
- snprintf(attach_id_str, sizeof(attach_id_str), "%lld", attach_id);
204
+
205
+ char gdb_attach_id_str[20];
206
+ snprintf(gdb_attach_id_str, sizeof(gdb_attach_id_str), "%lld",
207
+ gdb_attach_id);
208
+
187
209
  pid_t child_pid = fork();
188
210
  if (child_pid == 0) {
189
211
  // child process
190
212
  if (debug) {
191
- fprintf(stderr, "Invoking GDB for debugging (ROCKSDB_DEBUG=%s)...\n",
192
- debug_env);
193
- execlp(/*cmd in PATH*/ "gdb", /*arg0*/ "gdb", "-p", attach_id_str,
194
- (char*)nullptr);
195
- return;
213
+ if (strcmp(debug_env, "lldb") == 0) {
214
+ fprintf(stderr, "Invoking LLDB for debugging (ROCKSDB_DEBUG=%s)...\n",
215
+ debug_env);
216
+ execlp(/*cmd in PATH*/ "lldb", /*arg0*/ "lldb", "-p", attach_pid_str,
217
+ /*"-Q",*/ "-o", GetLldbScriptSelectThread(attach_tid),
218
+ (char*)nullptr);
219
+ return;
220
+ } else {
221
+ fprintf(stderr, "Invoking GDB for debugging (ROCKSDB_DEBUG=%s)...\n",
222
+ debug_env);
223
+ execlp(/*cmd in PATH*/ "gdb", /*arg0*/ "gdb", "-p", gdb_attach_id_str,
224
+ (char*)nullptr);
225
+ return;
226
+ }
196
227
  } else {
197
- fprintf(stderr, "Invoking GDB for stack trace...\n");
198
-
199
- // Skip top ~4 frames here in PrintStack
200
- // See https://stackoverflow.com/q/40991943/454544
201
- auto bt_in_gdb =
202
- "frame apply level 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 "
203
- "21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 "
204
- "42 43 44 -q frame";
205
228
  // Redirect child stdout to original stderr
206
229
  dup2(2, 1);
207
230
  // No child stdin (don't use pager)
208
231
  close(0);
209
- // -n : Loading config files can apparently cause failures with the
210
- // other options here.
211
- // -batch : non-interactive; suppress banners as much as possible
212
- execlp(/*cmd in PATH*/ "gdb", /*arg0*/ "gdb", "-n", "-batch", "-p",
213
- attach_id_str, "-ex", bt_in_gdb, (char*)nullptr);
232
+ if (lldb_stack_trace) {
233
+ fprintf(stderr, "Invoking LLDB for stack trace...\n");
234
+
235
+ // Skip top ~8 frames here in PrintStack
236
+ auto bt_in_lldb =
237
+ "script -l python -- for f in lldb.thread.frames[8:]: print(f)";
238
+ execlp(/*cmd in PATH*/ "lldb", /*arg0*/ "lldb", "-p", attach_pid_str,
239
+ "-b", "-Q", "-o", GetLldbScriptSelectThread(attach_tid), "-o",
240
+ bt_in_lldb, (char*)nullptr);
241
+ } else {
242
+ // gdb_stack_trace
243
+ fprintf(stderr, "Invoking GDB for stack trace...\n");
244
+
245
+ // Skip top ~4 frames here in PrintStack
246
+ // See https://stackoverflow.com/q/40991943/454544
247
+ auto bt_in_gdb =
248
+ "frame apply level 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 "
249
+ "21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 "
250
+ "42 43 44 -q frame";
251
+ // -n : Loading config files can apparently cause failures with the
252
+ // other options here.
253
+ // -batch : non-interactive; suppress banners as much as possible
254
+ execlp(/*cmd in PATH*/ "gdb", /*arg0*/ "gdb", "-n", "-batch", "-p",
255
+ gdb_attach_id_str, "-ex", bt_in_gdb, (char*)nullptr);
256
+ }
214
257
  return;
215
258
  }
216
259
  } else {
@@ -377,6 +377,7 @@ STRESS_LIB_SOURCES = \
377
377
  db_stress_tool/db_stress_test_base.cc \
378
378
  db_stress_tool/db_stress_tool.cc \
379
379
  db_stress_tool/expected_state.cc \
380
+ db_stress_tool/expected_value.cc \
380
381
  db_stress_tool/no_batched_ops_stress.cc \
381
382
  db_stress_tool/multi_ops_txns_stress.cc \
382
383
 
@@ -459,6 +460,7 @@ TEST_MAIN_SOURCES = \
459
460
  db/db_bloom_filter_test.cc \
460
461
  db/db_compaction_filter_test.cc \
461
462
  db/db_compaction_test.cc \
463
+ db/db_clip_test.cc \
462
464
  db/db_dynamic_level_test.cc \
463
465
  db/db_encryption_test.cc \
464
466
  db/db_flush_test.cc \
@@ -46,9 +46,8 @@ InternalIteratorBase<IndexValue>* BinarySearchIndexReader::NewIterator(
46
46
  const BlockBasedTable::Rep* rep = table()->get_rep();
47
47
  const bool no_io = (read_options.read_tier == kBlockCacheTier);
48
48
  CachableEntry<Block> index_block;
49
- const Status s =
50
- GetOrReadIndexBlock(no_io, read_options.rate_limiter_priority,
51
- get_context, lookup_context, &index_block);
49
+ const Status s = GetOrReadIndexBlock(no_io, get_context, lookup_context,
50
+ &index_block, read_options);
52
51
  if (!s.ok()) {
53
52
  if (iter != nullptr) {
54
53
  iter->Invalidate(s);