@nxtedition/rocksdb 5.2.21 → 5.2.26

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 (909) hide show
  1. package/binding.cc +216 -252
  2. package/binding.gyp +78 -72
  3. package/deps/rocksdb/build_version.cc +70 -4
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +281 -149
  5. package/deps/rocksdb/rocksdb/Makefile +459 -469
  6. package/deps/rocksdb/rocksdb/README.md +4 -4
  7. package/deps/rocksdb/rocksdb/TARGETS +5244 -1500
  8. package/deps/rocksdb/rocksdb/cache/cache.cc +12 -3
  9. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +7 -368
  10. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +924 -0
  11. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +128 -0
  12. package/deps/rocksdb/rocksdb/cache/cache_entry_roles.h +103 -0
  13. package/deps/rocksdb/rocksdb/cache/cache_entry_stats.h +183 -0
  14. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +11 -0
  15. package/deps/rocksdb/rocksdb/cache/cache_key.cc +344 -0
  16. package/deps/rocksdb/rocksdb/cache/cache_key.h +132 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.cc +183 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager.h +288 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +468 -0
  20. package/deps/rocksdb/rocksdb/cache/cache_test.cc +85 -8
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +121 -51
  22. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +171 -0
  23. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +86 -0
  24. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +607 -0
  25. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +381 -154
  26. package/deps/rocksdb/rocksdb/cache/lru_cache.h +176 -33
  27. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1659 -3
  28. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +94 -23
  29. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +49 -28
  30. package/deps/rocksdb/rocksdb/crash_test.mk +93 -0
  31. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +54 -31
  32. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +10 -6
  33. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator.h +146 -0
  34. package/deps/rocksdb/rocksdb/db/blob/blob_counting_iterator_test.cc +326 -0
  35. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.cc +34 -0
  36. package/deps/rocksdb/rocksdb/db/blob/blob_fetcher.h +37 -0
  37. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +4 -2
  38. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +8 -4
  39. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +99 -40
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +20 -8
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +95 -83
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +13 -10
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +7 -4
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +37 -37
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_completion_callback.h +101 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +8 -1
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +6 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +209 -44
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +37 -11
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +382 -179
  51. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_garbage_meter_test.cc +196 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +3 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +2 -1
  56. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +7 -5
  57. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +10 -3
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +12 -8
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +5 -5
  60. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +772 -9
  61. package/deps/rocksdb/rocksdb/db/blob/db_blob_compaction_test.cc +730 -0
  62. package/deps/rocksdb/rocksdb/db/blob/db_blob_corruption_test.cc +82 -0
  63. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +155 -17
  64. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  65. package/deps/rocksdb/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +137 -89
  67. package/deps/rocksdb/rocksdb/db/builder.h +16 -37
  68. package/deps/rocksdb/rocksdb/db/c.cc +413 -208
  69. package/deps/rocksdb/rocksdb/db/c_test.c +227 -138
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +118 -103
  71. package/deps/rocksdb/rocksdb/db/column_family.h +86 -44
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +38 -24
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +81 -0
  74. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator.h +275 -0
  75. package/deps/rocksdb/rocksdb/db/compaction/clipping_iterator_test.cc +258 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +81 -28
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +43 -12
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +12 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +406 -215
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +147 -50
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +167 -61
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1321 -156
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +197 -28
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +2 -3
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +246 -43
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +65 -26
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +7 -7
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +122 -9
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -2
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +18 -6
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +1 -1
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +536 -44
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +311 -30
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +1 -1
  95. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +849 -0
  96. package/deps/rocksdb/rocksdb/db/compaction/file_pri.h +92 -0
  97. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +46 -0
  98. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +1 -1
  99. package/deps/rocksdb/rocksdb/db/convenience.cc +6 -3
  100. package/deps/rocksdb/rocksdb/db/corruption_test.cc +383 -28
  101. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +7 -2
  102. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +154 -45
  103. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1095 -33
  104. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +1249 -203
  105. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +135 -9
  106. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +1348 -166
  107. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +3 -5
  108. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +1 -1
  109. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +312 -45
  110. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1734 -48
  111. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.cc → db_impl/compacted_db_impl.cc} +24 -7
  112. package/deps/rocksdb/rocksdb/db/{compacted_db_impl.h → db_impl/compacted_db_impl.h} +1 -1
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +644 -333
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +365 -92
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +578 -210
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +38 -16
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +17 -10
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +75 -74
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +450 -183
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +42 -9
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +232 -15
  122. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +42 -4
  123. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +297 -100
  124. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +16 -15
  125. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +31 -1
  126. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +6 -5
  127. package/deps/rocksdb/rocksdb/db/db_iter.cc +218 -153
  128. package/deps/rocksdb/rocksdb/db/db_iter.h +14 -12
  129. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +1 -1
  130. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +84 -160
  131. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +47 -6
  132. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +204 -0
  133. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +21 -13
  134. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +17 -10
  135. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +38 -24
  136. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +184 -19
  137. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +1 -1
  138. package/deps/rocksdb/rocksdb/db/db_options_test.cc +183 -3
  139. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +409 -9
  140. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +92 -23
  141. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +446 -0
  142. package/deps/rocksdb/rocksdb/db/{db_impl/db_secondary_test.cc → db_secondary_test.cc} +363 -35
  143. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +520 -15
  144. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +50 -1
  145. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +139 -4
  146. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +1 -1
  147. package/deps/rocksdb/rocksdb/db/db_test.cc +669 -359
  148. package/deps/rocksdb/rocksdb/db/db_test2.cc +2110 -304
  149. package/deps/rocksdb/rocksdb/db/db_test_util.cc +76 -43
  150. package/deps/rocksdb/rocksdb/db/db_test_util.h +231 -103
  151. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +19 -11
  152. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +490 -71
  153. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +980 -349
  154. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +11 -12
  155. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +793 -0
  156. package/deps/rocksdb/rocksdb/db/db_write_test.cc +2 -1
  157. package/deps/rocksdb/rocksdb/db/dbformat.cc +4 -12
  158. package/deps/rocksdb/rocksdb/db/dbformat.h +28 -18
  159. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +3 -0
  160. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +50 -15
  161. package/deps/rocksdb/rocksdb/db/error_handler.cc +127 -41
  162. package/deps/rocksdb/rocksdb/db/error_handler.h +12 -5
  163. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +524 -255
  164. package/deps/rocksdb/rocksdb/db/event_helpers.cc +136 -11
  165. package/deps/rocksdb/rocksdb/db/event_helpers.h +27 -2
  166. package/deps/rocksdb/rocksdb/db/experimental.cc +100 -0
  167. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +307 -4
  168. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +137 -60
  169. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +12 -8
  170. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +86 -55
  171. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +86 -5
  172. package/deps/rocksdb/rocksdb/db/filename_test.cc +63 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job.cc +619 -64
  174. package/deps/rocksdb/rocksdb/db/flush_job.h +30 -7
  175. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +33 -16
  176. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +2 -1
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +18 -17
  178. package/deps/rocksdb/rocksdb/db/forward_iterator.h +5 -4
  179. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +0 -1
  180. package/deps/rocksdb/rocksdb/db/history_trimming_iterator.h +91 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +25 -14
  182. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +6 -5
  183. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +1 -1
  184. package/deps/rocksdb/rocksdb/db/internal_stats.cc +471 -50
  185. package/deps/rocksdb/rocksdb/db/internal_stats.h +129 -25
  186. package/deps/rocksdb/rocksdb/db/job_context.h +22 -9
  187. package/deps/rocksdb/rocksdb/db/kv_checksum.h +394 -0
  188. package/deps/rocksdb/rocksdb/db/listener_test.cc +518 -41
  189. package/deps/rocksdb/rocksdb/db/log_format.h +4 -1
  190. package/deps/rocksdb/rocksdb/db/log_reader.cc +129 -6
  191. package/deps/rocksdb/rocksdb/db/log_reader.h +17 -1
  192. package/deps/rocksdb/rocksdb/db/log_test.cc +161 -11
  193. package/deps/rocksdb/rocksdb/db/log_writer.cc +92 -13
  194. package/deps/rocksdb/rocksdb/db/log_writer.h +18 -5
  195. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +1 -1
  196. package/deps/rocksdb/rocksdb/db/lookup_key.h +0 -1
  197. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +2 -2
  198. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +21 -8
  199. package/deps/rocksdb/rocksdb/db/memtable.cc +144 -54
  200. package/deps/rocksdb/rocksdb/db/memtable.h +72 -15
  201. package/deps/rocksdb/rocksdb/db/memtable_list.cc +95 -47
  202. package/deps/rocksdb/rocksdb/db/memtable_list.h +33 -13
  203. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +61 -31
  204. package/deps/rocksdb/rocksdb/db/merge_context.h +20 -8
  205. package/deps/rocksdb/rocksdb/db/merge_helper.cc +54 -11
  206. package/deps/rocksdb/rocksdb/db/merge_helper.h +17 -6
  207. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +13 -7
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +40 -19
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +14 -25
  210. package/deps/rocksdb/rocksdb/db/output_validator.cc +3 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.h +5 -4
  212. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +32 -28
  213. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +43 -29
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +9 -7
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +21 -16
  216. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +1 -1
  217. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +29 -36
  218. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +1 -2
  219. package/deps/rocksdb/rocksdb/db/prefix_test.cc +4 -4
  220. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +2 -2
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +11 -11
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +3 -2
  223. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +14 -8
  224. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +17 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +4 -2
  226. package/deps/rocksdb/rocksdb/db/read_callback.h +1 -0
  227. package/deps/rocksdb/rocksdb/db/repair.cc +87 -58
  228. package/deps/rocksdb/rocksdb/db/repair_test.cc +35 -5
  229. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +2 -1
  230. package/deps/rocksdb/rocksdb/db/table_cache.cc +95 -69
  231. package/deps/rocksdb/rocksdb/db/table_cache.h +63 -53
  232. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +4 -4
  233. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +78 -10
  234. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +28 -33
  235. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +30 -51
  236. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +12 -8
  237. package/deps/rocksdb/rocksdb/db/version_builder.cc +564 -341
  238. package/deps/rocksdb/rocksdb/db/version_builder.h +8 -8
  239. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +327 -155
  240. package/deps/rocksdb/rocksdb/db/version_edit.cc +89 -27
  241. package/deps/rocksdb/rocksdb/db/version_edit.h +42 -17
  242. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +324 -43
  243. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +79 -22
  244. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +165 -20
  245. package/deps/rocksdb/rocksdb/db/version_set.cc +935 -1034
  246. package/deps/rocksdb/rocksdb/db/version_set.h +183 -122
  247. package/deps/rocksdb/rocksdb/db/version_set_test.cc +556 -138
  248. package/deps/rocksdb/rocksdb/db/version_util.h +68 -0
  249. package/deps/rocksdb/rocksdb/db/wal_manager.cc +23 -21
  250. package/deps/rocksdb/rocksdb/db/wal_manager.h +5 -2
  251. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +30 -27
  252. package/deps/rocksdb/rocksdb/db/write_batch.cc +704 -209
  253. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +135 -2
  254. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +209 -5
  255. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +2 -0
  256. package/deps/rocksdb/rocksdb/db/write_controller.cc +47 -54
  257. package/deps/rocksdb/rocksdb/db/write_controller.h +12 -9
  258. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +215 -103
  259. package/deps/rocksdb/rocksdb/db/write_thread.cc +11 -0
  260. package/deps/rocksdb/rocksdb/db/write_thread.h +14 -8
  261. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +7 -4
  262. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +10 -3
  263. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +6 -0
  264. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +1 -1
  265. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +19 -2
  266. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +78 -25
  267. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +13 -2
  268. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +29 -12
  269. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +5 -1
  270. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +199 -32
  271. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.cc +188 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +59 -10
  273. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +77 -109
  274. package/deps/rocksdb/rocksdb/{third-party/folly/folly/synchronization/WaitOptions.cpp → db_stress_tool/db_stress_stat.cc} +9 -4
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +7 -6
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +1 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +699 -143
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +20 -2
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +49 -39
  280. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +631 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +287 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1565 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +374 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +149 -18
  285. package/deps/rocksdb/rocksdb/env/composite_env.cc +464 -0
  286. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +98 -646
  287. package/deps/rocksdb/rocksdb/env/emulated_clock.h +114 -0
  288. package/deps/rocksdb/rocksdb/env/env.cc +632 -42
  289. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +84 -36
  290. package/deps/rocksdb/rocksdb/env/env_chroot.cc +88 -286
  291. package/deps/rocksdb/rocksdb/env/env_chroot.h +34 -1
  292. package/deps/rocksdb/rocksdb/env/env_encryption.cc +469 -277
  293. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +9 -30
  294. package/deps/rocksdb/rocksdb/env/env_posix.cc +110 -119
  295. package/deps/rocksdb/rocksdb/env/env_test.cc +1128 -39
  296. package/deps/rocksdb/rocksdb/env/file_system.cc +147 -8
  297. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +207 -136
  298. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +86 -54
  299. package/deps/rocksdb/rocksdb/env/fs_posix.cc +192 -64
  300. package/deps/rocksdb/rocksdb/env/fs_readonly.h +107 -0
  301. package/deps/rocksdb/rocksdb/env/fs_remap.cc +339 -0
  302. package/deps/rocksdb/rocksdb/env/fs_remap.h +139 -0
  303. package/deps/rocksdb/rocksdb/env/io_posix.cc +245 -41
  304. package/deps/rocksdb/rocksdb/env/io_posix.h +66 -1
  305. package/deps/rocksdb/rocksdb/env/mock_env.cc +147 -149
  306. package/deps/rocksdb/rocksdb/env/mock_env.h +113 -11
  307. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +2 -4
  308. package/deps/rocksdb/rocksdb/env/unique_id_gen.cc +164 -0
  309. package/deps/rocksdb/rocksdb/env/unique_id_gen.h +71 -0
  310. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +9 -5
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +6 -4
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +19 -12
  313. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +459 -70
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +205 -28
  315. package/deps/rocksdb/rocksdb/file/file_util.cc +39 -28
  316. package/deps/rocksdb/rocksdb/file/file_util.h +18 -27
  317. package/deps/rocksdb/rocksdb/file/filename.cc +59 -22
  318. package/deps/rocksdb/rocksdb/file/filename.h +13 -8
  319. package/deps/rocksdb/rocksdb/file/line_file_reader.cc +68 -0
  320. package/deps/rocksdb/rocksdb/file/line_file_reader.h +59 -0
  321. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +1130 -6
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +220 -36
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +69 -17
  324. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +13 -12
  325. package/deps/rocksdb/rocksdb/file/read_write_util.cc +3 -38
  326. package/deps/rocksdb/rocksdb/file/read_write_util.h +0 -4
  327. package/deps/rocksdb/rocksdb/file/readahead_file_info.h +33 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +57 -9
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +58 -6
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +29 -54
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +22 -29
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +424 -50
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +66 -19
  334. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +157 -66
  335. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +224 -121
  336. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +333 -30
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +1 -1
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +90 -50
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +13 -5
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +20 -4
  342. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +8 -3
  343. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +53 -12
  344. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +31 -6
  345. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +102 -7
  346. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +51 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +370 -262
  348. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +286 -87
  349. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +124 -64
  350. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +27 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +21 -4
  352. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +384 -41
  353. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +111 -143
  354. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +20 -6
  355. package/deps/rocksdb/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +15 -33
  357. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +37 -1
  358. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -3
  359. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +314 -26
  360. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +11 -7
  361. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +50 -15
  362. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +10 -3
  363. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +186 -96
  364. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +373 -103
  365. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +13 -3
  366. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +2 -2
  367. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +37 -7
  368. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +6 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +87 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +5 -12
  371. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +59 -30
  372. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +11 -11
  373. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +22 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +17 -10
  375. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +121 -41
  376. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +1 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +114 -136
  378. package/deps/rocksdb/rocksdb/include/rocksdb/system_clock.h +116 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +160 -18
  380. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +57 -15
  381. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +3 -1
  382. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +10 -6
  383. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +247 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +1 -1
  386. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +14 -24
  387. package/deps/rocksdb/rocksdb/include/rocksdb/unique_id.h +46 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +14 -4
  389. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +631 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +142 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +12 -9
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/customizable_util.h +368 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +24 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +4 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +418 -63
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +143 -73
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +2 -2
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/replayer.h +87 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +2 -2
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +43 -5
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +18 -23
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +26 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +32 -6
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +1 -2
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +20 -1
  407. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +30 -3
  408. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +11 -2
  409. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +89 -11
  410. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +11 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +108 -38
  412. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +40 -23
  413. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +12 -5
  414. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +100 -49
  415. package/deps/rocksdb/rocksdb/logging/env_logger.h +7 -5
  416. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +0 -1
  417. package/deps/rocksdb/rocksdb/logging/posix_logger.h +3 -9
  418. package/deps/rocksdb/rocksdb/memory/arena.cc +3 -1
  419. package/deps/rocksdb/rocksdb/memory/arena.h +1 -1
  420. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +171 -106
  421. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +31 -15
  422. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +15 -4
  423. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +24 -8
  424. package/deps/rocksdb/rocksdb/memory/memory_allocator.cc +91 -0
  425. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +239 -0
  426. package/deps/rocksdb/rocksdb/memory/memory_usage.h +14 -1
  427. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +72 -9
  428. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +52 -6
  429. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +53 -0
  430. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +5 -5
  431. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +17 -5
  432. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +1 -1
  433. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +87 -0
  434. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +20 -10
  435. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -94
  436. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +160 -62
  437. package/deps/rocksdb/rocksdb/microbench/CMakeLists.txt +17 -0
  438. package/deps/rocksdb/rocksdb/microbench/README.md +60 -0
  439. package/deps/rocksdb/rocksdb/microbench/db_basic_bench.cc +1360 -0
  440. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +153 -0
  441. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +8 -15
  442. package/deps/rocksdb/rocksdb/monitoring/histogram.h +0 -1
  443. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +18 -16
  444. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +9 -7
  445. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +5 -3
  446. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +7 -5
  447. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +37 -12
  448. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +26 -6
  449. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +6 -10
  450. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +14 -13
  451. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +19 -20
  452. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +18 -18
  453. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +84 -2
  454. package/deps/rocksdb/rocksdb/monitoring/statistics.h +6 -0
  455. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -2
  456. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +67 -54
  457. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +4 -1
  458. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +2 -1
  459. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +2 -2
  460. package/deps/rocksdb/rocksdb/options/cf_options.cc +280 -212
  461. package/deps/rocksdb/rocksdb/options/cf_options.h +51 -57
  462. package/deps/rocksdb/rocksdb/options/configurable.cc +242 -138
  463. package/deps/rocksdb/rocksdb/options/configurable_helper.h +4 -68
  464. package/deps/rocksdb/rocksdb/options/configurable_test.cc +144 -21
  465. package/deps/rocksdb/rocksdb/options/configurable_test.h +2 -3
  466. package/deps/rocksdb/rocksdb/options/customizable.cc +67 -7
  467. package/deps/rocksdb/rocksdb/options/customizable_test.cc +1773 -151
  468. package/deps/rocksdb/rocksdb/options/db_options.cc +275 -47
  469. package/deps/rocksdb/rocksdb/options/db_options.h +36 -7
  470. package/deps/rocksdb/rocksdb/options/options.cc +49 -17
  471. package/deps/rocksdb/rocksdb/options/options_helper.cc +369 -352
  472. package/deps/rocksdb/rocksdb/options/options_helper.h +23 -23
  473. package/deps/rocksdb/rocksdb/options/options_parser.cc +18 -13
  474. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +67 -54
  475. package/deps/rocksdb/rocksdb/options/options_test.cc +1162 -187
  476. package/deps/rocksdb/rocksdb/plugin/README.md +43 -0
  477. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -1
  478. package/deps/rocksdb/rocksdb/port/lang.h +52 -0
  479. package/deps/rocksdb/rocksdb/port/port_example.h +1 -1
  480. package/deps/rocksdb/rocksdb/port/port_posix.cc +31 -2
  481. package/deps/rocksdb/rocksdb/port/port_posix.h +20 -2
  482. package/deps/rocksdb/rocksdb/port/stack_trace.cc +20 -4
  483. package/deps/rocksdb/rocksdb/port/sys_time.h +2 -2
  484. package/deps/rocksdb/rocksdb/port/win/env_default.cc +7 -7
  485. package/deps/rocksdb/rocksdb/port/win/env_win.cc +44 -74
  486. package/deps/rocksdb/rocksdb/port/win/env_win.h +25 -23
  487. package/deps/rocksdb/rocksdb/port/win/io_win.cc +32 -34
  488. package/deps/rocksdb/rocksdb/port/win/io_win.h +12 -6
  489. package/deps/rocksdb/rocksdb/port/win/port_win.cc +55 -35
  490. package/deps/rocksdb/rocksdb/port/win/port_win.h +22 -5
  491. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +3 -3
  492. package/deps/rocksdb/rocksdb/port/win/win_logger.h +3 -5
  493. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +7 -1
  494. package/deps/rocksdb/rocksdb/port/win/win_thread.h +12 -17
  495. package/deps/rocksdb/rocksdb/python.mk +9 -0
  496. package/deps/rocksdb/rocksdb/src.mk +82 -34
  497. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +3 -4
  498. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +1 -1
  499. package/deps/rocksdb/rocksdb/table/block_based/block.cc +158 -80
  500. package/deps/rocksdb/rocksdb/table/block_based/block.h +64 -36
  501. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +23 -14
  502. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +13 -5
  503. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +3 -218
  504. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +603 -328
  505. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +28 -22
  506. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +220 -82
  507. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +8 -2
  508. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +3 -4
  509. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +28 -4
  510. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +598 -492
  511. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +151 -96
  512. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +31 -58
  513. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +330 -92
  514. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +50 -19
  515. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +23 -0
  516. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +226 -0
  517. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +56 -22
  518. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +42 -4
  519. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +5 -2
  520. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +2 -0
  521. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +34 -20
  522. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +9 -10
  523. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +26 -3
  524. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -1
  525. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +844 -202
  526. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +281 -81
  527. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +62 -2
  528. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +2 -3
  529. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +28 -7
  530. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +22 -6
  531. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -26
  532. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +1 -1
  533. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +1 -2
  534. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +2 -1
  535. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +11 -4
  536. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +2 -1
  537. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +2 -0
  538. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +68 -26
  539. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +44 -9
  540. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +12 -10
  541. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +3 -4
  542. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +23 -4
  543. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +44 -19
  544. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +5 -1
  545. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +16 -28
  546. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +7 -4
  547. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +2 -2
  548. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +77 -57
  549. package/deps/rocksdb/rocksdb/table/block_fetcher.h +23 -12
  550. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +43 -56
  551. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +8 -8
  552. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +2 -1
  553. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +52 -70
  554. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +5 -8
  555. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +1 -1
  556. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +17 -11
  557. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +2 -3
  558. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +42 -51
  559. package/deps/rocksdb/rocksdb/table/format.cc +258 -104
  560. package/deps/rocksdb/rocksdb/table/format.h +120 -109
  561. package/deps/rocksdb/rocksdb/table/get_context.cc +97 -65
  562. package/deps/rocksdb/rocksdb/table/get_context.h +19 -12
  563. package/deps/rocksdb/rocksdb/table/internal_iterator.h +14 -0
  564. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  565. package/deps/rocksdb/rocksdb/table/merger_test.cc +3 -2
  566. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +11 -21
  567. package/deps/rocksdb/rocksdb/table/merging_iterator.h +3 -3
  568. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +176 -171
  569. package/deps/rocksdb/rocksdb/table/meta_blocks.h +47 -33
  570. package/deps/rocksdb/rocksdb/table/mock_table.cc +7 -9
  571. package/deps/rocksdb/rocksdb/table/mock_table.h +3 -2
  572. package/deps/rocksdb/rocksdb/table/multiget_context.h +15 -8
  573. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +22 -29
  574. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +6 -3
  575. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +5 -8
  576. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +29 -26
  577. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +12 -16
  578. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +145 -69
  579. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +1 -1
  580. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +7 -6
  581. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +3 -4
  582. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +3 -1
  583. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +1 -1
  584. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +13 -18
  585. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +4 -9
  586. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +55 -37
  587. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +10 -5
  588. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +11 -8
  589. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +222 -16
  590. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +106 -58
  591. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +6 -5
  592. package/deps/rocksdb/rocksdb/table/table_builder.h +68 -44
  593. package/deps/rocksdb/rocksdb/table/table_factory.cc +37 -10
  594. package/deps/rocksdb/rocksdb/table/table_properties.cc +109 -54
  595. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +4 -20
  596. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +33 -32
  597. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +2 -0
  598. package/deps/rocksdb/rocksdb/table/table_test.cc +989 -326
  599. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +4 -0
  600. package/deps/rocksdb/rocksdb/table/unique_id.cc +166 -0
  601. package/deps/rocksdb/rocksdb/table/unique_id_impl.h +59 -0
  602. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +1 -1
  603. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +13 -10
  604. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +1 -2
  605. package/deps/rocksdb/rocksdb/test_util/sync_point.h +35 -16
  606. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +32 -10
  607. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +31 -4
  608. package/deps/rocksdb/rocksdb/test_util/testharness.cc +53 -1
  609. package/deps/rocksdb/rocksdb/test_util/testharness.h +67 -3
  610. package/deps/rocksdb/rocksdb/test_util/testutil.cc +236 -66
  611. package/deps/rocksdb/rocksdb/test_util/testutil.h +63 -100
  612. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +12 -1
  613. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +2 -2
  614. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +6 -3
  615. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +1 -0
  616. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +9 -3
  617. package/deps/rocksdb/rocksdb/tools/db_bench.cc +1 -1
  618. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +1420 -611
  619. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +11 -8
  620. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +11 -1
  621. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +4 -2
  622. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +46 -22
  623. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +655 -179
  624. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +58 -6
  625. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +472 -29
  626. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +23 -2
  627. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +2 -2
  628. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +246 -0
  629. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +126 -0
  630. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +83 -29
  631. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +38 -17
  632. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +191 -55
  633. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +219 -296
  634. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +87 -53
  635. package/deps/rocksdb/rocksdb/tools/write_stress.cc +8 -7
  636. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +6 -5
  637. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +5 -4
  638. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +14 -9
  639. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +134 -60
  640. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +49 -38
  641. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +152 -15
  642. package/deps/rocksdb/rocksdb/trace_replay/trace_record.cc +206 -0
  643. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  644. package/deps/rocksdb/rocksdb/trace_replay/trace_record_handler.h +46 -0
  645. package/deps/rocksdb/rocksdb/trace_replay/trace_record_result.cc +146 -0
  646. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +475 -344
  647. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +83 -95
  648. package/deps/rocksdb/rocksdb/util/autovector.h +38 -18
  649. package/deps/rocksdb/rocksdb/util/autovector_test.cc +1 -1
  650. package/deps/rocksdb/rocksdb/util/bloom_impl.h +4 -0
  651. package/deps/rocksdb/rocksdb/util/bloom_test.cc +276 -94
  652. package/deps/rocksdb/rocksdb/util/build_version.cc.in +81 -4
  653. package/deps/rocksdb/rocksdb/util/cast_util.h +22 -0
  654. package/deps/rocksdb/rocksdb/util/channel.h +2 -0
  655. package/deps/rocksdb/rocksdb/util/coding.h +1 -33
  656. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +8 -0
  657. package/deps/rocksdb/rocksdb/util/comparator.cc +163 -3
  658. package/deps/rocksdb/rocksdb/util/compression.cc +122 -0
  659. package/deps/rocksdb/rocksdb/util/compression.h +212 -7
  660. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +1 -3
  661. package/deps/rocksdb/rocksdb/util/crc32c.cc +165 -2
  662. package/deps/rocksdb/rocksdb/util/crc32c.h +6 -0
  663. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +14 -0
  664. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +3 -0
  665. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +47 -0
  666. package/deps/rocksdb/rocksdb/util/defer.h +30 -1
  667. package/deps/rocksdb/rocksdb/util/defer_test.cc +11 -0
  668. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +3 -1
  669. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +3 -3
  670. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +5 -4
  671. package/deps/rocksdb/rocksdb/util/fastrange.h +2 -0
  672. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +36 -0
  673. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +3 -1
  674. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +512 -52
  675. package/deps/rocksdb/rocksdb/util/filter_bench.cc +65 -10
  676. package/deps/rocksdb/rocksdb/util/gflags_compat.h +6 -1
  677. package/deps/rocksdb/rocksdb/util/hash.cc +121 -3
  678. package/deps/rocksdb/rocksdb/util/hash.h +31 -1
  679. package/deps/rocksdb/rocksdb/util/hash128.h +26 -0
  680. package/deps/rocksdb/rocksdb/util/hash_containers.h +51 -0
  681. package/deps/rocksdb/rocksdb/util/hash_test.cc +194 -2
  682. package/deps/rocksdb/rocksdb/util/heap.h +6 -1
  683. package/deps/rocksdb/rocksdb/util/kv_map.h +1 -1
  684. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +8 -6
  685. package/deps/rocksdb/rocksdb/util/math.h +74 -7
  686. package/deps/rocksdb/rocksdb/util/math128.h +13 -1
  687. package/deps/rocksdb/rocksdb/util/murmurhash.h +3 -3
  688. package/deps/rocksdb/rocksdb/util/random.cc +9 -0
  689. package/deps/rocksdb/rocksdb/util/random.h +6 -0
  690. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +298 -144
  691. package/deps/rocksdb/rocksdb/util/rate_limiter.h +68 -19
  692. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +335 -23
  693. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +10 -12
  694. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +18 -15
  695. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +98 -74
  696. package/deps/rocksdb/rocksdb/util/ribbon_config.cc +506 -0
  697. package/deps/rocksdb/rocksdb/util/ribbon_config.h +182 -0
  698. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +154 -79
  699. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +742 -365
  700. package/deps/rocksdb/rocksdb/util/set_comparator.h +2 -0
  701. package/deps/rocksdb/rocksdb/util/slice.cc +198 -35
  702. package/deps/rocksdb/rocksdb/util/slice_test.cc +30 -1
  703. package/deps/rocksdb/rocksdb/util/status.cc +32 -29
  704. package/deps/rocksdb/rocksdb/util/stop_watch.h +18 -18
  705. package/deps/rocksdb/rocksdb/util/string_util.cc +85 -6
  706. package/deps/rocksdb/rocksdb/util/string_util.h +47 -2
  707. package/deps/rocksdb/rocksdb/util/thread_guard.h +41 -0
  708. package/deps/rocksdb/rocksdb/util/thread_local.h +2 -2
  709. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +22 -24
  710. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +7 -6
  711. package/deps/rocksdb/rocksdb/util/timer.h +55 -46
  712. package/deps/rocksdb/rocksdb/util/timer_test.cc +50 -48
  713. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +4 -0
  714. package/deps/rocksdb/rocksdb/util/vector_iterator.h +31 -15
  715. package/deps/rocksdb/rocksdb/util/work_queue.h +2 -0
  716. package/deps/rocksdb/rocksdb/util/xxhash.cc +35 -1144
  717. package/deps/rocksdb/rocksdb/util/xxhash.h +5117 -373
  718. package/deps/rocksdb/rocksdb/util/xxph3.h +1762 -0
  719. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  720. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge.h +49 -0
  721. package/deps/rocksdb/rocksdb/utilities/agg_merge/agg_merge_test.cc +134 -0
  722. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  723. package/deps/rocksdb/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  724. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3164 -0
  725. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_impl.h +29 -0
  726. package/deps/rocksdb/rocksdb/utilities/{backupable/backupable_db_test.cc → backup/backup_engine_test.cc} +1679 -485
  727. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +6 -4
  728. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +14 -9
  729. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +2 -0
  730. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +1 -0
  731. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +4 -0
  732. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +37 -27
  733. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +8 -4
  734. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +1 -1
  735. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +13 -10
  736. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +5 -0
  737. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +44 -25
  738. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +3 -4
  739. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +27 -19
  740. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +4 -2
  741. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +69 -0
  742. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +489 -0
  743. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +366 -0
  744. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +67 -4
  745. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +21 -6
  746. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +107 -7
  747. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_options.h +43 -0
  748. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +1 -1
  749. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +24 -8
  750. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +7 -7
  751. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +5 -0
  752. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +99 -218
  753. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +8 -24
  754. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +114 -1
  755. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +6 -2
  756. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -4
  757. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +7 -6
  758. package/deps/rocksdb/rocksdb/utilities/compaction_filters.cc +56 -0
  759. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +2 -2
  760. package/deps/rocksdb/rocksdb/utilities/counted_fs.cc +355 -0
  761. package/deps/rocksdb/rocksdb/utilities/counted_fs.h +152 -0
  762. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +13 -0
  763. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +164 -122
  764. package/deps/rocksdb/rocksdb/utilities/env_timed.h +97 -0
  765. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +75 -17
  766. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +19 -3
  767. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +539 -126
  768. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +162 -17
  769. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +110 -0
  770. package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +94 -0
  771. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +5 -2
  772. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +104 -0
  773. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +5 -3
  774. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +4 -1
  775. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +11 -3
  776. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +0 -2
  777. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +5 -1
  778. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +29 -10
  779. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +6 -3
  780. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +29 -14
  781. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +6 -3
  782. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +71 -18
  783. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +15 -9
  784. package/deps/rocksdb/rocksdb/utilities/merge_operators.cc +120 -0
  785. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +3 -23
  786. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +267 -42
  787. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +702 -76
  788. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +1 -1
  789. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +26 -5
  790. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +1 -1
  791. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +124 -1
  792. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +2 -3
  793. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +8 -9
  794. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +15 -13
  795. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +1 -1
  796. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +4 -4
  797. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +2 -2
  798. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +8 -9
  799. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
  800. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +6 -3
  801. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +2 -2
  802. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +3 -0
  803. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +2 -0
  804. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +43 -35
  805. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +20 -18
  806. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +107 -2
  807. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +23 -15
  808. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +2 -2
  809. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +316 -0
  810. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.h +86 -0
  811. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +4 -5
  812. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +4 -3
  813. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +1 -1
  814. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +119 -3
  815. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +20 -3
  816. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +20 -0
  817. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +3 -2
  818. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +4 -0
  819. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +38 -14
  820. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +17 -10
  821. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +1 -0
  822. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1 -2
  823. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +423 -34
  824. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +82 -2
  825. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +72 -40
  826. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +32 -1
  827. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +13 -5
  828. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +7 -3
  829. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +207 -43
  830. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +50 -7
  831. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +28 -10
  832. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +11 -6
  833. package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +516 -0
  834. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +506 -15
  835. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +27 -13
  836. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +14 -14
  837. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +3 -0
  838. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +2 -2
  839. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +14 -5
  840. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +305 -27
  841. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +55 -159
  842. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +209 -2
  843. package/deps/rocksdb/rocksdb/utilities/wal_filter.cc +23 -0
  844. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +157 -88
  845. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +501 -114
  846. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +91 -316
  847. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1212 -672
  848. package/deps/rocksdb/rocksdb.gyp +425 -446
  849. package/package.json +8 -8
  850. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  851. package/prebuilds/darwin-x86/node.napi.node +0 -0
  852. package/prebuilds/{darwin-x64+arm64 → linux-x64}/node.napi.node +0 -0
  853. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +0 -648
  854. package/deps/rocksdb/rocksdb/hdfs/README +0 -23
  855. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +0 -386
  856. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +0 -535
  857. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +0 -175
  858. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +0 -34
  859. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +0 -102
  860. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +0 -49
  861. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +0 -44
  862. package/deps/rocksdb/rocksdb/options/customizable_helper.h +0 -216
  863. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +0 -27
  864. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +0 -45
  865. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +0 -166
  866. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +0 -570
  867. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +0 -92
  868. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +0 -54
  869. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +0 -152
  870. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +0 -59
  871. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +0 -141
  872. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +0 -33
  873. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +0 -74
  874. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +0 -117
  875. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +0 -263
  876. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +0 -96
  877. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +0 -40
  878. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +0 -29
  879. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +0 -144
  880. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +0 -30
  881. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +0 -51
  882. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +0 -28
  883. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +0 -10
  884. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +0 -26
  885. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +0 -138
  886. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +0 -23
  887. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +0 -57
  888. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +0 -260
  889. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +0 -52
  890. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +0 -328
  891. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +0 -1703
  892. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +0 -16
  893. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +0 -304
  894. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +0 -39
  895. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +0 -26
  896. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +0 -318
  897. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +0 -57
  898. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +0 -219
  899. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +0 -207
  900. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +0 -164
  901. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +0 -57
  902. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +0 -77
  903. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/test/DistributedMutexTest.cpp +0 -1145
  904. package/deps/rocksdb/rocksdb/util/build_version.h +0 -15
  905. package/deps/rocksdb/rocksdb/util/xxh3p.h +0 -1392
  906. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +0 -2354
  907. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +0 -1497
  908. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +0 -1146
  909. package/prebuilds/linux-x64/node.napi.glibc.node +0 -0
