@nxtedition/rocksdb 15.4.1 → 16.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 (401) hide show
  1. package/binding.cc +70 -23
  2. package/deps/rocksdb/rocksdb/.clang-tidy +86 -0
  3. package/deps/rocksdb/rocksdb/BUCK +42 -0
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +11 -0
  5. package/deps/rocksdb/rocksdb/Makefile +59 -32
  6. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -5
  7. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +9 -9
  8. package/deps/rocksdb/rocksdb/cache/cache_key.cc +3 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_key.h +5 -5
  10. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +16 -16
  11. package/deps/rocksdb/rocksdb/cache/cache_test.cc +1 -1
  12. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +258 -294
  13. package/deps/rocksdb/rocksdb/cache/clock_cache.h +98 -49
  14. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -5
  15. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +2 -3
  16. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +18 -18
  17. package/deps/rocksdb/rocksdb/crash_test.mk +5 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -22
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +6 -1
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +14 -16
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +38 -26
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +5 -1
  23. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +101 -18
  24. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +12 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +6 -9
  26. package/deps/rocksdb/rocksdb/db/builder.cc +23 -0
  27. package/deps/rocksdb/rocksdb/db/builder.h +7 -0
  28. package/deps/rocksdb/rocksdb/db/c.cc +373 -57
  29. package/deps/rocksdb/rocksdb/db/c_test.c +101 -1
  30. package/deps/rocksdb/rocksdb/db/column_family.cc +31 -3
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +10 -13
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +35 -48
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +13 -5
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +201 -39
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +15 -10
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +7 -7
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +2 -455
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +4 -2
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +19 -0
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +72 -9
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -10
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +405 -83
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +25 -1
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +23 -10
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +1410 -106
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -5
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +2 -1
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +19 -10
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +505 -45
  51. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  52. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +9 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +4 -4
  54. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +7 -9
  55. package/deps/rocksdb/rocksdb/db/convenience.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/convenience_impl.h +2 -1
  57. package/deps/rocksdb/rocksdb/db/corruption_test.cc +60 -88
  58. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +10 -12
  59. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +471 -40
  60. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +116 -2
  61. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +5 -15
  62. package/deps/rocksdb/rocksdb/db/db_compaction_abort_test.cc +993 -0
  63. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +329 -29
  64. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +155 -13
  65. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +54 -31
  66. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -0
  67. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +232 -70
  68. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +57 -9
  69. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +224 -31
  70. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +4 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -0
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +164 -8
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +6 -0
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +5 -0
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +47 -35
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +22 -9
  79. package/deps/rocksdb/rocksdb/db/db_iter.cc +9 -0
  80. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +371 -6
  81. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +7 -5
  82. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +22 -23
  83. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +0 -2
  84. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +4 -4
  85. package/deps/rocksdb/rocksdb/db/db_options_test.cc +40 -0
  86. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +32 -13
  87. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1 -1
  88. package/deps/rocksdb/rocksdb/db/db_readonly_with_timestamp_test.cc +4 -4
  89. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +68 -15
  90. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1 -1
  91. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +2 -3
  92. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -21
  93. package/deps/rocksdb/rocksdb/db/db_test.cc +644 -128
  94. package/deps/rocksdb/rocksdb/db/db_test2.cc +198 -81
  95. package/deps/rocksdb/rocksdb/db/db_test_util.cc +35 -10
  96. package/deps/rocksdb/rocksdb/db/db_test_util.h +8 -2
  97. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +36 -32
  98. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +11 -7
  99. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +499 -0
  100. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +284 -20
  101. package/deps/rocksdb/rocksdb/db/db_write_test.cc +3 -3
  102. package/deps/rocksdb/rocksdb/db/dbformat.h +0 -5
  103. package/deps/rocksdb/rocksdb/db/error_handler.cc +24 -0
  104. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +12 -14
  105. package/deps/rocksdb/rocksdb/db/experimental.cc +13 -10
  106. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1 -1
  107. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +22 -3
  108. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +21 -15
  109. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +4 -6
  110. package/deps/rocksdb/rocksdb/db/flush_job.cc +11 -3
  111. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +5 -6
  112. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +4 -2
  113. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +17 -17
  114. package/deps/rocksdb/rocksdb/db/internal_stats.cc +13 -0
  115. package/deps/rocksdb/rocksdb/db/internal_stats.h +2 -0
  116. package/deps/rocksdb/rocksdb/db/listener_test.cc +154 -27
  117. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +6 -6
  118. package/deps/rocksdb/rocksdb/db/memtable.cc +197 -51
  119. package/deps/rocksdb/rocksdb/db/memtable.h +6 -0
  120. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +3 -4
  121. package/deps/rocksdb/rocksdb/db/merge_test.cc +37 -35
  122. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +2 -1
  123. package/deps/rocksdb/rocksdb/db/options_file_test.cc +4 -4
  124. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +9 -11
  125. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +10 -1
  126. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +292 -15
  127. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +10 -17
  128. package/deps/rocksdb/rocksdb/db/prefix_test.cc +6 -8
  129. package/deps/rocksdb/rocksdb/db/repair.cc +10 -10
  130. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +5 -5
  131. package/deps/rocksdb/rocksdb/db/table_cache.cc +142 -135
  132. package/deps/rocksdb/rocksdb/db/table_cache.h +30 -6
  133. package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +7 -7
  134. package/deps/rocksdb/rocksdb/db/version_builder.cc +11 -50
  135. package/deps/rocksdb/rocksdb/db/version_builder.h +2 -1
  136. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +2 -1
  137. package/deps/rocksdb/rocksdb/db/version_edit.cc +51 -2
  138. package/deps/rocksdb/rocksdb/db/version_edit.h +91 -29
  139. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -7
  140. package/deps/rocksdb/rocksdb/db/version_set.cc +211 -50
  141. package/deps/rocksdb/rocksdb/db/version_set.h +40 -3
  142. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +5 -0
  143. package/deps/rocksdb/rocksdb/db/version_set_test.cc +294 -21
  144. package/deps/rocksdb/rocksdb/db/version_util.cc +96 -0
  145. package/deps/rocksdb/rocksdb/db/version_util.h +24 -0
  146. package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +5 -5
  147. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +647 -31
  148. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.h +219 -1
  149. package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization_test.cc +549 -12
  150. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -3
  151. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +1 -1
  152. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -0
  153. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +21 -4
  154. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +32 -0
  155. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +74 -22
  156. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +9 -0
  157. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -61
  158. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +15 -2
  159. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +76 -2
  160. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +92 -72
  161. package/deps/rocksdb/rocksdb/env/env.cc +1 -0
  162. package/deps/rocksdb/rocksdb/env/env_test.cc +365 -2
  163. package/deps/rocksdb/rocksdb/env/fs_posix.cc +31 -30
  164. package/deps/rocksdb/rocksdb/env/io_posix.cc +8 -11
  165. package/deps/rocksdb/rocksdb/env/io_posix.h +30 -1
  166. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  167. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +1 -1
  168. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +108 -0
  169. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +32 -4
  170. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +4 -4
  171. package/deps/rocksdb/rocksdb/file/file_util.cc +8 -2
  172. package/deps/rocksdb/rocksdb/file/file_util.h +2 -1
  173. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +331 -12
  174. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +52 -35
  175. package/deps/rocksdb/rocksdb/folly.mk +22 -5
  176. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_cache.h +1 -1
  177. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +100 -54
  178. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +67 -2
  179. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +149 -13
  180. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -12
  181. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +78 -97
  182. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +3 -3
  183. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +2 -2
  184. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +5 -0
  185. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +17 -2
  186. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +1 -1
  187. package/deps/rocksdb/rocksdb/include/rocksdb/io_dispatcher.h +358 -0
  188. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +13 -0
  189. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +43 -0
  190. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +20 -0
  191. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +63 -21
  192. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +10 -1
  193. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +1 -1
  194. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +2 -7
  195. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +13 -0
  196. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +3 -14
  197. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +49 -9
  198. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +8 -0
  199. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +77 -6
  200. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +15 -0
  201. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +16 -10
  202. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +5 -5
  203. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +2 -4
  204. package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +106 -46
  205. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +1 -1
  206. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +14 -1
  207. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +5 -1
  208. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +2 -1
  209. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +7 -9
  210. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  211. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +1 -2
  212. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +2 -2
  213. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +226 -8
  214. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +490 -0
  215. package/deps/rocksdb/rocksdb/memtable/skiplist.h +3 -3
  216. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +11 -0
  217. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +4 -12
  218. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +5 -5
  219. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +21 -4
  220. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +9 -3
  221. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +21 -2
  222. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +2 -2
  223. package/deps/rocksdb/rocksdb/options/cf_options.cc +21 -1
  224. package/deps/rocksdb/rocksdb/options/cf_options.h +2 -0
  225. package/deps/rocksdb/rocksdb/options/customizable_test.cc +0 -2
  226. package/deps/rocksdb/rocksdb/options/db_options.cc +26 -5
  227. package/deps/rocksdb/rocksdb/options/db_options.h +3 -1
  228. package/deps/rocksdb/rocksdb/options/options.cc +5 -1
  229. package/deps/rocksdb/rocksdb/options/options_helper.cc +7 -2
  230. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +109 -103
  231. package/deps/rocksdb/rocksdb/options/options_test.cc +14 -0
  232. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +15 -17
  233. package/deps/rocksdb/rocksdb/port/lang.h +4 -0
  234. package/deps/rocksdb/rocksdb/port/port_example.h +0 -23
  235. package/deps/rocksdb/rocksdb/port/stack_trace.cc +36 -0
  236. package/deps/rocksdb/rocksdb/port/stack_trace.h +9 -0
  237. package/deps/rocksdb/rocksdb/src.mk +12 -0
  238. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +1 -2
  239. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +2 -1
  240. package/deps/rocksdb/rocksdb/table/block_based/block.cc +571 -292
  241. package/deps/rocksdb/rocksdb/table/block_based/block.h +143 -53
  242. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +154 -90
  243. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +5 -1
  244. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +51 -14
  245. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +0 -2
  246. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +147 -734
  247. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +30 -233
  248. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +178 -108
  249. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +13 -0
  250. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +17 -4
  251. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +5 -2
  252. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +70 -0
  253. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +168 -24
  254. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +25 -9
  255. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +7 -4
  256. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +9 -2
  257. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +548 -169
  258. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  259. package/deps/rocksdb/rocksdb/table/block_based/block_util.h +156 -0
  260. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +73 -30
  261. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +74 -7
  262. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +1 -1
  263. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +20 -14
  264. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +22 -12
  265. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +1 -1
  266. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.cc +332 -0
  267. package/deps/rocksdb/rocksdb/table/block_based/multi_scan_index_iterator.h +133 -0
  268. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -2
  269. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
  270. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +3 -2
  271. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +4 -1
  272. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +0 -1
  273. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +126 -46
  274. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +31 -3
  275. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +1 -2
  276. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +3 -1
  277. package/deps/rocksdb/rocksdb/table/external_table.cc +25 -4
  278. package/deps/rocksdb/rocksdb/table/format.cc +27 -15
  279. package/deps/rocksdb/rocksdb/table/format.h +41 -15
  280. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -0
  281. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +22 -12
  282. package/deps/rocksdb/rocksdb/table/meta_blocks.h +0 -1
  283. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +7 -21
  284. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  285. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +88 -13
  286. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +53 -42
  287. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +3 -12
  288. package/deps/rocksdb/rocksdb/table/table_builder.h +0 -4
  289. package/deps/rocksdb/rocksdb/table/table_properties.cc +18 -0
  290. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +2 -3
  291. package/deps/rocksdb/rocksdb/table/table_test.cc +848 -172
  292. package/deps/rocksdb/rocksdb/table/unique_id.cc +24 -20
  293. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +8 -8
  294. package/deps/rocksdb/rocksdb/test_util/sync_point.h +5 -4
  295. package/deps/rocksdb/rocksdb/test_util/testutil.cc +2 -1
  296. package/deps/rocksdb/rocksdb/test_util/testutil.h +2 -2
  297. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +2 -1
  298. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +238 -120
  299. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +2 -2
  300. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +2 -4
  301. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +4 -8
  302. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +1 -1
  303. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +2 -3
  304. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +82 -20
  305. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +41 -47
  306. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -0
  307. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +5 -6
  308. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +1 -1
  309. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +6 -5
  310. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +4 -4
  311. package/deps/rocksdb/rocksdb/tools/write_stress.cc +1 -3
  312. package/deps/rocksdb/rocksdb/util/atomic.h +30 -23
  313. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +6 -7
  314. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +3 -3
  315. package/deps/rocksdb/rocksdb/util/bit_fields.h +68 -46
  316. package/deps/rocksdb/rocksdb/util/bloom_impl.h +16 -16
  317. package/deps/rocksdb/rocksdb/util/coding.h +14 -27
  318. package/deps/rocksdb/rocksdb/util/compression.cc +365 -207
  319. package/deps/rocksdb/rocksdb/util/compression.h +16 -1298
  320. package/deps/rocksdb/rocksdb/util/compression_test.cc +347 -61
  321. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +8 -9
  322. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +1 -1
  323. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +1 -1
  324. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +3 -3
  325. package/deps/rocksdb/rocksdb/util/filter_bench.cc +18 -18
  326. package/deps/rocksdb/rocksdb/util/gflags_compat.h +3 -3
  327. package/deps/rocksdb/rocksdb/util/hash_test.cc +19 -7
  328. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.cc +1099 -0
  329. package/deps/rocksdb/rocksdb/util/io_dispatcher_imp.h +36 -0
  330. package/deps/rocksdb/rocksdb/util/io_dispatcher_test.cc +1919 -0
  331. package/deps/rocksdb/rocksdb/util/math.h +3 -1
  332. package/deps/rocksdb/rocksdb/util/mutexlock.h +19 -19
  333. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +25 -25
  334. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +5 -7
  335. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -5
  336. package/deps/rocksdb/rocksdb/util/slice.cc +0 -10
  337. package/deps/rocksdb/rocksdb/util/slice_test.cc +35 -1
  338. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +5 -7
  339. package/deps/rocksdb/rocksdb/util/status.cc +3 -1
  340. package/deps/rocksdb/rocksdb/util/stop_watch.h +2 -0
  341. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +4 -1
  342. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +123 -78
  343. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +12 -93
  344. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +1 -4
  345. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +0 -21
  346. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +6 -48
  347. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +94 -307
  348. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +12 -58
  349. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +2 -8
  350. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +2 -3
  351. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +205 -811
  352. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +18 -9
  353. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +2 -7
  354. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +1 -9
  355. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +17 -11
  356. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +1 -1
  357. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +1 -1
  358. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  359. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +68 -61
  360. package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -1
  361. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +105 -59
  362. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +274 -7
  363. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs_test.cc +94 -0
  364. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +13 -17
  365. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +16 -3
  366. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +25 -25
  367. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +40 -40
  368. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +2 -5
  369. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +17 -19
  370. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +2 -2
  371. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +2 -2
  372. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +1 -1
  373. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +2 -2
  374. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +4 -13
  375. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +3 -3
  376. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +6 -0
  377. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_seqno_test.cc +431 -0
  378. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +1 -2
  379. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +91 -0
  380. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.cc +562 -0
  381. package/deps/rocksdb/rocksdb/utilities/trie_index/bitvector.h +615 -0
  382. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.cc +2575 -0
  383. package/deps/rocksdb/rocksdb/utilities/trie_index/louds_trie.h +685 -0
  384. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_db_test.cc +2843 -0
  385. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.cc +567 -0
  386. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_factory.h +275 -0
  387. package/deps/rocksdb/rocksdb/utilities/trie_index/trie_index_test.cc +5183 -0
  388. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +4 -3
  389. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +1 -1
  390. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +2 -2
  391. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +3 -3
  392. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +93 -88
  393. package/deps/rocksdb/rocksdb.gyp +7 -0
  394. package/index.js +70 -10
  395. package/iterator.js +25 -3
  396. package/max_rev_operator.h +9 -5
  397. package/package.json +1 -1
  398. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  399. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +0 -43
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +0 -55
@@ -98,7 +98,7 @@ IOStatus TestFSDirectory::Fsync(const IOOptions& options, IODebugContext* dbg) {
98
98
  }
