@nxtedition/rocksdb 7.1.20 → 7.1.21

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 (262) hide show
  1. package/deps/rocksdb/rocksdb/CMakeLists.txt +13 -6
  2. package/deps/rocksdb/rocksdb/Makefile +1 -1
  3. package/deps/rocksdb/rocksdb/TARGETS +2 -0
  4. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +1 -0
  5. package/deps/rocksdb/rocksdb/cache/cache_test.cc +4 -4
  6. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +139 -161
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.h +92 -82
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +16 -3
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +9 -3
  10. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +73 -30
  11. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +25 -67
  12. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +41 -40
  13. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +109 -155
  14. package/deps/rocksdb/rocksdb/cache/lru_cache.h +127 -149
  15. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +75 -80
  16. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +22 -172
  17. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +272 -85
  18. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +12 -4
  19. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +1 -0
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -0
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +1 -0
  24. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +1 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +1 -0
  26. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +13 -4
  27. package/deps/rocksdb/rocksdb/db/builder.cc +1 -1
  28. package/deps/rocksdb/rocksdb/db/column_family.cc +15 -1
  29. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +1 -0
  30. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +1 -0
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +25 -7
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +10 -0
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +22 -8
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +14 -5
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1 -0
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +38 -12
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +9 -6
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +408 -6
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +244 -54
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +27 -6
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +25 -30
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +87 -26
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -4
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +61 -0
  45. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +294 -21
  46. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -0
  47. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +1 -0
  48. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +28 -10
  49. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +4 -4
  50. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +272 -0
  51. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +38 -0
  52. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +69 -25
  53. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +7 -3
  54. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +29 -12
  55. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +0 -12
  56. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +10 -4
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +35 -22
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +5 -1
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +40 -5
  60. package/deps/rocksdb/rocksdb/db/db_iter.cc +1 -0
  61. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -0
  62. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +1 -0
  63. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +22 -0
  64. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +1 -0
  65. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +1 -0
  66. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +72 -5
  67. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +60 -21
  68. package/deps/rocksdb/rocksdb/db/db_test.cc +170 -1
  69. package/deps/rocksdb/rocksdb/db/db_test2.cc +9 -3
  70. package/deps/rocksdb/rocksdb/db/db_test_util.cc +19 -0
  71. package/deps/rocksdb/rocksdb/db/db_test_util.h +32 -0
  72. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +444 -3
  73. package/deps/rocksdb/rocksdb/db/db_write_test.cc +8 -8
  74. package/deps/rocksdb/rocksdb/db/dbformat.cc +13 -0
  75. package/deps/rocksdb/rocksdb/db/dbformat.h +59 -4
  76. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +1 -0
  77. package/deps/rocksdb/rocksdb/db/experimental.cc +3 -1
  78. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +24 -3
  79. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +1 -0
  80. package/deps/rocksdb/rocksdb/db/filename_test.cc +1 -0
  81. package/deps/rocksdb/rocksdb/db/flush_job.cc +4 -3
  82. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -0
  83. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +85 -43
  84. package/deps/rocksdb/rocksdb/db/forward_iterator.h +3 -1
  85. package/deps/rocksdb/rocksdb/db/internal_stats.cc +33 -6
  86. package/deps/rocksdb/rocksdb/db/internal_stats.h +6 -0
  87. package/deps/rocksdb/rocksdb/db/listener_test.cc +1 -0
  88. package/deps/rocksdb/rocksdb/db/log_test.cc +1 -0
  89. package/deps/rocksdb/rocksdb/db/log_writer.cc +1 -1
  90. package/deps/rocksdb/rocksdb/db/log_writer.h +1 -1
  91. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +1 -0
  92. package/deps/rocksdb/rocksdb/db/memtable.cc +158 -56
  93. package/deps/rocksdb/rocksdb/db/memtable.h +2 -0
  94. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +1 -0
  95. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +1 -0
  96. package/deps/rocksdb/rocksdb/db/options_file_test.cc +1 -0
  97. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +1 -0
  98. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +1 -0
  99. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1 -0
  100. package/deps/rocksdb/rocksdb/db/prefix_test.cc +1 -0
  101. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +52 -9
  102. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +31 -2
  103. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +1 -0
  104. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +81 -42
  105. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +78 -12
  106. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +1 -0
  107. package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -0
  108. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +154 -27
  109. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +21 -4
  110. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +4 -1
  111. package/deps/rocksdb/rocksdb/db/table_cache.cc +18 -6
  112. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -0
  113. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1 -0
  114. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +1 -0
  115. package/deps/rocksdb/rocksdb/db/version_set.cc +15 -7
  116. package/deps/rocksdb/rocksdb/db/version_set.h +2 -1
  117. package/deps/rocksdb/rocksdb/db/version_set_test.cc +1 -0
  118. package/deps/rocksdb/rocksdb/db/version_util.h +3 -1
  119. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -0
  120. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +28 -9
  121. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +21 -0
  122. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +30 -0
  123. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +4 -0
  124. package/deps/rocksdb/rocksdb/db/write_batch.cc +30 -7
  125. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +24 -13
  126. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +5 -4
  127. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +1 -0
  128. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +1 -0
  129. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +104 -60
  130. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +199 -108
  131. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +39 -0
  132. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +8 -0
  133. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -1
  134. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +19 -0
  135. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +26 -0
  136. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +247 -118
  137. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +24 -4
  138. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +18 -0
  139. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +129 -1
  140. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +22 -0
  141. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -0
  142. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +312 -117
  143. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +1 -0
  144. package/deps/rocksdb/rocksdb/env/fs_posix.cc +10 -2
  145. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +1 -0
  146. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +1 -0
  147. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +5 -1
  148. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +1 -0
  149. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1 -0
  150. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +1 -1
  151. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +49 -1
  152. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +44 -18
  153. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +8 -7
  154. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -1
  155. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +3 -0
  156. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -4
  157. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +4 -0
  158. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +7 -0
  159. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +1 -1
  160. package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +9 -0
  161. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +3 -6
  162. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -0
  163. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +1 -0
  164. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -0
  165. package/deps/rocksdb/rocksdb/memory/arena.cc +23 -88
  166. package/deps/rocksdb/rocksdb/memory/arena.h +25 -31
  167. package/deps/rocksdb/rocksdb/memory/arena_test.cc +61 -0
  168. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +1 -0
  169. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +1 -0
  170. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -0
  171. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +1 -0
  172. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +1 -0
  173. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +1 -0
  174. package/deps/rocksdb/rocksdb/options/cf_options.cc +19 -0
  175. package/deps/rocksdb/rocksdb/options/cf_options.h +8 -0
  176. package/deps/rocksdb/rocksdb/options/configurable_test.cc +1 -0
  177. package/deps/rocksdb/rocksdb/options/options.cc +7 -0
  178. package/deps/rocksdb/rocksdb/options/options_helper.cc +6 -0
  179. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +6 -0
  180. package/deps/rocksdb/rocksdb/options/options_test.cc +63 -40
  181. package/deps/rocksdb/rocksdb/port/mmap.cc +98 -0
  182. package/deps/rocksdb/rocksdb/port/mmap.h +70 -0
  183. package/deps/rocksdb/rocksdb/port/stack_trace.cc +7 -0
  184. package/deps/rocksdb/rocksdb/port/stack_trace.h +4 -1
  185. package/deps/rocksdb/rocksdb/port/win/port_win.h +2 -7
  186. package/deps/rocksdb/rocksdb/src.mk +1 -0
  187. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +7 -7
  188. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3 -3
  189. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +1 -0
  190. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +1 -0
  191. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +1 -0
  192. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -0
  193. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +1 -0
  194. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +1 -0
  195. package/deps/rocksdb/rocksdb/table/get_context.cc +19 -1
  196. package/deps/rocksdb/rocksdb/table/get_context.h +9 -0
  197. package/deps/rocksdb/rocksdb/table/merger_test.cc +1 -0
  198. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +10 -11
  199. package/deps/rocksdb/rocksdb/table/mock_table.cc +37 -19
  200. package/deps/rocksdb/rocksdb/table/mock_table.h +5 -1
  201. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +6 -0
  202. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +33 -0
  203. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +45 -6
  204. package/deps/rocksdb/rocksdb/test_util/testharness.h +2 -0
  205. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +1 -0
  206. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +5 -0
  207. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +1 -0
  208. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +1 -0
  209. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +36 -0
  210. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +1 -0
  211. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +1 -0
  212. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +1 -0
  213. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +1 -0
  214. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -0
  215. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1 -0
  216. package/deps/rocksdb/rocksdb/util/coding_test.cc +1 -0
  217. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +1 -0
  218. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +1 -0
  219. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -0
  220. package/deps/rocksdb/rocksdb/util/filelock_test.cc +1 -0
  221. package/deps/rocksdb/rocksdb/util/gflags_compat.h +12 -7
  222. package/deps/rocksdb/rocksdb/util/hash_test.cc +1 -0
  223. package/deps/rocksdb/rocksdb/util/heap_test.cc +4 -2
  224. package/deps/rocksdb/rocksdb/util/random_test.cc +1 -0
  225. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +1 -0
  226. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +1 -0
  227. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +1 -0
  228. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +1 -0
  229. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +1 -0
  230. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +1 -0
  231. package/deps/rocksdb/rocksdb/util/timer_test.cc +1 -0
  232. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +4 -0
  233. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +1 -0
  234. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +13 -0
  235. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -3
  236. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +1 -0
  237. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +1 -0
  238. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +1 -0
  239. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +1 -0
  240. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +1 -0
  241. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +1 -0
  242. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +1 -0
  243. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +8 -0
  244. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +1 -0
  245. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +1 -0
  246. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +1 -0
  247. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +1 -0
  248. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -0
  249. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +1 -0
  250. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -0
  251. package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +1 -0
  252. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1 -0
  253. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +1 -0
  254. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +1 -0
  255. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +1 -0
  256. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +1 -0
  257. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +7 -0
  258. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +20 -0
  259. package/index.js +12 -4
  260. package/package.json +1 -1
  261. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  262. package/prebuilds/linux-x64/node.napi.node +0 -0