@@ -17,12 +17,16 @@
17
17
  #pragma once
18
18
 
19
19
  #include <stdint.h>
20
+
20
21
  #include <cstdarg>
21
22
  #include <functional>
22
23
  #include <limits>
23
24
  #include <memory>
24
25
  #include <string>
25
26
  #include <vector>
27
+
28
+ #include "rocksdb/customizable.h"
29
+ #include "rocksdb/functor_wrapper.h"
26
30
  #include "rocksdb/status.h"
27
31
  #include "rocksdb/thread_status.h"
28
32
 
@@ -35,7 +39,7 @@
35
39
 
36
40
  #if defined(__GNUC__) || defined(__clang__)
37
41
  #define ROCKSDB_PRINTF_FORMAT_ATTR(format_param, dots_param) \
38
- __attribute__((__format__(__printf__, format_param, dots_param)))
42
+ __attribute__((__format__(__printf__, format_param, dots_param)))
39
43
  #else
40
44
  #define ROCKSDB_PRINTF_FORMAT_ATTR(format_param, dots_param)
41
45
  #endif
@@ -48,6 +52,7 @@ class Logger;
48
52
  class RandomAccessFile;
49
53
  class SequentialFile;
50
54
  class Slice;
55
+ struct DataVerificationInfo;
51
56
  class WritableFile;