99
99
 
100
100
  IOStatus s = fs_->MaybeInjectThreadLocalError(
101
- FaultInjectionIOType::kMetadataWrite, options);
101
+ FaultInjectionIOType::kMetadataWrite, options, "Fsync", dirname_);
102
102
  if (!s.ok()) {
103
103
  return s;
104
104
  }
@@ -114,7 +114,7 @@ IOStatus TestFSDirectory::Close(const IOOptions& options, IODebugContext* dbg) {
114
114
  }
115
115
 
116
116
  IOStatus s = fs_->MaybeInjectThreadLocalError(
117
- FaultInjectionIOType::kMetadataWrite, options);
117
+ FaultInjectionIOType::kMetadataWrite, options, "Close", dirname_);
118
118
  if (!s.ok()) {
119
119
  return s;
120
120
  }
@@ -130,7 +130,8 @@ IOStatus TestFSDirectory::FsyncWithDirOptions(
130
130
  return fs_->GetError();
131
131
  }
132
132
  IOStatus s = fs_->MaybeInjectThreadLocalError(
133
- FaultInjectionIOType::kMetadataWrite, options);
133
+ FaultInjectionIOType::kMetadataWrite, options, "FsyncWithDirOptions",
134
+ dirname_);
134
135
  if (!s.ok()) {
135
136
  return s;
136
137
  }