@@ -176,6 +176,7 @@ TEST_F(MergerTest, SeekToLastTest) {
176
176
  } // namespace ROCKSDB_NAMESPACE
177
177
 
178
178
  int main(int argc, char** argv) {
179
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
179
180
  ::testing::InitGoogleTest(&argc, argv);
180
181
  return RUN_ALL_TESTS();
181
182
  }
@@ -697,6 +697,11 @@ void MergingIterator::SeekImpl(const Slice& target, size_t starting_level,
697
697
  // is not the same as the original target, it should not affect
698
698
  // correctness. Besides, in most cases, range tombstone start and
699
699
  // end key should have the same prefix?
700
+ // If range_tombstone_iter->end_key() is truncated to its largest_
701
+ // boundary, the timestamp in user_key will not be max timestamp,
702
+ // but the timestamp of `range_tombstone_iter.largest_`. This should
703
+ // be fine here as current_search_key is used to Seek into lower
704
+ // levels.
700
705
  current_search_key.SetInternalKey(
701
706
  range_tombstone_iter->end_key().user_key, kMaxSequenceNumber);
702
707
  }
@@ -919,7 +924,6 @@ void MergingIterator::SeekForPrevImpl(const Slice& target,
919
924
  current_search_key.GetUserKey(),
920
925
  range_tombstone_iter->end_key().user_key) < 0) {
921
926
  range_tombstone_reseek = true;
922
- // covered by this range tombstone
923
927
  current_search_key.SetInternalKey(
924
928
  range_tombstone_iter->start_key().user_key, kMaxSequenceNumber,
925
929
  kValueTypeForSeekForPrev);
@@ -988,10 +992,6 @@ bool MergingIterator::SkipPrevDeleted() {
988
992
  return true /* current key deleted */;
989
993
  }
990
994
  if (current->iter.IsDeleteRangeSentinelKey()) {
991
- // Different from SkipNextDeleted(): range tombstone start key is before
992
- // file boundary due to op_type set in SetTombstoneKey().
993
- assert(ExtractValueType(current->iter.key()) != kTypeRangeDeletion ||
994
- active_.count(current->level));
995
995
  // LevelIterator enters a new SST file
996
996
  current->iter.Prev();
997
997
  if (current->iter.Valid()) {
@@ -1025,12 +1025,11 @@ bool MergingIterator::SkipPrevDeleted() {
1025
1025
  std::string target;
1026
1026
  AppendInternalKey(&target, range_tombstone_iters_[i]->start_key());
1027
1027
  // This is different from SkipNextDeleted() which does reseek at sorted
1028
- // runs
1029
- // >= level (instead of i+1 here). With min heap, if level L is at top of
1030
- // the heap, then levels <L all have internal keys > level L's current
1031
- // internal key, which means levels <L are already at a different user
1032
- // key. With max heap, if level L is at top of the heap, then levels <L
1033
- // all have internal keys smaller than level L's current internal key,
1028
+ // runs >= level (instead of i+1 here). With min heap, if level L is at
1029
+ // top of the heap, then levels <L all have internal keys > level L's
1030
+ // current internal key, which means levels <L are already at a different
1031
+ // user key. With max heap, if level L is at top of the heap, then levels
1032
+ // <L all have internal keys smaller than level L's current internal key,
1034
1033
  // which might still be the same user key.
1035
1034
  SeekForPrevImpl(target, i + 1, true);
1036
1035
  return true /* current key deleted */;
@@ -122,8 +122,12 @@ class MockTableBuilder : public TableBuilder {
122
122
  public:
123
123
  MockTableBuilder(uint32_t id, MockTableFileSystem* file_system,
124
124
  MockTableFactory::MockCorruptionMode corrupt_mode =
125
- MockTableFactory::kCorruptNone)
126
- : id_(id), file_system_(file_system), corrupt_mode_(corrupt_mode) {
125
+ MockTableFactory::kCorruptNone,
126
+ size_t key_value_size = 1)
127
+ : id_(id),
128
+ file_system_(file_system),
129
+ corrupt_mode_(corrupt_mode),
130
+ key_value_size_(key_value_size) {
127
131
  table_ = MakeMockFile({});
128
132
  }
129
133
 
@@ -171,7 +175,7 @@ class MockTableBuilder : public TableBuilder {
171
175
 
172
176
  uint64_t NumEntries() const override { return table_.size(); }
173
177
 
174
- uint64_t FileSize() const override { return table_.size(); }
178
+ uint64_t FileSize() const override { return table_.size() * key_value_size_; }
175
179
 
176
180
  TableProperties GetTableProperties() const override {
177
181
  return TableProperties();
@@ -191,6 +195,7 @@ class MockTableBuilder : public TableBuilder {
191
195
  MockTableFileSystem* file_system_;
192
196
  int corrupt_mode_;
193
197
  KVVector table_;
198
+ size_t key_value_size_;
194
199
  };
195
200
 
196
201
  InternalIterator* MockTableReader::NewIterator(
@@ -260,7 +265,8 @@ TableBuilder* MockTableFactory::NewTableBuilder(
260
265
  Status s = GetAndWriteNextID(file, &id);
261
266
  assert(s.ok());
262
267
 
263
- return new MockTableBuilder(id, &file_system_, corrupt_mode_);
268
+ return new MockTableBuilder(id, &file_system_, corrupt_mode_,
269
+ key_value_size_);
264
270
  }
265
271
 
266
272
  Status MockTableFactory::CreateMockTable(Env* env, const std::string& fname,
@@ -303,22 +309,34 @@ void MockTableFactory::AssertSingleFile(const KVVector& file_contents) {
303
309
  ASSERT_EQ(file_contents, file_system_.files.begin()->second);
304
310
  }
305
311
 
306
- void MockTableFactory::AssertLatestFile(const KVVector& file_contents) {
307
- ASSERT_GE(file_system_.files.size(), 1U);
308
- auto latest = file_system_.files.end();
309
- --latest;
310
-
311
- if (file_contents != latest->second) {
312
- std::cout << "Wrong content! Content of latest file:" << std::endl;
313
- for (const auto& kv : latest->second) {
314
- ParsedInternalKey ikey;
315
- std::string key, value;
316
- std::tie(key, value) = kv;
317
- ASSERT_OK(ParseInternalKey(Slice(key), &ikey, true /* log_err_key */));
318
- std::cout << ikey.DebugString(true, false) << " -> " << value
319
- << std::endl;
312
+ void MockTableFactory::AssertLatestFiles(
313
+ const std::vector<KVVector>& files_contents) {
314
+ ASSERT_GE(file_system_.files.size(), files_contents.size());
315
+ auto it = file_system_.files.rbegin();
316
+ for (auto expect = files_contents.rbegin(); expect != files_contents.rend();
317
+ expect++, it++) {
318
+ ASSERT_TRUE(it != file_system_.files.rend());
319
+ if (*expect != it->second) {
320
+ std::cout << "Wrong content! Content of file, expect:" << std::endl;
321
+ for (const auto& kv : *expect) {
322
+ ParsedInternalKey ikey;
323
+ std::string key, value;
324
+ std::tie(key, value) = kv;
325
+ ASSERT_OK(ParseInternalKey(Slice(key), &ikey, true /* log_err_key */));
326
+ std::cout << ikey.DebugString(true, false) << " -> " << value
327
+ << std::endl;
328
+ }
329
+ std::cout << "actual:" << std::endl;
330
+ for (const auto& kv : it->second) {
331
+ ParsedInternalKey ikey;
332
+ std::string key, value;
333
+ std::tie(key, value) = kv;
334
+ ASSERT_OK(ParseInternalKey(Slice(key), &ikey, true /* log_err_key */));
335
+ std::cout << ikey.DebugString(true, false) << " -> " << value
336
+ << std::endl;
337
+ }
338
+ FAIL();
320
339
  }
321
- FAIL();
322
340
  }
323
341
  }
324
342
 
@@ -72,10 +72,12 @@ class MockTableFactory : public TableFactory {
72
72
  }
73
73
 
74
74
  void SetCorruptionMode(MockCorruptionMode mode) { corrupt_mode_ = mode; }
75
+
76
+ void SetKeyValueSize(size_t size) { key_value_size_ = size; }
75
77
  // This function will assert that only a single file exists and that the
76
78
  // contents are equal to file_contents
77
79
  void AssertSingleFile(const KVVector& file_contents);
78
- void AssertLatestFile(const KVVector& file_contents);
80
+ void AssertLatestFiles(const std::vector<KVVector>& files_contents);
79
81
 
80
82
  private:
81
83
  Status GetAndWriteNextID(WritableFileWriter* file, uint32_t* id) const;
@@ -84,6 +86,8 @@ class MockTableFactory : public TableFactory {
84
86
  mutable MockTableFileSystem file_system_;
85
87
  mutable std::atomic<uint32_t> next_id_;
86
88
  MockCorruptionMode corrupt_mode_;
89
+
90
+ size_t key_value_size_ = 1;
87
91
  };
88
92
 
89
93
  } // namespace mock
@@ -86,6 +86,12 @@ Iterator* SstFileReader::NewIterator(const ReadOptions& roptions) {
86
86
  return res;
87
87
  }
88
88
 
89
+ FragmentedRangeTombstoneIterator* SstFileReader::NewRangeTombstoneIterator(
90
+ const ReadOptions& options) {
91
+ auto r = rep_.get();
92
+ return r->table_reader->NewRangeTombstoneIterator(options);
93
+ }
94
+
89
95
  std::shared_ptr<const TableProperties> SstFileReader::GetTableProperties()
90
96
  const {
91
97
  return rep_->table_reader->GetTableProperties();
@@ -385,6 +385,39 @@ TEST_F(SstFileReaderTimestampTest, Basic) {
385
385
  }
386
386
  }
387
387
 
388
+ TEST_F(SstFileReaderTimestampTest, BasicDeleteRange) {
389
+ SstFileWriter writer(soptions_, options_);
390
+ ASSERT_OK(writer.Open(sst_name_));
391
+ ASSERT_OK(writer.DeleteRange("key1", "key2", EncodeAsUint64(1)));
392
+ ASSERT_OK(writer.Finish());
393
+
394
+ SstFileReader reader(options_);
395
+ ASSERT_OK(reader.Open(sst_name_));
396
+ ASSERT_OK(reader.VerifyChecksum());
397
+
398
+ ReadOptions read_options;
399
+ std::string ts = EncodeAsUint64(2);
400
+ Slice ts_slice = ts;
401
+ read_options.timestamp = &ts_slice;
402
+ FragmentedRangeTombstoneIterator* iter =
403
+ reader.NewRangeTombstoneIterator(read_options);
404
+ iter->SeekToFirst();
405
+ ASSERT_TRUE(iter->Valid());
406
+ ASSERT_OK(iter->status());
407
+ ASSERT_EQ(
408
+ StripTimestampFromUserKey(iter->start_key(), EncodeAsUint64(1).size()),
409
+ "key1");
410
+ ASSERT_EQ(
411
+ StripTimestampFromUserKey(iter->end_key(), EncodeAsUint64(1).size()),
412
+ "key2");
413
+ ASSERT_EQ(iter->timestamp(), EncodeAsUint64(1));
414
+ iter->Next();
415
+ ASSERT_FALSE(iter->Valid());
416
+ ASSERT_OK(iter->status());
417
+
418
+ delete iter;
419
+ }
420
+
388
421
  TEST_F(SstFileReaderTimestampTest, TimestampsOutOfOrder) {
389
422
  SstFileWriter writer(soptions_, options_);
390
423
 
@@ -131,15 +131,10 @@ struct SstFileWriter::Rep {
131
131
  return AddImpl(user_key_with_ts, value, value_type);
132
132
  }
133
133
 
134
- Status DeleteRange(const Slice& begin_key, const Slice& end_key) {
135
- if (internal_comparator.user_comparator()->timestamp_size() != 0) {
136
- return Status::InvalidArgument("Timestamp size mismatch");
137
- }
138
-
134
+ Status DeleteRangeImpl(const Slice& begin_key, const Slice& end_key) {
139
135
  if (!builder) {
140
136
  return Status::InvalidArgument("File is not opened");
141
137
  }
142
-
143
138
  RangeTombstone tombstone(begin_key, end_key, 0 /* Sequence Number */);
144
139
  if (file_info.num_range_del_entries == 0) {
145
140
  file_info.smallest_range_del_key.assign(tombstone.start_key_.data(),
@@ -170,6 +165,45 @@ struct SstFileWriter::Rep {
170
165
  return Status::OK();
171
166
  }
172
167
 
168
+ Status DeleteRange(const Slice& begin_key, const Slice& end_key) {
169
+ if (internal_comparator.user_comparator()->timestamp_size() != 0) {
170
+ return Status::InvalidArgument("Timestamp size mismatch");
171
+ }
172
+ return DeleteRangeImpl(begin_key, end_key);
173
+ }
174
+
175
+ // begin_key and end_key should be users keys without timestamp.
176
+ Status DeleteRange(const Slice& begin_key, const Slice& end_key,
177
+ const Slice& timestamp) {
178
+ const size_t timestamp_size = timestamp.size();
179
+
180
+ if (internal_comparator.user_comparator()->timestamp_size() !=
181
+ timestamp_size) {
182
+ return Status::InvalidArgument("Timestamp size mismatch");
183
+ }
184
+
185
+ const size_t begin_key_size = begin_key.size();
186
+ const size_t end_key_size = end_key.size();
187
+ if (begin_key.data() + begin_key_size == timestamp.data() ||
188
+ end_key.data() + begin_key_size == timestamp.data()) {
189
+ assert(memcmp(begin_key.data() + begin_key_size,
190
+ end_key.data() + end_key_size, timestamp_size) == 0);
191
+ Slice begin_key_with_ts(begin_key.data(),
192
+ begin_key_size + timestamp_size);
193
+ Slice end_key_with_ts(end_key.data(), end_key.size() + timestamp_size);
194
+ return DeleteRangeImpl(begin_key_with_ts, end_key_with_ts);
195
+ }
196
+ std::string begin_key_with_ts;
197
+ begin_key_with_ts.reserve(begin_key_size + timestamp_size);
198
+ begin_key_with_ts.append(begin_key.data(), begin_key_size);
199
+ begin_key_with_ts.append(timestamp.data(), timestamp_size);
200
+ std::string end_key_with_ts;
201
+ end_key_with_ts.reserve(end_key_size + timestamp_size);
202
+ end_key_with_ts.append(end_key.data(), end_key_size);
203
+ end_key_with_ts.append(timestamp.data(), timestamp_size);
204
+ return DeleteRangeImpl(begin_key_with_ts, end_key_with_ts);
205
+ }
206
+
173
207
  Status InvalidatePageCache(bool closing) {
174
208
  Status s = Status::OK();
175
209
  if (invalidate_page_cache == false) {
@@ -346,6 +380,11 @@ Status SstFileWriter::DeleteRange(const Slice& begin_key,
346
380
  return rep_->DeleteRange(begin_key, end_key);
347
381
  }
348
382
 
383
+ Status SstFileWriter::DeleteRange(const Slice& begin_key, const Slice& end_key,
384
+ const Slice& timestamp) {
385
+ return rep_->DeleteRange(begin_key, end_key, timestamp);
386
+ }
387
+
349
388
  Status SstFileWriter::Finish(ExternalSstFileInfo* file_info) {
350
389
  Rep* r = rep_.get();
351
390
  if (!r->builder) {
@@ -52,6 +52,8 @@
52
52
  } while (false) /* user ; */
53
53
 
54
54
  #include <string>
55
+
56
+ #include "port/stack_trace.h"
55
57
  #include "rocksdb/env.h"
56
58
 
57
59
  namespace ROCKSDB_NAMESPACE {
@@ -711,6 +711,7 @@ TEST_F(BlockCacheTracerTest, MixedBlocks) {
711
711
  } // namespace ROCKSDB_NAMESPACE
712
712
 
713
713
  int main(int argc, char** argv) {
714
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
714
715
  ::testing::InitGoogleTest(&argc, argv);
715
716
  return RUN_ALL_TESTS();
716
717
  }
@@ -1353,6 +1353,9 @@ DEFINE_int64(
1353
1353
  preclude_last_level_data_seconds, 0,
1354
1354
  "Preclude the latest data from the last level. (Used for tiered storage)");
1355
1355
 
1356
+ DEFINE_int64(preserve_internal_time_seconds, 0,
1357
+ "Preserve the internal time information which stores with SST.");
1358
+
1356
1359
  static std::shared_ptr<ROCKSDB_NAMESPACE::Env> env_guard;
1357
1360
 
1358
1361
  static ROCKSDB_NAMESPACE::Env* FLAGS_env = ROCKSDB_NAMESPACE::Env::Default();
@@ -4530,6 +4533,8 @@ class Benchmark {
4530
4533
  }
4531
4534
  options.preclude_last_level_data_seconds =
4532
4535
  FLAGS_preclude_last_level_data_seconds;
4536
+ options.preserve_internal_time_seconds =
4537
+ FLAGS_preserve_internal_time_seconds;
4533
4538
  options.sample_for_compression = FLAGS_sample_for_compression;
4534
4539
  options.WAL_ttl_seconds = FLAGS_wal_ttl_seconds;
4535
4540
  options.WAL_size_limit_MB = FLAGS_wal_size_limit_MB;
@@ -320,6 +320,7 @@ TEST_F(DBBenchTest, OptionsFileFromFile) {
320
320
  } // namespace ROCKSDB_NAMESPACE
321
321
 
322
322
  int main(int argc, char** argv) {
323
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
323
324
  ::testing::InitGoogleTest(&argc, argv);
324
325
  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
325
326
  return RUN_ALL_TESTS();
@@ -176,6 +176,7 @@ TEST_F(IOTracerParserTest, NoRecordingBeforeStartIOTrace) {
176
176
  } // namespace ROCKSDB_NAMESPACE
177
177
 
178
178
  int main(int argc, char** argv) {
179
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
179
180
  ::testing::InitGoogleTest(&argc, argv);
180
181
  return RUN_ALL_TESTS();
181
182
  }
@@ -1024,6 +1024,42 @@ TEST_F(LdbCmdTest, UnsafeRemoveSstFile) {
1024
1024
  ASSERT_OK(db->Get(ReadOptions(), handles[0], "0", &val));
1025
1025
  ASSERT_EQ(val, "0");
1026
1026
 
1027
+ // Determine which is the "first" one (most likely to be opened in recovery)
1028
+ sst_files.clear();
1029
+ db->GetLiveFilesMetaData(&sst_files);
1030
+
1031
+ numbers.clear();
1032
+ for (auto& f : sst_files) {
1033
+ numbers.push_back(f.file_number);
1034
+ }
1035
+ ASSERT_EQ(numbers.size(), 3);
1036
+ std::sort(numbers.begin(), numbers.end());
1037
+ to_remove = numbers.front();
1038
+
1039
+ // This time physically delete the file before unsafe_remove
1040
+ {
1041
+ std::string f = dbname + "/" + MakeTableFileName(to_remove);
1042
+ ASSERT_OK(Env::Default()->DeleteFile(f));
1043
+ }
1044
+
1045
+ // Close for unsafe_remove_sst_file
1046
+ for (auto& h : handles) {
1047
+ delete h;
1048
+ }
1049
+ delete db;
1050
+ db = nullptr;
1051
+
1052
+ snprintf(arg4, sizeof(arg4), "%" PRIu64, to_remove);
1053
+ ASSERT_EQ(0,
1054
+ LDBCommandRunner::RunCommand(4, argv, opts, LDBOptions(), nullptr));
1055
+
1056
+ ASSERT_OK(DB::Open(opts, dbname, cfds, &handles, &db));
1057
+
1058
+ ASSERT_OK(db->Get(ReadOptions(), handles[1], "3", &val));
1059
+ ASSERT_EQ(val, "3");
1060
+
1061
+ ASSERT_TRUE(db->Get(ReadOptions(), handles[0], "0", &val).IsNotFound());
1062
+
1027
1063
  for (auto& h : handles) {
1028
1064
  delete h;
1029
1065
  }
@@ -206,6 +206,7 @@ TEST_F(ReduceLevelTest, All_Levels) {
206
206
  } // namespace ROCKSDB_NAMESPACE
207
207
 
208
208
  int main(int argc, char** argv) {
209
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
209
210
  ::testing::InitGoogleTest(&argc, argv);
210
211
  return RUN_ALL_TESTS();
211
212
  }
@@ -874,6 +874,7 @@ TEST_F(TraceAnalyzerTest, MultiGet) {
874
874
  } // namespace ROCKSDB_NAMESPACE
875
875
 
876
876
  int main(int argc, char** argv) {
877
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
877
878
  ::testing::InitGoogleTest(&argc, argv);
878
879
  return RUN_ALL_TESTS();
879
880
  }
@@ -379,6 +379,7 @@ TEST_F(BlockCacheTracerTest, HumanReadableTrace) {
379
379
  } // namespace ROCKSDB_NAMESPACE
380
380
 
381
381
  int main(int argc, char** argv) {
382
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
382
383
  ::testing::InitGoogleTest(&argc, argv);
383
384
  return RUN_ALL_TESTS();
384
385
  }
@@ -347,6 +347,7 @@ TEST_F(IOTracerTest, AtomicMultipleWrites) {
347
347
  } // namespace ROCKSDB_NAMESPACE
348
348
 
349
349
  int main(int argc, char** argv) {
350
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
350
351
  ::testing::InitGoogleTest(&argc, argv);
351
352
  return RUN_ALL_TESTS();
352
353
  }
@@ -325,6 +325,7 @@ TEST_F(AutoVectorTest, PerfBench) {
325
325
  } // namespace ROCKSDB_NAMESPACE
326
326
 
327
327
  int main(int argc, char** argv) {
328
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
328
329
  ::testing::InitGoogleTest(&argc, argv);
329
330
  return RUN_ALL_TESTS();
330
331
  }
@@ -1169,6 +1169,7 @@ TEST(RibbonTest, RibbonTestLevelThreshold) {
1169
1169
  } // namespace ROCKSDB_NAMESPACE
1170
1170
 
1171
1171
  int main(int argc, char** argv) {
1172
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
1172
1173
  ::testing::InitGoogleTest(&argc, argv);
1173
1174
  ParseCommandLineFlags(&argc, &argv, true);
1174
1175
 
@@ -212,6 +212,7 @@ TEST(Coding, Strings) {
212
212
  } // namespace ROCKSDB_NAMESPACE
213
213
 
214
214
  int main(int argc, char** argv) {
215
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
215
216
  ::testing::InitGoogleTest(&argc, argv);
216
217
  return RUN_ALL_TESTS();
217
218
  }
@@ -204,6 +204,7 @@ inline uint64_t fnv64_buf(const void* buf,
204
204
  }
205
205
 
206
206
  int main(int argc, char** argv) {
207
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
207
208
  ::testing::InitGoogleTest(&argc, argv);
208
209
 
209
210
  // Populate a buffer with a deterministic pattern
@@ -315,6 +315,7 @@ TEST_F(DynamicBloomTest, concurrent_with_perf) {
315
315
  } // namespace ROCKSDB_NAMESPACE
316
316
 
317
317
  int main(int argc, char** argv) {
318
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
318
319
  ::testing::InitGoogleTest(&argc, argv);
319
320
  ParseCommandLineFlags(&argc, &argv, true);
320
321
 
@@ -1060,6 +1060,7 @@ TEST_F(WritableFileWriterIOPriorityTest, BasicOp) {
1060
1060
  } // namespace ROCKSDB_NAMESPACE
1061
1061
 
1062
1062
  int main(int argc, char** argv) {
1063
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
1063
1064
  ::testing::InitGoogleTest(&argc, argv);
1064
1065
  return RUN_ALL_TESTS();
1065
1066
  }
@@ -147,6 +147,7 @@ TEST_F(LockTest, LockBySameThread) {
147
147
  } // namespace ROCKSDB_NAMESPACE
148
148
 
149
149
  int main(int argc, char** argv) {
150
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
150
151
  ::testing::InitGoogleTest(&argc, argv);
151
152
  return RUN_ALL_TESTS();
152
153
  }
@@ -6,6 +6,8 @@
6
6
  #pragma once
7
7
  #include <gflags/gflags.h>
8
8
 
9
+ #include <functional>
10
+
9
11
  #ifndef GFLAGS_NAMESPACE
10
12
  // in case it's not defined in old versions, that's probably because it was
11
13
  // still google by default.
@@ -16,10 +18,13 @@
16
18
  // DEFINE_uint32 does not appear in older versions of gflags. This should be
17
19
  // a sane definition for those versions.
18
20
  #include <cstdint>
19
- #define DEFINE_uint32(name, val, txt) \
20
- namespace gflags_compat { \
21
- DEFINE_int32(name, val, txt); \
22
- } \
23
- uint32_t &FLAGS_##name = \
24
- *reinterpret_cast<uint32_t *>(&gflags_compat::FLAGS_##name);
25
- #endif
21
+ #define DEFINE_uint32(name, val, txt) \
22
+ namespace gflags_compat { \
23
+ DEFINE_int32(name, val, txt); \
24
+ } \
25
+ std::reference_wrapper<uint32_t> FLAGS_##name = \
26
+ std::ref(*reinterpret_cast<uint32_t *>(&gflags_compat::FLAGS_##name));
27
+
28
+ #define DECLARE_uint32(name) \
29
+ extern std::reference_wrapper<uint32_t> FLAGS_##name;
30
+ #endif // !DEFINE_uint32
@@ -846,6 +846,7 @@ TEST(MathTest, CodingGeneric) {
846
846
  int main(int argc, char** argv) {
847
847
  fprintf(stderr, "NPHash64 id: %x\n",
848
848
  static_cast<int>(ROCKSDB_NAMESPACE::GetSliceNPHash64("RocksDB")));
849
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
849
850
  ::testing::InitGoogleTest(&argc, argv);
850
851
 
851
852
  return RUN_ALL_TESTS();
@@ -3,15 +3,16 @@
3
3
  // COPYING file in the root directory) and Apache 2.0 License
4
4
  // (found in the LICENSE.Apache file in the root directory).
5
5
 
6
+ #include "util/heap.h"
7
+
6
8
  #include <gtest/gtest.h>
7
9
 
8
10
  #include <climits>
9
-
10
11
  #include <queue>
11
12
  #include <random>
12
13
  #include <utility>
13
14
 
14
- #include "util/heap.h"
15
+ #include "port/stack_trace.h"
15
16
 
16
17
  #ifndef GFLAGS
17
18
  const int64_t FLAGS_iters = 100000;
@@ -131,6 +132,7 @@ INSTANTIATE_TEST_CASE_P(
131
132
  } // namespace ROCKSDB_NAMESPACE
132
133
 
133
134
  int main(int argc, char** argv) {
135
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
134
136
  ::testing::InitGoogleTest(&argc, argv);
135
137
  #ifdef GFLAGS
136
138
  GFLAGS_NAMESPACE::ParseCommandLineFlags(&argc, &argv, true);
@@ -99,6 +99,7 @@ TEST(RandomTest, PercentTrue) {
99
99
  }
100
100
 
101
101
  int main(int argc, char** argv) {
102
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
102
103
  ::testing::InitGoogleTest(&argc, argv);
103
104
 
104
105
  return RUN_ALL_TESTS();
@@ -470,6 +470,7 @@ TEST_F(RateLimiterTest, AutoTuneIncreaseWhenFull) {
470
470
  } // namespace ROCKSDB_NAMESPACE
471
471
 
472
472
  int main(int argc, char** argv) {
473
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
473
474
  ::testing::InitGoogleTest(&argc, argv);
474
475
  return RUN_ALL_TESTS();
475
476
  }
@@ -104,6 +104,7 @@ TEST_F(RepeatableThreadTest, MockEnvTest) {
104
104
  }
105
105
 
106
106
  int main(int argc, char** argv) {
107
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
107
108
  ::testing::InitGoogleTest(&argc, argv);
108
109
 
109
110
  return RUN_ALL_TESTS();
@@ -1298,6 +1298,7 @@ TYPED_TEST(RibbonTypeParamTest, OptimizeHomogAtScale) {
1298
1298
  }
1299
1299
 
1300
1300
  int main(int argc, char** argv) {
1301
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
1301
1302
  ::testing::InitGoogleTest(&argc, argv);
1302
1303
  #ifdef GFLAGS
1303
1304
  ParseCommandLineFlags(&argc, &argv, true);
@@ -148,6 +148,7 @@ TEST_F(SliceTransformDBTest, CapPrefix) {
148
148
  } // namespace ROCKSDB_NAMESPACE
149
149
 
150
150
  int main(int argc, char** argv) {
151
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
151
152
  ::testing::InitGoogleTest(&argc, argv);
152
153
  return RUN_ALL_TESTS();
153
154
  }
@@ -357,6 +357,7 @@ TEST_F(ThreadListTest, SimpleEventTest) {
357
357
  } // namespace ROCKSDB_NAMESPACE
358
358
 
359
359
  int main(int argc, char** argv) {
360
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
360
361
  ::testing::InitGoogleTest(&argc, argv);
361
362
  return RUN_ALL_TESTS();
362
363
  }
@@ -576,6 +576,7 @@ TEST_F(ThreadLocalTest, DISABLED_MainThreadDiesFirst) {
576
576
  } // namespace ROCKSDB_NAMESPACE
577
577
 
578
578
  int main(int argc, char** argv) {
579
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
579
580
  ::testing::InitGoogleTest(&argc, argv);
580
581
  return RUN_ALL_TESTS();
581
582
  }
@@ -395,6 +395,7 @@ TEST_F(TimerTest, DestroyTimerWithRunningFunc) {
395
395
  } // namespace ROCKSDB_NAMESPACE
396
396
 
397
397
  int main(int argc, char** argv) {
398
+ ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
398
399
  ::testing::InitGoogleTest(&argc, argv);
399
400
 
400
401
  return RUN_ALL_TESTS();