52
57
  class RandomRWFile;
53
58
  class MemoryMappedFileBuffer;
@@ -59,6 +64,8 @@ class RateLimiter;
59
64
  class ThreadStatusUpdater;
60
65
  struct ThreadStatus;
61
66
  class FileSystem;
67
+ class SystemClock;
68
+ struct ConfigOptions;
62
69
 
63
70
  const size_t kDefaultPageSize = 4 * 1024;
64
71
 
@@ -77,7 +84,8 @@ struct EnvOptions {
77
84
  // Construct from Options
78
85
  explicit EnvOptions(const DBOptions& options);
79
86
 
80
- // If true, then use mmap to read data
87
+ // If true, then use mmap to read data.
88
+ // Not recommended for 32-bit OS.
81
89
  bool use_mmap_reads = false;
82
90
 
83
91
  // If true, then use mmap to write data
@@ -139,8 +147,12 @@ struct EnvOptions {
139
147
  RateLimiter* rate_limiter = nullptr;
140
148
  };
141
149
 
142
- class Env {
150
+ // Exceptions MUST NOT propagate out of overridden functions into RocksDB,
151
+ // because RocksDB is not exception-safe. This could cause undefined behavior
152
+ // including data loss, unreported corruption, deadlocks, and more.
153
+ class Env : public Customizable {
143
154
  public:
155
+ static const char* kDefaultName() { return "DefaultEnv"; }
144
156
  struct FileAttributes {
145
157
  // File name
146
158
  std::string name;
@@ -150,23 +162,62 @@ class Env {
150
162
  };
151
163
 
152
164
  Env();
153
- // Construct an Env with a separate FileSystem implementation
154
- Env(std::shared_ptr<FileSystem> fs);
165
+ // Construct an Env with a separate FileSystem and/or SystemClock
166
+ // implementation
167
+ explicit Env(const std::shared_ptr<FileSystem>& fs);
168
+ Env(const std::shared_ptr<FileSystem>& fs,
169
+ const std::shared_ptr<SystemClock>& clock);
155
170
  // No copying allowed
156
171
  Env(const Env&) = delete;
157
172
  void operator=(const Env&) = delete;
158
173
 
159
- virtual ~Env();
174
+ ~Env() override;
160
175
 
161
176
  static const char* Type() { return "Environment"; }
162
177
 
178
+ // Deprecated. Will be removed in a major release. Derived classes
179
+ // should implement this method.
180
+ const char* Name() const override { return ""; }
181
+
163
182
  // Loads the environment specified by the input value into the result
183
+ // The CreateFromString alternative should be used; this method may be
184
+ // deprecated in a future release.
164
185
  static Status LoadEnv(const std::string& value, Env** result);
165
186
 
166
187
  // Loads the environment specified by the input value into the result
188
+ // The CreateFromString alternative should be used; this method may be
189
+ // deprecated in a future release.
167
190
  static Status LoadEnv(const std::string& value, Env** result,
168
191
  std::shared_ptr<Env>* guard);
169
192
 
193
+ // Loads the environment specified by the input value into the result
194
+ // @see Customizable for a more detailed description of the parameters and
195
+ // return codes
196
+ //
197
+ // @param config_options Controls how the environment is loaded.
198
+ // @param value the name and associated properties for the environment.
199
+ // @param result On success, the environment that was loaded.
200
+ // @param guard If specified and the loaded environment is not static,
201
+ // this value will contain the loaded environment (guard.get() ==
202
+ // result).
203
+ // @return OK If the environment was successfully loaded (and optionally
204
+ // prepared)
205
+ // @return not-OK if the load failed.
206
+ static Status CreateFromString(const ConfigOptions& config_options,
207
+ const std::string& value, Env** result);
208
+ static Status CreateFromString(const ConfigOptions& config_options,
209
+ const std::string& value, Env** result,
210
+ std::shared_ptr<Env>* guard);
211
+
212
+ // Loads the environment specified by the env and fs uri.
213
+ // If both are specified, an error is returned.
214
+ // Otherwise, the environment is created by loading (via CreateFromString)
215
+ // the appropriate env/fs from the corresponding values.
216
+ static Status CreateFromUri(const ConfigOptions& options,
217
+ const std::string& env_uri,
218
+ const std::string& fs_uri, Env** result,
219
+ std::shared_ptr<Env>* guard);
220
+
170
221
  // Return a default environment suitable for the current operating
171
222
  // system. Sophisticated users may wish to provide their own Env
172
223
  // implementation instead of relying on this default environment.
@@ -225,11 +276,12 @@ class Env {
225
276
  std::unique_ptr<WritableFile>* result,
226
277
  const EnvOptions& options) = 0;
227
278
 
228
- // Create an object that writes to a new file with the specified
229
- // name. Deletes any existing file with the same name and creates a
230
- // new file. On success, stores a pointer to the new file in
231
- // *result and returns OK. On failure stores nullptr in *result and
232
- // returns non-OK.
279
+ // Create an object that writes to a file with the specified name.
280
+ // `WritableFile::Append()`s will append after any existing content. If the
281
+ // file does not already exist, creates it.
282
+ //
283
+ // On success, stores a pointer to the file in *result and returns OK. On
284
+ // failure stores nullptr in *result and returns non-OK.
233
285
  //
234
286
  // The returned file will only be accessed by one thread at a time.
235
287
  virtual Status ReopenWritableFile(const std::string& /*fname*/,
@@ -393,7 +445,13 @@ class Env {
393
445
  static std::string PriorityToString(Priority priority);
394
446
 
395
447
  // Priority for requesting bytes in rate limiter scheduler
396
- enum IOPriority { IO_LOW = 0, IO_HIGH = 1, IO_TOTAL = 2 };
448
+ enum IOPriority {
449
+ IO_LOW = 0,
450
+ IO_MID = 1,
451
+ IO_HIGH = 2,
452
+ IO_USER = 3,
453
+ IO_TOTAL = 4
454
+ };
397
455
 
398
456
  // Arrange to run "(*function)(arg)" once in a background thread, in
399
457
  // the thread pool specified by pri. By default, jobs go to the 'LOW'
@@ -417,6 +475,21 @@ class Env {
417
475
  // When "function(arg)" returns, the thread will be destroyed.
418
476
  virtual void StartThread(void (*function)(void* arg), void* arg) = 0;
419
477
 
478
+ // Start a new thread, invoking "function(args...)" within the new thread.
479
+ // When "function(args...)" returns, the thread will be destroyed.
480
+ template <typename FunctionT, typename... Args>
481
+ void StartThreadTyped(FunctionT function, Args&&... args) {
482
+ using FWType = FunctorWrapper<Args...>;
483
+ StartThread(
484
+ [](void* arg) {
485
+ auto* functor = static_cast<FWType*>(arg);
486
+ functor->invoke();
487
+ delete functor;
488
+ },
489
+ new FWType(std::function<void(Args...)>(function),
490
+ std::forward<Args>(args)...));
491
+ }
492
+
420
493
  // Wait for all threads started by StartThread to terminate.
421
494
  virtual void WaitForJoin() {}
422
495
 
@@ -432,7 +505,7 @@ class Env {
432
505
  virtual Status GetTestDirectory(std::string* path) = 0;
433
506
 
434
507
  // Create and returns a default logger (an instance of EnvLogger) for storing
435
- // informational messages. Derived classes can overide to provide custom
508
+ // informational messages. Derived classes can override to provide custom
436
509
  // logger.
437
510
  virtual Status NewLogger(const std::string& fname,
438
511
  std::shared_ptr<Logger>* result);
@@ -503,7 +576,10 @@ class Env {
503
576
  // Converts seconds-since-Jan-01-1970 to a printable string
504
577
  virtual std::string TimeToString(uint64_t time) = 0;
505
578
 
506
- // Generates a unique id that can be used to identify a db
579
+ // Generates a human-readable unique ID that can be used to identify a DB.
580
+ // In built-in implementations, this is an RFC-4122 UUID string, but might
581
+ // not be in all implementations. Overriding is not recommended.
582
+ // NOTE: this has not be validated for use in cryptography
507
583
  virtual std::string GenerateUniqueId();
508
584
 
509
585
  // OptimizeForLogWrite will create a new EnvOptions object that is a copy of
@@ -541,6 +617,13 @@ class Env {
541
617
  const EnvOptions& env_options,
542
618
  const ImmutableDBOptions& db_options) const;
543
619
 
620
+ // OptimizeForBlobFileRead will create a new EnvOptions object that
621
+ // is a copy of the EnvOptions in the parameters, but is optimized for reading
622
+ // blob files.
623
+ virtual EnvOptions OptimizeForBlobFileRead(
624
+ const EnvOptions& env_options,
625
+ const ImmutableDBOptions& db_options) const;
626
+
544
627
  // Returns the status of all threads that belong to the current Env.
545
628
  virtual Status GetThreadList(std::vector<ThreadStatus>* /*thread_list*/) {
546
629
  return Status::NotSupported("Env::GetThreadList() not supported.");
@@ -576,6 +659,10 @@ class Env {
576
659
  // could be a fully implemented one, or a wrapper class around the Env
577
660
  const std::shared_ptr<FileSystem>& GetFileSystem() const;
578
661
 
662
+ // Get the SystemClock implementation this Env was constructed with. It
663
+ // could be a fully implemented one, or a wrapper class around the Env
664
+ const std::shared_ptr<SystemClock>& GetSystemClock() const;
665
+
579
666
  // If you're adding methods here, remember to add them to EnvWrapper too.
580
667
 
581
668
  protected:
@@ -586,6 +673,9 @@ class Env {
586
673
  // Pointer to the underlying FileSystem implementation
587
674
  std::shared_ptr<FileSystem> file_system_;
588
675
 
676
+ // Pointer to the underlying SystemClock implementation
677
+ std::shared_ptr<SystemClock> system_clock_;
678
+
589
679
  private:
590
680
  static const size_t kMaxHostNameLen = 256;
591
681
  };
@@ -608,6 +698,10 @@ class SequentialFile {
608
698
  // "scratch[0..n-1]" must be live when "*result" is used.
609
699
  // If an error was encountered, returns a non-OK status.
610
700
  //
701
+ // After call, result->size() < n only if end of file has been
702
+ // reached (or non-OK status). Read might fail if called again after
703
+ // first result->size() < n.
704
+ //
611
705
  // REQUIRES: External synchronization
612
706
  virtual Status Read(size_t n, Slice* result, char* scratch) = 0;
613
707
 
@@ -653,7 +747,8 @@ struct ReadRequest {
653
747
  // File offset in bytes
654
748
  uint64_t offset;
655
749
 
656
- // Length to read in bytes
750
+ // Length to read in bytes. `result` only returns fewer bytes if end of file
751
+ // is hit (or `status` is not OK).
657
752
  size_t len;
658
753
 
659
754
  // A buffer that MultiRead() can optionally place data in. It can
@@ -682,6 +777,10 @@ class RandomAccessFile {
682
777
  // "*result" is used. If an error was encountered, returns a non-OK
683
778
  // status.
684
779
  //
780
+ // After call, result->size() < n only if end of file has been
781
+ // reached (or non-OK status). Read might fail if called again after
782
+ // first result->size() < n.
783
+ //
685
784
  // Safe for concurrent use by multiple threads.
686
785
  // If Direct I/O enabled, offset, n, and scratch should be aligned properly.
687
786
  virtual Status Read(uint64_t offset, size_t n, Slice* result,
@@ -777,10 +876,22 @@ class WritableFile {
777
876
  virtual ~WritableFile();
778
877
 
779
878
  // Append data to the end of the file
780
- // Note: A WriteabelFile object must support either Append or
879
+ // Note: A WriteableFile object must support either Append or
781
880
  // PositionedAppend, so the users cannot mix the two.
782
881
  virtual Status Append(const Slice& data) = 0;
783
882
 
883
+ // Append data with verification information.
884
+ // Note that this API change is experimental and it might be changed in
885
+ // the future. Currently, RocksDB only generates crc32c based checksum for
886
+ // the file writes when the checksum handoff option is set.
887
+ // Expected behavior: if currently ChecksumType::kCRC32C is not supported by
888
+ // WritableFile, the information in DataVerificationInfo can be ignored
889
+ // (i.e. does not perform checksum verification).
890
+ virtual Status Append(const Slice& data,
891
+ const DataVerificationInfo& /* verification_info */) {
892
+ return Append(data);
893
+ }
894
+
784
895
  // PositionedAppend data to the specified offset. The new EOF after append
785
896
  // must be larger than the previous EOF. This is to be used when writes are
786
897
  // not backed by OS buffers and hence has to always start from the start of
@@ -807,6 +918,19 @@ class WritableFile {
807
918
  "WritableFile::PositionedAppend() not supported.");
808
919
  }
809
920
 
921
+ // PositionedAppend data with verification information.
922
+ // Note that this API change is experimental and it might be changed in
923
+ // the future. Currently, RocksDB only generates crc32c based checksum for
924
+ // the file writes when the checksum handoff option is set.
925
+ // Expected behavior: if currently ChecksumType::kCRC32C is not supported by
926
+ // WritableFile, the information in DataVerificationInfo can be ignored
927
+ // (i.e. does not perform checksum verification).
928
+ virtual Status PositionedAppend(
929
+ const Slice& /* data */, uint64_t /* offset */,
930
+ const DataVerificationInfo& /* verification_info */) {
931
+ return Status::NotSupported("PositionedAppend");
932
+ }
933
+
810
934
  // Truncate is necessary to trim the file to the correct size
811
935
  // before closing. It is not always possible to keep track of the file
812
936
  // size due to whole pages writes. The behavior is undefined if called
@@ -835,8 +959,16 @@ class WritableFile {
835
959
  // Use the returned alignment value to allocate
836
960
  // aligned buffer for Direct I/O
837
961
  virtual size_t GetRequiredBufferAlignment() const { return kDefaultPageSize; }
962
+
838
963
  /*
839
- * Change the priority in rate limiter if rate limiting is enabled.
964
+ * If rate limiting is enabled, change the file-granularity priority used in
965
+ * rate-limiting writes.
966
+ *
967
+ * In the presence of finer-granularity priority such as
968
+ * `WriteOptions::rate_limiter_priority`, this file-granularity priority may
969
+ * be overridden by a non-Env::IO_TOTAL finer-granularity priority and used as
970
+ * a fallback for Env::IO_TOTAL finer-granularity priority.
971
+ *
840
972
  * If rate limiting is not enabled, this call has no effect.
841
973
  */
842
974
  virtual void SetIOPriority(Env::IOPriority pri) { io_priority_ = pri; }
@@ -966,6 +1098,11 @@ class RandomRWFile {
966
1098
 
967
1099
  // Read up to `n` bytes starting from offset `offset` and store them in
968
1100
  // result, provided `scratch` size should be at least `n`.
1101
+ //
1102
+ // After call, result->size() < n only if end of file has been
1103
+ // reached (or non-OK status). Read might fail if called again after
1104
+ // first result->size() < n.
1105
+ //
969
1106
  // Returns Status::OK() on success.
970
1107
  virtual Status Read(uint64_t offset, size_t n, Slice* result,
971
1108
  char* scratch) const = 0;
@@ -1031,6 +1168,10 @@ enum InfoLogLevel : unsigned char {
1031
1168
  };
1032
1169
 
1033
1170
  // An interface for writing log messages.
1171
+ //
1172
+ // Exceptions MUST NOT propagate out of overridden functions into RocksDB,
1173
+ // because RocksDB is not exception-safe. This could cause undefined behavior
1174
+ // including data loss, unreported corruption, deadlocks, and more.
1034
1175
  class Logger {
1035
1176
  public:
1036
1177
  size_t kDoNotSupportGetLogFileSize = (std::numeric_limits<size_t>::max)();
@@ -1091,7 +1232,9 @@ class Logger {
1091
1232
  InfoLogLevel log_level_;
1092
1233
  };
1093
1234
 
1094
- // Identifies a locked file.
1235
+ // Identifies a locked file. Except in custom Env/Filesystem implementations,
1236
+ // the lifetime of a FileLock object should be managed only by LockFile() and
1237
+ // UnlockFile().
1095
1238
  class FileLock {
1096
1239
  public:
1097
1240
  FileLock() {}
@@ -1211,248 +1354,297 @@ extern Status ReadFileToString(Env* env, const std::string& fname,
1211
1354
  // functionality of another Env.
1212
1355
  class EnvWrapper : public Env {
1213
1356
  public:
1357
+ // The Target struct allows an Env to be stored as a raw (Env*) or
1358
+ // std::shared_ptr<Env>. By using this struct, the wrapping/calling
1359
+ // class does not need to worry about the ownership/lifetime of the
1360
+ // wrapped target env. If the guard is set, then the Env will point
1361
+ // to the guard.get().
1362
+ struct Target {
1363
+ Env* env; // The raw Env
1364
+ std::shared_ptr<Env> guard; // The guarded Env
1365
+
1366
+ // Creates a Target without assuming ownership of the target Env
1367
+ explicit Target(Env* t) : env(t) {}
1368
+
1369
+ // Creates a Target from the guarded env, assuming ownership
1370
+ explicit Target(std::unique_ptr<Env>&& t) : guard(t.release()) {
1371
+ env = guard.get();
1372
+ }
1373
+
1374
+ // Creates a Target from the guarded env, assuming ownership
1375
+ explicit Target(const std::shared_ptr<Env>& t) : guard(t) {
1376
+ env = guard.get();
1377
+ }
1378
+
1379
+ // Makes sure the raw Env is not nullptr
1380
+ void Prepare() {
1381
+ if (guard.get() != nullptr) {
1382
+ env = guard.get();
1383
+ } else if (env == nullptr) {
1384
+ env = Env::Default();
1385
+ }
1386
+ }
1387
+ };
1388
+
1214
1389
  // Initialize an EnvWrapper that delegates all calls to *t
1215
- explicit EnvWrapper(Env* t) : target_(t) {}
1390
+ explicit EnvWrapper(Env* t);
1391
+ explicit EnvWrapper(std::unique_ptr<Env>&& t);
1392
+ explicit EnvWrapper(const std::shared_ptr<Env>& t);
1216
1393
  ~EnvWrapper() override;
1217
1394
 
1218
1395
  // Return the target to which this Env forwards all calls
1219
- Env* target() const { return target_; }
1396
+ Env* target() const { return target_.env; }
1397
+
1398
+ // Deprecated. Will be removed in a major release. Derived classes
1399
+ // should implement this method.
1400
+ const char* Name() const override { return target_.env->Name(); }
1220
1401
 
1221
1402
  // The following text is boilerplate that forwards all methods to target()
1222
1403
  Status RegisterDbPaths(const std::vector<std::string>& paths) override {
1223
- return target_->RegisterDbPaths(paths);
1404
+ return target_.env->RegisterDbPaths(paths);
1224
1405
  }
1225
1406
 
1226
1407
  Status UnregisterDbPaths(const std::vector<std::string>& paths) override {
1227
- return target_->UnregisterDbPaths(paths);
1408
+ return target_.env->UnregisterDbPaths(paths);
1228
1409
  }
1229
1410
 
1230
1411
  Status NewSequentialFile(const std::string& f,
1231
1412
  std::unique_ptr<SequentialFile>* r,
1232
1413
  const EnvOptions& options) override {
1233
- return target_->NewSequentialFile(f, r, options);
1414
+ return target_.env->NewSequentialFile(f, r, options);
1234
1415
  }
1235
1416
  Status NewRandomAccessFile(const std::string& f,
1236
1417
  std::unique_ptr<RandomAccessFile>* r,
1237
1418
  const EnvOptions& options) override {
1238
- return target_->NewRandomAccessFile(f, r, options);
1419
+ return target_.env->NewRandomAccessFile(f, r, options);
1239
1420
  }
1240
1421
  Status NewWritableFile(const std::string& f, std::unique_ptr<WritableFile>* r,
1241
1422
  const EnvOptions& options) override {
1242
- return target_->NewWritableFile(f, r, options);
1423
+ return target_.env->NewWritableFile(f, r, options);
1243
1424
  }
1244
1425
  Status ReopenWritableFile(const std::string& fname,
1245
1426
  std::unique_ptr<WritableFile>* result,
1246
1427
  const EnvOptions& options) override {
1247
- return target_->ReopenWritableFile(fname, result, options);
1428
+ return target_.env->ReopenWritableFile(fname, result, options);
1248
1429
  }
1249
1430
  Status ReuseWritableFile(const std::string& fname,
1250
1431
  const std::string& old_fname,
1251
1432
  std::unique_ptr<WritableFile>* r,
1252
1433
  const EnvOptions& options) override {
1253
- return target_->ReuseWritableFile(fname, old_fname, r, options);
1434
+ return target_.env->ReuseWritableFile(fname, old_fname, r, options);
1254
1435
  }
1255
1436
  Status NewRandomRWFile(const std::string& fname,
1256
1437
  std::unique_ptr<RandomRWFile>* result,
1257
1438
  const EnvOptions& options) override {
1258
- return target_->NewRandomRWFile(fname, result, options);
1439
+ return target_.env->NewRandomRWFile(fname, result, options);
1259
1440
  }
1260
1441
  Status NewMemoryMappedFileBuffer(
1261
1442
  const std::string& fname,
1262
1443
  std::unique_ptr<MemoryMappedFileBuffer>* result) override {
1263
- return target_->NewMemoryMappedFileBuffer(fname, result);
1444
+ return target_.env->NewMemoryMappedFileBuffer(fname, result);
1264
1445
  }
1265
1446
  Status NewDirectory(const std::string& name,
1266
1447
  std::unique_ptr<Directory>* result) override {
1267
- return target_->NewDirectory(name, result);
1448
+ return target_.env->NewDirectory(name, result);
1268
1449
  }
1269
1450
  Status FileExists(const std::string& f) override {
1270
- return target_->FileExists(f);
1451
+ return target_.env->FileExists(f);
1271
1452
  }
1272
1453
  Status GetChildren(const std::string& dir,
1273
1454
  std::vector<std::string>* r) override {
1274
- return target_->GetChildren(dir, r);
1455
+ return target_.env->GetChildren(dir, r);
1275
1456
  }
1276
1457
  Status GetChildrenFileAttributes(
1277
1458
  const std::string& dir, std::vector<FileAttributes>* result) override {
1278
- return target_->GetChildrenFileAttributes(dir, result);
1459
+ return target_.env->GetChildrenFileAttributes(dir, result);
1279
1460
  }
1280
1461
  Status DeleteFile(const std::string& f) override {
1281
- return target_->DeleteFile(f);
1462
+ return target_.env->DeleteFile(f);
1282
1463
  }
1283
1464
  Status Truncate(const std::string& fname, size_t size) override {
1284
- return target_->Truncate(fname, size);
1465
+ return target_.env->Truncate(fname, size);
1285
1466
  }
1286
1467
  Status CreateDir(const std::string& d) override {
1287
- return target_->CreateDir(d);
1468
+ return target_.env->CreateDir(d);
1288
1469
  }
1289
1470
  Status CreateDirIfMissing(const std::string& d) override {
1290
- return target_->CreateDirIfMissing(d);
1471
+ return target_.env->CreateDirIfMissing(d);
1291
1472
  }
1292
1473
  Status DeleteDir(const std::string& d) override {
1293
- return target_->DeleteDir(d);
1474
+ return target_.env->DeleteDir(d);
1294
1475
  }
1295
1476
  Status GetFileSize(const std::string& f, uint64_t* s) override {
1296
- return target_->GetFileSize(f, s);
1477
+ return target_.env->GetFileSize(f, s);
1297
1478
  }
1298
1479
 
1299
1480
  Status GetFileModificationTime(const std::string& fname,
1300
1481
  uint64_t* file_mtime) override {
1301
- return target_->GetFileModificationTime(fname, file_mtime);
1482
+ return target_.env->GetFileModificationTime(fname, file_mtime);
1302
1483
  }
1303
1484
 
1304
1485
  Status RenameFile(const std::string& s, const std::string& t) override {
1305
- return target_->RenameFile(s, t);
1486
+ return target_.env->RenameFile(s, t);
1306
1487
  }
1307
1488
 
1308
1489
  Status LinkFile(const std::string& s, const std::string& t) override {
1309
- return target_->LinkFile(s, t);
1490
+ return target_.env->LinkFile(s, t);
1310
1491
  }
1311
1492
 
1312
1493
  Status NumFileLinks(const std::string& fname, uint64_t* count) override {
1313
- return target_->NumFileLinks(fname, count);
1494
+ return target_.env->NumFileLinks(fname, count);
1314
1495
  }
1315
1496
 
1316
1497
  Status AreFilesSame(const std::string& first, const std::string& second,
1317
1498
  bool* res) override {
1318
- return target_->AreFilesSame(first, second, res);
1499
+ return target_.env->AreFilesSame(first, second, res);
1319
1500
  }
1320
1501
 
1321
1502
  Status LockFile(const std::string& f, FileLock** l) override {
1322
- return target_->LockFile(f, l);
1503
+ return target_.env->LockFile(f, l);
1323
1504
  }
1324
1505
 
1325
- Status UnlockFile(FileLock* l) override { return target_->UnlockFile(l); }
1506
+ Status UnlockFile(FileLock* l) override { return target_.env->UnlockFile(l); }
1326
1507
 
1327
1508
  Status IsDirectory(const std::string& path, bool* is_dir) override {
1328
- return target_->IsDirectory(path, is_dir);
1509
+ return target_.env->IsDirectory(path, is_dir);
1329
1510
  }
1330
1511
 
1331
1512
  Status LoadLibrary(const std::string& lib_name,
1332
1513
  const std::string& search_path,
1333
1514
  std::shared_ptr<DynamicLibrary>* result) override {
1334
- return target_->LoadLibrary(lib_name, search_path, result);
1515
+ return target_.env->LoadLibrary(lib_name, search_path, result);
1335
1516
  }
1336
1517
 
1337
1518
  void Schedule(void (*f)(void* arg), void* a, Priority pri,
1338
1519
  void* tag = nullptr, void (*u)(void* arg) = nullptr) override {
1339
- return target_->Schedule(f, a, pri, tag, u);
1520
+ return target_.env->Schedule(f, a, pri, tag, u);
1340
1521
  }
1341
1522
 
1342
1523
  int UnSchedule(void* tag, Priority pri) override {
1343
- return target_->UnSchedule(tag, pri);
1524
+ return target_.env->UnSchedule(tag, pri);
1344
1525
  }
1345
1526
 
1346
1527
  void StartThread(void (*f)(void*), void* a) override {
1347
- return target_->StartThread(f, a);
1528
+ return target_.env->StartThread(f, a);
1348
1529
  }
1349
- void WaitForJoin() override { return target_->WaitForJoin(); }
1530
+ void WaitForJoin() override { return target_.env->WaitForJoin(); }
1350
1531
  unsigned int GetThreadPoolQueueLen(Priority pri = LOW) const override {
1351
- return target_->GetThreadPoolQueueLen(pri);
1532
+ return target_.env->GetThreadPoolQueueLen(pri);
1352
1533
  }
1353
1534
  Status GetTestDirectory(std::string* path) override {
1354
- return target_->GetTestDirectory(path);
1535
+ return target_.env->GetTestDirectory(path);
1355
1536
  }
1356
1537
  Status NewLogger(const std::string& fname,
1357
1538
  std::shared_ptr<Logger>* result) override {
1358
- return target_->NewLogger(fname, result);
1539
+ return target_.env->NewLogger(fname, result);
1359
1540
  }
1360
- uint64_t NowMicros() override { return target_->NowMicros(); }
1361
- uint64_t NowNanos() override { return target_->NowNanos(); }
1362
- uint64_t NowCPUNanos() override { return target_->NowCPUNanos(); }
1541
+ uint64_t NowMicros() override { return target_.env->NowMicros(); }
1542
+ uint64_t NowNanos() override { return target_.env->NowNanos(); }
1543
+ uint64_t NowCPUNanos() override { return target_.env->NowCPUNanos(); }
1363
1544
 
1364
1545
  void SleepForMicroseconds(int micros) override {
1365
- target_->SleepForMicroseconds(micros);
1546
+ target_.env->SleepForMicroseconds(micros);
1366
1547
  }
1367
1548
  Status GetHostName(char* name, uint64_t len) override {
1368
- return target_->GetHostName(name, len);
1549
+ return target_.env->GetHostName(name, len);
1369
1550
  }
1370
1551
  Status GetCurrentTime(int64_t* unix_time) override {
1371
- return target_->GetCurrentTime(unix_time);
1552
+ return target_.env->GetCurrentTime(unix_time);
1372
1553
  }
1373
1554
  Status GetAbsolutePath(const std::string& db_path,
1374
1555
  std::string* output_path) override {
1375
- return target_->GetAbsolutePath(db_path, output_path);
1556
+ return target_.env->GetAbsolutePath(db_path, output_path);
1376
1557
  }
1377
1558
  void SetBackgroundThreads(int num, Priority pri) override {
1378
- return target_->SetBackgroundThreads(num, pri);
1559
+ return target_.env->SetBackgroundThreads(num, pri);
1379
1560
  }
1380
1561
  int GetBackgroundThreads(Priority pri) override {
1381
- return target_->GetBackgroundThreads(pri);
1562
+ return target_.env->GetBackgroundThreads(pri);
1382
1563
  }
1383
1564
 
1384
1565
  Status SetAllowNonOwnerAccess(bool allow_non_owner_access) override {
1385
- return target_->SetAllowNonOwnerAccess(allow_non_owner_access);
1566
+ return target_.env->SetAllowNonOwnerAccess(allow_non_owner_access);
1386
1567
  }
1387
1568
 
1388
1569
  void IncBackgroundThreadsIfNeeded(int num, Priority pri) override {
1389
- return target_->IncBackgroundThreadsIfNeeded(num, pri);
1570
+ return target_.env->IncBackgroundThreadsIfNeeded(num, pri);
1390
1571
  }
1391
1572
 
1392
1573
  void LowerThreadPoolIOPriority(Priority pool) override {
1393
- target_->LowerThreadPoolIOPriority(pool);
1574
+ target_.env->LowerThreadPoolIOPriority(pool);
1394
1575
  }
1395
1576
 
1396
1577
  void LowerThreadPoolCPUPriority(Priority pool) override {
1397
- target_->LowerThreadPoolCPUPriority(pool);
1578
+ target_.env->LowerThreadPoolCPUPriority(pool);
1398
1579
  }
1399
1580
 
1400
1581
  Status LowerThreadPoolCPUPriority(Priority pool, CpuPriority pri) override {
1401
- return target_->LowerThreadPoolCPUPriority(pool, pri);
1582
+ return target_.env->LowerThreadPoolCPUPriority(pool, pri);
1402
1583
  }
1403
1584
 
1404
1585
  std::string TimeToString(uint64_t time) override {
1405
- return target_->TimeToString(time);
1586
+ return target_.env->TimeToString(time);
1406
1587
  }
1407
1588
 
1408
1589
  Status GetThreadList(std::vector<ThreadStatus>* thread_list) override {
1409
- return target_->GetThreadList(thread_list);
1590
+ return target_.env->GetThreadList(thread_list);
1410
1591
  }
1411
1592
 
1412
1593
  ThreadStatusUpdater* GetThreadStatusUpdater() const override {
1413
- return target_->GetThreadStatusUpdater();
1594
+ return target_.env->GetThreadStatusUpdater();
1414
1595
  }
1415
1596
 
1416
- uint64_t GetThreadID() const override { return target_->GetThreadID(); }
1597
+ uint64_t GetThreadID() const override { return target_.env->GetThreadID(); }
1417
1598
 
1418
1599
  std::string GenerateUniqueId() override {
1419
- return target_->GenerateUniqueId();
1600
+ return target_.env->GenerateUniqueId();
1420
1601
  }
1421
1602
 
1422
1603
  EnvOptions OptimizeForLogRead(const EnvOptions& env_options) const override {
1423
- return target_->OptimizeForLogRead(env_options);
1604
+ return target_.env->OptimizeForLogRead(env_options);
1424
1605
  }
1425
1606
  EnvOptions OptimizeForManifestRead(
1426
1607
  const EnvOptions& env_options) const override {
1427
- return target_->OptimizeForManifestRead(env_options);
1608
+ return target_.env->OptimizeForManifestRead(env_options);
1428
1609
  }
1429
1610
  EnvOptions OptimizeForLogWrite(const EnvOptions& env_options,
1430
1611
  const DBOptions& db_options) const override {
1431
- return target_->OptimizeForLogWrite(env_options, db_options);
1612
+ return target_.env->OptimizeForLogWrite(env_options, db_options);
1432
1613
  }
1433
1614
  EnvOptions OptimizeForManifestWrite(
1434
1615
  const EnvOptions& env_options) const override {
1435
- return target_->OptimizeForManifestWrite(env_options);
1616
+ return target_.env->OptimizeForManifestWrite(env_options);
1436
1617
  }
1437
1618
  EnvOptions OptimizeForCompactionTableWrite(
1438
1619
  const EnvOptions& env_options,
1439
1620
  const ImmutableDBOptions& immutable_ops) const override {
1440
- return target_->OptimizeForCompactionTableWrite(env_options, immutable_ops);
1621
+ return target_.env->OptimizeForCompactionTableWrite(env_options,
1622
+ immutable_ops);
1441
1623
  }
1442
1624
  EnvOptions OptimizeForCompactionTableRead(
1443
1625
  const EnvOptions& env_options,
1444
1626
  const ImmutableDBOptions& db_options) const override {
1445
- return target_->OptimizeForCompactionTableRead(env_options, db_options);
1627
+ return target_.env->OptimizeForCompactionTableRead(env_options, db_options);
1628
+ }
1629
+ EnvOptions OptimizeForBlobFileRead(
1630
+ const EnvOptions& env_options,
1631
+ const ImmutableDBOptions& db_options) const override {
1632
+ return target_.env->OptimizeForBlobFileRead(env_options, db_options);
1446
1633
  }
1447
1634
  Status GetFreeSpace(const std::string& path, uint64_t* diskfree) override {
1448
- return target_->GetFreeSpace(path, diskfree);
1635
+ return target_.env->GetFreeSpace(path, diskfree);
1449
1636
  }
1450
1637
  void SanitizeEnvOptions(EnvOptions* env_opts) const override {
1451
- target_->SanitizeEnvOptions(env_opts);
1638
+ target_.env->SanitizeEnvOptions(env_opts);
1452
1639
  }
1640
+ Status PrepareOptions(const ConfigOptions& options) override;
1641
+ #ifndef ROCKSDB_LITE
1642
+ std::string SerializeOptions(const ConfigOptions& config_options,
1643
+ const std::string& header) const override;
1644
+ #endif // ROCKSDB_LITE
1453
1645
 
1454
1646
  private:
1455
- Env* target_;
1647
+ Target target_;
1456
1648
  };
1457
1649
 
1458
1650
  class SequentialFileWrapper : public SequentialFile {
@@ -1515,9 +1707,18 @@ class WritableFileWrapper : public WritableFile {
1515
1707
  explicit WritableFileWrapper(WritableFile* t) : target_(t) {}
1516
1708
 
1517
1709
  Status Append(const Slice& data) override { return target_->Append(data); }
1710
+ Status Append(const Slice& data,
1711
+ const DataVerificationInfo& verification_info) override {
1712
+ return target_->Append(data, verification_info);
1713
+ }
1518
1714
  Status PositionedAppend(const Slice& data, uint64_t offset) override {
1519
1715
  return target_->PositionedAppend(data, offset);
1520
1716
  }
1717
+ Status PositionedAppend(
1718
+ const Slice& data, uint64_t offset,
1719
+ const DataVerificationInfo& verification_info) override {
1720
+ return target_->PositionedAppend(data, offset, verification_info);
1721
+ }
1521
1722
  Status Truncate(uint64_t size) override { return target_->Truncate(size); }
1522
1723
  Status Close() override { return target_->Close(); }
1523
1724
  Status Flush() override { return target_->Flush(); }
@@ -1651,10 +1852,6 @@ class LoggerWrapper : public Logger {
1651
1852
  // *base_env must remain live while the result is in use.
1652
1853
  Env* NewMemEnv(Env* base_env);
1653
1854
 
1654
- // Returns a new environment that is used for HDFS environment.
1655
- // This is a factory method for HdfsEnv declared in hdfs/env_hdfs.h
1656
- Status NewHdfsEnv(Env** hdfs_env, const std::string& fsname);
1657
-
1658
1855
  // Returns a new environment that measures function call times for filesystem
1659
1856
  // operations, reporting results to variables in PerfContext.
1660
1857
  // This is a factory method for TimedEnv defined in utilities/env_timed.cc.
@@ -1666,6 +1863,8 @@ Env* NewTimedEnv(Env* base_env);
1666
1863
  Status NewEnvLogger(const std::string& fname, Env* env,
1667
1864
  std::shared_ptr<Logger>* result);
1668
1865
 
1866
+ // Creates a new Env based on Env::Default() but modified to use the specified
1867
+ // FileSystem.
1669
1868
  std::unique_ptr<Env> NewCompositeEnv(const std::shared_ptr<FileSystem>& fs);
1670
1869
 
1671
1870
  } // namespace ROCKSDB_NAMESPACE