@@ -169,7 +170,8 @@ IOStatus TestFSWritableFile::Append(const Slice& data, const IOOptions& options,
169
170
  }
170
171
 
171
172
  IOStatus s = fs_->MaybeInjectThreadLocalError(
172
- FaultInjectionIOType::kWrite, options, state_.filename_,
173
+ FaultInjectionIOType::kWrite, options, "Append", state_.filename_,
174
+ fault_injection_detail::SizeAndHead(data),
173
175
  FaultInjectionTestFS::ErrorOperation::kAppend);
174
176
  if (!s.ok()) {
175
177
  return s;
@@ -205,7 +207,8 @@ IOStatus TestFSWritableFile::Append(
205
207
  }
206
208
 
207
209
  IOStatus s = fs_->MaybeInjectThreadLocalError(
208
- FaultInjectionIOType::kWrite, options, state_.filename_,
210
+ FaultInjectionIOType::kWrite, options, "Append", state_.filename_,
211
+ fault_injection_detail::SizeAndHead(data),
209
212
  FaultInjectionTestFS::ErrorOperation::kAppend);
210
213
  if (!s.ok()) {
211
214
  return s;
@@ -244,8 +247,9 @@ IOStatus TestFSWritableFile::Truncate(uint64_t size, const IOOptions& options,
244
247
  if (!fs_->IsFilesystemActive()) {
245
248
  return fs_->GetError();
246
249
  }
247
- IOStatus s = fs_->MaybeInjectThreadLocalError(FaultInjectionIOType::kWrite,
248
- options, state_.filename_);
250
+ IOStatus s = fs_->MaybeInjectThreadLocalError(
251
+ FaultInjectionIOType::kWrite, options, "Truncate", state_.filename_,
252
+ fault_injection_detail::Size(size));
249
253
  if (!s.ok()) {
250
254
  return s;
251
255
  }
@@ -269,7 +273,8 @@ IOStatus TestFSWritableFile::PositionedAppend(const Slice& data,
269
273
  return IOStatus::Corruption("Data is corrupted!");
270
274
  }
271
275
  IOStatus s = fs_->MaybeInjectThreadLocalError(
272
- FaultInjectionIOType::kWrite, options, state_.filename_,
276
+ FaultInjectionIOType::kWrite, options, "PositionedAppend",
277
+ state_.filename_, fault_injection_detail::OffsetSizeAndHead(offset, data),
273
278
  FaultInjectionTestFS::ErrorOperation::kPositionedAppend);
274
279
  if (!s.ok()) {
275
280
  return s;
@@ -296,7 +301,8 @@ IOStatus TestFSWritableFile::PositionedAppend(
296
301
  return IOStatus::Corruption("Data is corrupted!");
297
302
  }
298
303
  IOStatus s = fs_->MaybeInjectThreadLocalError(
299
- FaultInjectionIOType::kWrite, options, state_.filename_,
304
+ FaultInjectionIOType::kWrite, options, "PositionedAppend",
305
+ state_.filename_, fault_injection_detail::OffsetSizeAndHead(offset, data),
300
306
  FaultInjectionTestFS::ErrorOperation::kPositionedAppend);
301
307
  if (!s.ok()) {
302
308
  return s;
@@ -332,7 +338,7 @@ IOStatus TestFSWritableFile::Close(const IOOptions& options,
332
338
  return fs_->GetError();
333
339
  }
334
340
  IOStatus io_s = fs_->MaybeInjectThreadLocalError(
335
- FaultInjectionIOType::kMetadataWrite, options);
341
+ FaultInjectionIOType::kMetadataWrite, options, "Close", state_.filename_);
336
342
  if (!io_s.ok()) {
337
343
  return io_s;
338
344
  }
@@ -460,7 +466,10 @@ IOStatus TestFSRandomRWFile::Sync(const IOOptions& options,
460
466
  TestFSRandomAccessFile::TestFSRandomAccessFile(
461
467
  const std::string& fname, std::unique_ptr<FSRandomAccessFile>&& f,
462
468
  FaultInjectionTestFS* fs)
463
- : target_(std::move(f)), fs_(fs), is_sst_(EndsWith(fname, ".sst")) {
469
+ : fname_(fname),
470
+ target_(std::move(f)),
471
+ fs_(fs),
472
+ is_sst_(EndsWith(fname, ".sst")) {
464
473
  assert(target_ != nullptr);
465
474
  }
466
475
 
@@ -473,7 +482,8 @@ IOStatus TestFSRandomAccessFile::Read(uint64_t offset, size_t n,
473
482
  return fs_->GetError();
474
483
  }
475
484
  IOStatus s = fs_->MaybeInjectThreadLocalError(
476
- FaultInjectionIOType::kRead, options, "",
485
+ FaultInjectionIOType::kRead, options, "Read", fname_,
486
+ fault_injection_detail::OffsetAndSize(offset, n),
477
487
  FaultInjectionTestFS::ErrorOperation::kRead, result, use_direct_io(),
478
488
  scratch, /*need_count_increase=*/true,
479
489
  /*fault_injected=*/nullptr);
@@ -498,7 +508,8 @@ IOStatus TestFSRandomAccessFile::ReadAsync(
498
508
  }
499
509
  if (res_status.ok()) {
500
510
  res_status = fs_->MaybeInjectThreadLocalError(
501
- FaultInjectionIOType::kRead, opts, "",
511
+ FaultInjectionIOType::kRead, opts, "ReadAsync", fname_,
512
+ fault_injection_detail::OffsetAndSize(req.offset, req.len),
502
513
  FaultInjectionTestFS::ErrorOperation::kRead, &res.result,
503
514
  use_direct_io(), req.scratch, /*need_count_increase=*/true,
504
515
  /*fault_injected=*/nullptr);
@@ -538,7 +549,9 @@ IOStatus TestFSRandomAccessFile::MultiRead(FSReadRequest* reqs, size_t num_reqs,
538
549
  }
539
550
  bool this_injected_error;
540
551
  reqs[i].status = fs_->MaybeInjectThreadLocalError(
541
- FaultInjectionIOType::kRead, options, "",
552
+ FaultInjectionIOType::kRead, options, "MultiRead", fname_,
553
+ fault_injection_detail::ReqOffsetAndSize(i, reqs[i].offset,
554
+ reqs[i].len),
542
555
  FaultInjectionTestFS::ErrorOperation::kRead, &(reqs[i].result),
543
556
  use_direct_io(), reqs[i].scratch,
544
557
  /*need_count_increase=*/true,
@@ -547,7 +560,8 @@ IOStatus TestFSRandomAccessFile::MultiRead(FSReadRequest* reqs, size_t num_reqs,
547
560
  }
548
561
  if (s.ok()) {
549
562
  s = fs_->MaybeInjectThreadLocalError(
550
- FaultInjectionIOType::kRead, options, "",
563
+ FaultInjectionIOType::kRead, options, "MultiRead", "",
564
+ fault_injection_detail::Count(num_reqs),
551
565
  FaultInjectionTestFS::ErrorOperation::kMultiRead, nullptr,
552
566
  use_direct_io(), nullptr, /*need_count_increase=*/!injected_error,
553
567
  /*fault_injected=*/nullptr);
@@ -617,7 +631,8 @@ IOStatus TestFSSequentialFile::Read(size_t n, const IOOptions& options,
617
631
  Slice* result, char* scratch,
618
632
  IODebugContext* dbg) {
619
633
  IOStatus s = fs_->MaybeInjectThreadLocalError(
620
- FaultInjectionIOType::kRead, options, "",
634
+ FaultInjectionIOType::kRead, options, "Read", fname_,
635
+ fault_injection_detail::Size(n),
621
636
  FaultInjectionTestFS::ErrorOperation::kRead, result, use_direct_io(),
622
637
  scratch, true /*need_count_increase=*/, nullptr /* fault_injected*/);
623
638
  if (!s.ok()) {
@@ -768,7 +783,8 @@ IOStatus TestFSSequentialFile::PositionedRead(uint64_t offset, size_t n,
768
783
  Slice* result, char* scratch,
769
784
  IODebugContext* dbg) {
770
785
  IOStatus s = fs_->MaybeInjectThreadLocalError(
771
- FaultInjectionIOType::kRead, options, "",
786
+ FaultInjectionIOType::kRead, options, "PositionedRead", fname_,
787
+ fault_injection_detail::OffsetAndSize(offset, n),
772
788
  FaultInjectionTestFS::ErrorOperation::kRead, result, use_direct_io(),
773
789
  scratch, true /*need_count_increase=*/, nullptr /* fault_injected */);
774
790
  if (!s.ok()) {
@@ -800,8 +816,8 @@ IOStatus FaultInjectionTestFS::FileExists(const std::string& fname,
800
816
  return GetError();
801
817
  }
802
818
 
803
- IOStatus io_s =
804
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
819
+ IOStatus io_s = MaybeInjectThreadLocalError(
820
+ FaultInjectionIOType::kMetadataRead, options, "FileExists", fname);
805
821
  if (!io_s.ok()) {
806
822
  return io_s;
807
823
  }
@@ -818,8 +834,8 @@ IOStatus FaultInjectionTestFS::GetChildren(const std::string& dir,
818
834
  return GetError();
819
835
  }
820
836
 
821
- IOStatus io_s =
822
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
837
+ IOStatus io_s = MaybeInjectThreadLocalError(
838
+ FaultInjectionIOType::kMetadataRead, options, "GetChildren", dir);
823
839
  if (!io_s.ok()) {
824
840
  return io_s;
825
841
  }
@@ -836,7 +852,8 @@ IOStatus FaultInjectionTestFS::GetChildrenFileAttributes(
836
852
  }
837
853
 
838
854
  IOStatus io_s =
839
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
855
+ MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options,
856
+ "GetChildrenFileAttributes", dir);
840
857
  if (!io_s.ok()) {
841
858
  return io_s;
842
859
  }
@@ -857,8 +874,8 @@ IOStatus FaultInjectionTestFS::NewWritableFile(
857
874
  }
858
875
 
859
876
  IOStatus io_s = MaybeInjectThreadLocalError(
860
- FaultInjectionIOType::kWrite, file_opts.io_options, fname,
861
- FaultInjectionTestFS::ErrorOperation::kOpen);
877
+ FaultInjectionIOType::kWrite, file_opts.io_options, "NewWritableFile",
878
+ fname, {}, FaultInjectionTestFS::ErrorOperation::kOpen);
862
879
  if (!io_s.ok()) {
863
880
  return io_s;
864
881
  }
@@ -894,7 +911,8 @@ IOStatus FaultInjectionTestFS::ReopenWritableFile(
894
911
  return target()->ReopenWritableFile(fname, file_opts, result, dbg);
895
912
  }
896
913
  IOStatus io_s = MaybeInjectThreadLocalError(FaultInjectionIOType::kWrite,
897
- file_opts.io_options, fname);
914
+ file_opts.io_options,
915
+ "ReopenWritableFile", fname);
898
916
  if (!io_s.ok()) {
899
917
  return io_s;
900
918
  }
@@ -970,7 +988,8 @@ IOStatus FaultInjectionTestFS::NewRandomRWFile(
970
988
  return target()->NewRandomRWFile(fname, file_opts, result, dbg);
971
989
  }
972
990
  IOStatus io_s = MaybeInjectThreadLocalError(FaultInjectionIOType::kWrite,
973
- file_opts.io_options, fname);
991
+ file_opts.io_options,
992
+ "NewRandomRWFile", fname);
974
993
  if (!io_s.ok()) {
975
994
  return io_s;
976
995
  }
@@ -1002,10 +1021,10 @@ IOStatus FaultInjectionTestFS::NewRandomAccessFile(
1002
1021
  return GetError();
1003
1022
  }
1004
1023
  IOStatus io_s = MaybeInjectThreadLocalError(
1005
- FaultInjectionIOType::kRead, file_opts.io_options, fname,
1006
- ErrorOperation::kOpen, nullptr /* result */, false /* direct_io */,
1007
- nullptr /* scratch */, true /*need_count_increase*/,
1008
- nullptr /*fault_injected*/);
1024
+ FaultInjectionIOType::kRead, file_opts.io_options, "NewRandomAccessFile",
1025
+ fname, {}, ErrorOperation::kOpen, nullptr /* result */,
1026
+ false /* direct_io */, nullptr /* scratch */,
1027
+ true /*need_count_increase*/, nullptr /*fault_injected*/);
1009
1028
  if (!io_s.ok()) {
1010
1029
  return io_s;
1011
1030
  }
@@ -1025,10 +1044,10 @@ IOStatus FaultInjectionTestFS::NewSequentialFile(
1025
1044
  return GetError();
1026
1045
  }
1027
1046
  IOStatus io_s = MaybeInjectThreadLocalError(
1028
- FaultInjectionIOType::kRead, file_opts.io_options, fname,
1029
- ErrorOperation::kOpen, nullptr /* result */, false /* direct_io */,
1030
- nullptr /* scratch */, true /*need_count_increase*/,
1031
- nullptr /*fault_injected*/);
1047
+ FaultInjectionIOType::kRead, file_opts.io_options, "NewSequentialFile",
1048
+ fname, {}, ErrorOperation::kOpen, nullptr /* result */,
1049
+ false /* direct_io */, nullptr /* scratch */,
1050
+ true /*need_count_increase*/, nullptr /*fault_injected*/);
1032
1051
  if (!io_s.ok()) {
1033
1052
  return io_s;
1034
1053
  }
@@ -1048,7 +1067,7 @@ IOStatus FaultInjectionTestFS::DeleteFile(const std::string& f,
1048
1067
  return GetError();
1049
1068
  }
1050
1069
  IOStatus io_s = MaybeInjectThreadLocalError(
1051
- FaultInjectionIOType::kMetadataWrite, options);
1070
+ FaultInjectionIOType::kMetadataWrite, options, "DeleteFile", f);
1052
1071
  if (!io_s.ok()) {
1053
1072
  return io_s;
1054
1073
  }
@@ -1071,8 +1090,8 @@ IOStatus FaultInjectionTestFS::GetFileSize(const std::string& f,
1071
1090
  if (!IsFilesystemActive()) {
1072
1091
  return GetError();
1073
1092
  }
1074
- IOStatus io_s =
1075
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
1093
+ IOStatus io_s = MaybeInjectThreadLocalError(
1094
+ FaultInjectionIOType::kMetadataRead, options, "GetFileSize", f);
1076
1095
  if (!io_s.ok()) {
1077
1096
  return io_s;
1078
1097
  }
@@ -1101,7 +1120,8 @@ IOStatus FaultInjectionTestFS::GetFileModificationTime(const std::string& fname,
1101
1120
  return GetError();
1102
1121
  }
1103
1122
  IOStatus io_s =
1104
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
1123
+ MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options,
1124
+ "GetFileModificationTime", fname);
1105
1125
  if (!io_s.ok()) {
1106
1126
  return io_s;
1107
1127
  }
@@ -1118,12 +1138,13 @@ IOStatus FaultInjectionTestFS::RenameFile(const std::string& s,
1118
1138
  return GetError();
1119
1139
  }
1120
1140
  IOStatus io_s = MaybeInjectThreadLocalError(
1121
- FaultInjectionIOType::kMetadataWrite, options);
1141
+ FaultInjectionIOType::kMetadataWrite, options, "RenameFile", s,
1142
+ fault_injection_detail::TwoFiles(s, t));
1122
1143
  if (!io_s.ok()) {
1123
1144
  return io_s;
1124
1145
  }
1125
1146
 
1126
- // We preserve contents of overwritten files up to a size threshold.
1147
+ // We preserve contents of overwritten files
1127
1148
  // We could keep previous file in another name, but we need to worry about
1128
1149
  // garbage collect the those files. We do it if it is needed later.
1129
1150
  // We ignore I/O errors here for simplicity.
@@ -1164,7 +1185,8 @@ IOStatus FaultInjectionTestFS::LinkFile(const std::string& s,
1164
1185
  return GetError();
1165
1186
  }
1166
1187
  IOStatus io_s = MaybeInjectThreadLocalError(
1167
- FaultInjectionIOType::kMetadataWrite, options);
1188
+ FaultInjectionIOType::kMetadataWrite, options, "LinkFile", s,
1189
+ fault_injection_detail::TwoFiles(s, t));
1168
1190
  if (!io_s.ok()) {
1169
1191
  return io_s;
1170
1192
  }
@@ -1208,8 +1230,8 @@ IOStatus FaultInjectionTestFS::NumFileLinks(const std::string& fname,
1208
1230
  if (!IsFilesystemActive()) {
1209
1231
  return GetError();
1210
1232
  }
1211
- IOStatus io_s =
1212
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
1233
+ IOStatus io_s = MaybeInjectThreadLocalError(
1234
+ FaultInjectionIOType::kMetadataRead, options, "NumFileLinks", fname);
1213
1235
  if (!io_s.ok()) {
1214
1236
  return io_s;
1215
1237
  }
@@ -1225,8 +1247,9 @@ IOStatus FaultInjectionTestFS::AreFilesSame(const std::string& first,
1225
1247
  if (!IsFilesystemActive()) {
1226
1248
  return GetError();
1227
1249
  }
1228
- IOStatus io_s =
1229
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
1250
+ IOStatus io_s = MaybeInjectThreadLocalError(
1251
+ FaultInjectionIOType::kMetadataRead, options, "AreFilesSame", first,
1252
+ fault_injection_detail::TwoFiles(first, second));
1230
1253
  if (!io_s.ok()) {
1231
1254
  return io_s;
1232
1255
  }
@@ -1242,8 +1265,8 @@ IOStatus FaultInjectionTestFS::GetAbsolutePath(const std::string& db_path,
1242
1265
  if (!IsFilesystemActive()) {
1243
1266
  return GetError();
1244
1267
  }
1245
- IOStatus io_s =
1246
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
1268
+ IOStatus io_s = MaybeInjectThreadLocalError(
1269
+ FaultInjectionIOType::kMetadataRead, options, "GetAbsolutePath", db_path);
1247
1270
  if (!io_s.ok()) {
1248
1271
  return io_s;
1249
1272
  }
@@ -1258,8 +1281,8 @@ IOStatus FaultInjectionTestFS::IsDirectory(const std::string& path,
1258
1281
  if (!IsFilesystemActive()) {
1259
1282
  return GetError();
1260
1283
  }
1261
- IOStatus io_s =
1262
- MaybeInjectThreadLocalError(FaultInjectionIOType::kMetadataRead, options);
1284
+ IOStatus io_s = MaybeInjectThreadLocalError(
1285
+ FaultInjectionIOType::kMetadataRead, options, "IsDirectory", path);
1263
1286
  if (!io_s.ok()) {
1264
1287
  return io_s;
1265
1288
  }
@@ -1389,9 +1412,10 @@ void FaultInjectionTestFS::UntrackFile(const std::string& f) {
1389
1412
  }
1390
1413
 
1391
1414
  IOStatus FaultInjectionTestFS::MaybeInjectThreadLocalReadError(
1392
- const IOOptions& io_options, ErrorOperation op, Slice* result,
1393
- bool direct_io, char* scratch, bool need_count_increase,
1394
- bool* fault_injected) {
1415
+ const IOOptions& io_options, const char* op_name,
1416
+ const std::string& file_name, std::function<std::string()> detail_fn,
1417
+ ErrorOperation op, Slice* result, bool direct_io, char* scratch,
1418
+ bool need_count_increase, bool* fault_injected) {
1395
1419
  bool dummy_bool;
1396
1420
  bool& ret_fault_injected = fault_injected ? *fault_injected : dummy_bool;
1397
1421
  ret_fault_injected = false;
@@ -1461,6 +1485,17 @@ IOStatus FaultInjectionTestFS::MaybeInjectThreadLocalReadError(
1461
1485
 
1462
1486
  ret.SetRetryable(ctx->retryable);
1463
1487
  ret.SetDataLoss(ctx->has_data_loss);
1488
+ if (!ret.ok()) {
1489
+ std::string detail = detail_fn ? detail_fn() : "";
1490
+ if (detail.empty()) {
1491
+ injected_error_log_.Record("%s(\"%.128s\") -> %s", op_name,
1492
+ file_name.c_str(), ret.ToString().c_str());
1493
+ } else {
1494
+ injected_error_log_.Record("%s(\"%.128s\", %s) -> %s", op_name,
1495
+ file_name.c_str(), detail.c_str(),
1496
+ ret.ToString().c_str());
1497
+ }
1498
+ }
1464
1499
  return ret;
1465
1500
  }
1466
1501
 
@@ -1472,14 +1507,14 @@ bool FaultInjectionTestFS::TryParseFileName(const std::string& file_name,
1472
1507
  }
1473
1508
 
1474
1509
  IOStatus FaultInjectionTestFS::MaybeInjectThreadLocalError(
1475
- FaultInjectionIOType type, const IOOptions& io_options,
1476
- const std::string& file_name, ErrorOperation op, Slice* result,
1477
- bool direct_io, char* scratch, bool need_count_increase,
1478
- bool* fault_injected) {
1510
+ FaultInjectionIOType type, const IOOptions& io_options, const char* op_name,
1511
+ const std::string& file_name, std::function<std::string()> detail_fn,
1512
+ ErrorOperation op, Slice* result, bool direct_io, char* scratch,
1513
+ bool need_count_increase, bool* fault_injected) {
1479
1514
  if (type == FaultInjectionIOType::kRead) {
1480
- return MaybeInjectThreadLocalReadError(io_options, op, result, direct_io,
1481
- scratch, need_count_increase,
1482
- fault_injected);
1515
+ return MaybeInjectThreadLocalReadError(
1516
+ io_options, op_name, file_name, std::move(detail_fn), op, result,
1517
+ direct_io, scratch, need_count_increase, fault_injected);
1483
1518
  }
1484
1519
 
1485
1520
  ErrorContext* ctx = GetErrorContextFromFaultInjectionIOType(type);
@@ -1501,6 +1536,17 @@ IOStatus FaultInjectionTestFS::MaybeInjectThreadLocalError(
1501
1536
  ret = IOStatus::IOError(ctx->message);
1502
1537
  ret.SetRetryable(ctx->retryable);
1503
1538
  ret.SetDataLoss(ctx->has_data_loss);
1539
+ {
1540
+ std::string detail = detail_fn ? detail_fn() : "";
1541
+ if (detail.empty()) {
1542
+ injected_error_log_.Record("%s(\"%.128s\") -> %s", op_name,
1543
+ file_name.c_str(), ret.ToString().c_str());
1544
+ } else {
1545
+ injected_error_log_.Record("%s(\"%.128s\", %s) -> %s", op_name,
1546
+ file_name.c_str(), detail.c_str(),
1547
+ ret.ToString().c_str());
1548
+ }
1549
+ }
1504
1550
  if (type == FaultInjectionIOType::kWrite) {
1505
1551
  TEST_SYNC_POINT(
1506
1552
  "FaultInjectionTestFS::InjectMetadataWriteError:Injected");