rocksdb-native 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1951) hide show
  1. package/.clang-format +15 -0
  2. package/.github/workflows/test-node.yml +23 -0
  3. package/.gitmodules +4 -0
  4. package/CMakeLists.txt +33 -0
  5. package/LICENSE +201 -0
  6. package/NOTICE +13 -0
  7. package/README.md +15 -0
  8. package/binding.c +470 -0
  9. package/binding.js +1 -0
  10. package/index.js +276 -0
  11. package/package.json +19 -0
  12. package/vendor/rocksdb/.circleci/config.yml +892 -0
  13. package/vendor/rocksdb/.circleci/ubsan_suppression_list.txt +6 -0
  14. package/vendor/rocksdb/.clang-format +5 -0
  15. package/vendor/rocksdb/.github/workflows/sanity_check.yml +47 -0
  16. package/vendor/rocksdb/.lgtm.yml +4 -0
  17. package/vendor/rocksdb/AUTHORS +12 -0
  18. package/vendor/rocksdb/CMakeLists.txt +1591 -0
  19. package/vendor/rocksdb/CODE_OF_CONDUCT.md +77 -0
  20. package/vendor/rocksdb/CONTRIBUTING.md +17 -0
  21. package/vendor/rocksdb/COPYING +339 -0
  22. package/vendor/rocksdb/DEFAULT_OPTIONS_HISTORY.md +24 -0
  23. package/vendor/rocksdb/DUMP_FORMAT.md +16 -0
  24. package/vendor/rocksdb/HISTORY.md +2399 -0
  25. package/vendor/rocksdb/INSTALL.md +220 -0
  26. package/vendor/rocksdb/LANGUAGE-BINDINGS.md +26 -0
  27. package/vendor/rocksdb/LICENSE.Apache +202 -0
  28. package/vendor/rocksdb/LICENSE.leveldb +29 -0
  29. package/vendor/rocksdb/Makefile +2579 -0
  30. package/vendor/rocksdb/PLUGINS.md +8 -0
  31. package/vendor/rocksdb/README.md +29 -0
  32. package/vendor/rocksdb/TARGETS +5599 -0
  33. package/vendor/rocksdb/USERS.md +165 -0
  34. package/vendor/rocksdb/Vagrantfile +39 -0
  35. package/vendor/rocksdb/WINDOWS_PORT.md +228 -0
  36. package/vendor/rocksdb/buckifier/bench-slow.json +6163 -0
  37. package/vendor/rocksdb/buckifier/bench.json +1594 -0
  38. package/vendor/rocksdb/buckifier/buckify_rocksdb.py +333 -0
  39. package/vendor/rocksdb/buckifier/check_buck_targets.sh +32 -0
  40. package/vendor/rocksdb/buckifier/rocks_test_runner.sh +6 -0
  41. package/vendor/rocksdb/buckifier/targets_builder.py +150 -0
  42. package/vendor/rocksdb/buckifier/targets_cfg.py +41 -0
  43. package/vendor/rocksdb/buckifier/util.py +118 -0
  44. package/vendor/rocksdb/build_tools/amalgamate.py +168 -0
  45. package/vendor/rocksdb/build_tools/benchmark_log_tool.py +238 -0
  46. package/vendor/rocksdb/build_tools/build_detect_platform +804 -0
  47. package/vendor/rocksdb/build_tools/check-sources.sh +48 -0
  48. package/vendor/rocksdb/build_tools/dependencies_platform010.sh +22 -0
  49. package/vendor/rocksdb/build_tools/dockerbuild.sh +3 -0
  50. package/vendor/rocksdb/build_tools/error_filter.py +181 -0
  51. package/vendor/rocksdb/build_tools/fb_compile_mongo.sh +55 -0
  52. package/vendor/rocksdb/build_tools/fbcode_config.sh +175 -0
  53. package/vendor/rocksdb/build_tools/fbcode_config_platform010.sh +175 -0
  54. package/vendor/rocksdb/build_tools/format-diff.sh +203 -0
  55. package/vendor/rocksdb/build_tools/gnu_parallel +7971 -0
  56. package/vendor/rocksdb/build_tools/make_package.sh +129 -0
  57. package/vendor/rocksdb/build_tools/ps_with_stack +38 -0
  58. package/vendor/rocksdb/build_tools/regression_build_test.sh +396 -0
  59. package/vendor/rocksdb/build_tools/run_ci_db_test.ps1 +493 -0
  60. package/vendor/rocksdb/build_tools/setup_centos7.sh +45 -0
  61. package/vendor/rocksdb/build_tools/ubuntu20_image/Dockerfile +57 -0
  62. package/vendor/rocksdb/build_tools/update_dependencies.sh +106 -0
  63. package/vendor/rocksdb/build_tools/version.sh +23 -0
  64. package/vendor/rocksdb/cache/cache.cc +158 -0
  65. package/vendor/rocksdb/cache/cache_bench.cc +20 -0
  66. package/vendor/rocksdb/cache/cache_bench_tool.cc +969 -0
  67. package/vendor/rocksdb/cache/cache_entry_roles.cc +104 -0
  68. package/vendor/rocksdb/cache/cache_entry_roles.h +20 -0
  69. package/vendor/rocksdb/cache/cache_entry_stats.h +182 -0
  70. package/vendor/rocksdb/cache/cache_helpers.cc +40 -0
  71. package/vendor/rocksdb/cache/cache_helpers.h +139 -0
  72. package/vendor/rocksdb/cache/cache_key.cc +364 -0
  73. package/vendor/rocksdb/cache/cache_key.h +143 -0
  74. package/vendor/rocksdb/cache/cache_reservation_manager.cc +184 -0
  75. package/vendor/rocksdb/cache/cache_reservation_manager.h +317 -0
  76. package/vendor/rocksdb/cache/cache_reservation_manager_test.cc +469 -0
  77. package/vendor/rocksdb/cache/cache_test.cc +1061 -0
  78. package/vendor/rocksdb/cache/charged_cache.cc +109 -0
  79. package/vendor/rocksdb/cache/charged_cache.h +59 -0
  80. package/vendor/rocksdb/cache/clock_cache.cc +1482 -0
  81. package/vendor/rocksdb/cache/clock_cache.h +707 -0
  82. package/vendor/rocksdb/cache/compressed_secondary_cache.cc +304 -0
  83. package/vendor/rocksdb/cache/compressed_secondary_cache.h +132 -0
  84. package/vendor/rocksdb/cache/compressed_secondary_cache_test.cc +983 -0
  85. package/vendor/rocksdb/cache/lru_cache.cc +723 -0
  86. package/vendor/rocksdb/cache/lru_cache.h +467 -0
  87. package/vendor/rocksdb/cache/lru_cache_test.cc +2559 -0
  88. package/vendor/rocksdb/cache/secondary_cache.cc +44 -0
  89. package/vendor/rocksdb/cache/secondary_cache_adapter.cc +295 -0
  90. package/vendor/rocksdb/cache/secondary_cache_adapter.h +52 -0
  91. package/vendor/rocksdb/cache/sharded_cache.cc +137 -0
  92. package/vendor/rocksdb/cache/sharded_cache.h +309 -0
  93. package/vendor/rocksdb/cache/typed_cache.h +375 -0
  94. package/vendor/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  95. package/vendor/rocksdb/common.mk +30 -0
  96. package/vendor/rocksdb/crash_test.mk +107 -0
  97. package/vendor/rocksdb/db/arena_wrapped_db_iter.cc +163 -0
  98. package/vendor/rocksdb/db/arena_wrapped_db_iter.h +127 -0
  99. package/vendor/rocksdb/db/blob/blob_constants.h +16 -0
  100. package/vendor/rocksdb/db/blob/blob_contents.cc +42 -0
  101. package/vendor/rocksdb/db/blob/blob_contents.h +59 -0
  102. package/vendor/rocksdb/db/blob/blob_counting_iterator.h +150 -0
  103. package/vendor/rocksdb/db/blob/blob_counting_iterator_test.cc +327 -0
  104. package/vendor/rocksdb/db/blob/blob_fetcher.cc +34 -0
  105. package/vendor/rocksdb/db/blob/blob_fetcher.h +37 -0
  106. package/vendor/rocksdb/db/blob/blob_file_addition.cc +156 -0
  107. package/vendor/rocksdb/db/blob/blob_file_addition.h +67 -0
  108. package/vendor/rocksdb/db/blob/blob_file_addition_test.cc +211 -0
  109. package/vendor/rocksdb/db/blob/blob_file_builder.cc +426 -0
  110. package/vendor/rocksdb/db/blob/blob_file_builder.h +112 -0
  111. package/vendor/rocksdb/db/blob/blob_file_builder_test.cc +680 -0
  112. package/vendor/rocksdb/db/blob/blob_file_cache.cc +101 -0
  113. package/vendor/rocksdb/db/blob/blob_file_cache.h +56 -0
  114. package/vendor/rocksdb/db/blob/blob_file_cache_test.cc +278 -0
  115. package/vendor/rocksdb/db/blob/blob_file_completion_callback.h +84 -0
  116. package/vendor/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  117. package/vendor/rocksdb/db/blob/blob_file_garbage.h +57 -0
  118. package/vendor/rocksdb/db/blob/blob_file_garbage_test.cc +174 -0
  119. package/vendor/rocksdb/db/blob/blob_file_meta.cc +62 -0
  120. package/vendor/rocksdb/db/blob/blob_file_meta.h +170 -0
  121. package/vendor/rocksdb/db/blob/blob_file_reader.cc +624 -0
  122. package/vendor/rocksdb/db/blob/blob_file_reader.h +112 -0
  123. package/vendor/rocksdb/db/blob/blob_file_reader_test.cc +1023 -0
  124. package/vendor/rocksdb/db/blob/blob_garbage_meter.cc +100 -0
  125. package/vendor/rocksdb/db/blob/blob_garbage_meter.h +102 -0
  126. package/vendor/rocksdb/db/blob/blob_garbage_meter_test.cc +197 -0
  127. package/vendor/rocksdb/db/blob/blob_index.h +187 -0
  128. package/vendor/rocksdb/db/blob/blob_log_format.cc +143 -0
  129. package/vendor/rocksdb/db/blob/blob_log_format.h +164 -0
  130. package/vendor/rocksdb/db/blob/blob_log_sequential_reader.cc +134 -0
  131. package/vendor/rocksdb/db/blob/blob_log_sequential_reader.h +83 -0
  132. package/vendor/rocksdb/db/blob/blob_log_writer.cc +178 -0
  133. package/vendor/rocksdb/db/blob/blob_log_writer.h +83 -0
  134. package/vendor/rocksdb/db/blob/blob_read_request.h +58 -0
  135. package/vendor/rocksdb/db/blob/blob_source.cc +459 -0
  136. package/vendor/rocksdb/db/blob/blob_source.h +161 -0
  137. package/vendor/rocksdb/db/blob/blob_source_test.cc +1611 -0
  138. package/vendor/rocksdb/db/blob/db_blob_basic_test.cc +2237 -0
  139. package/vendor/rocksdb/db/blob/db_blob_compaction_test.cc +899 -0
  140. package/vendor/rocksdb/db/blob/db_blob_corruption_test.cc +80 -0
  141. package/vendor/rocksdb/db/blob/db_blob_index_test.cc +596 -0
  142. package/vendor/rocksdb/db/blob/prefetch_buffer_collection.cc +21 -0
  143. package/vendor/rocksdb/db/blob/prefetch_buffer_collection.h +38 -0
  144. package/vendor/rocksdb/db/builder.cc +447 -0
  145. package/vendor/rocksdb/db/builder.h +78 -0
  146. package/vendor/rocksdb/db/c.cc +6559 -0
  147. package/vendor/rocksdb/db/c_test.c +3609 -0
  148. package/vendor/rocksdb/db/column_family.cc +1708 -0
  149. package/vendor/rocksdb/db/column_family.h +851 -0
  150. package/vendor/rocksdb/db/column_family_test.cc +3382 -0
  151. package/vendor/rocksdb/db/compact_files_test.cc +492 -0
  152. package/vendor/rocksdb/db/compaction/clipping_iterator.h +281 -0
  153. package/vendor/rocksdb/db/compaction/clipping_iterator_test.cc +259 -0
  154. package/vendor/rocksdb/db/compaction/compaction.cc +857 -0
  155. package/vendor/rocksdb/db/compaction/compaction.h +565 -0
  156. package/vendor/rocksdb/db/compaction/compaction_iteration_stats.h +49 -0
  157. package/vendor/rocksdb/db/compaction/compaction_iterator.cc +1445 -0
  158. package/vendor/rocksdb/db/compaction/compaction_iterator.h +530 -0
  159. package/vendor/rocksdb/db/compaction/compaction_iterator_test.cc +1618 -0
  160. package/vendor/rocksdb/db/compaction/compaction_job.cc +2054 -0
  161. package/vendor/rocksdb/db/compaction/compaction_job.h +504 -0
  162. package/vendor/rocksdb/db/compaction/compaction_job_stats_test.cc +965 -0
  163. package/vendor/rocksdb/db/compaction/compaction_job_test.cc +2444 -0
  164. package/vendor/rocksdb/db/compaction/compaction_outputs.cc +784 -0
  165. package/vendor/rocksdb/db/compaction/compaction_outputs.h +403 -0
  166. package/vendor/rocksdb/db/compaction/compaction_picker.cc +1225 -0
  167. package/vendor/rocksdb/db/compaction/compaction_picker.h +318 -0
  168. package/vendor/rocksdb/db/compaction/compaction_picker_fifo.cc +471 -0
  169. package/vendor/rocksdb/db/compaction/compaction_picker_fifo.h +60 -0
  170. package/vendor/rocksdb/db/compaction/compaction_picker_level.cc +888 -0
  171. package/vendor/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  172. package/vendor/rocksdb/db/compaction/compaction_picker_test.cc +4074 -0
  173. package/vendor/rocksdb/db/compaction/compaction_picker_universal.cc +1452 -0
  174. package/vendor/rocksdb/db/compaction/compaction_picker_universal.h +30 -0
  175. package/vendor/rocksdb/db/compaction/compaction_service_job.cc +833 -0
  176. package/vendor/rocksdb/db/compaction/compaction_service_test.cc +954 -0
  177. package/vendor/rocksdb/db/compaction/compaction_state.cc +46 -0
  178. package/vendor/rocksdb/db/compaction/compaction_state.h +42 -0
  179. package/vendor/rocksdb/db/compaction/file_pri.h +92 -0
  180. package/vendor/rocksdb/db/compaction/sst_partitioner.cc +83 -0
  181. package/vendor/rocksdb/db/compaction/subcompaction_state.cc +106 -0
  182. package/vendor/rocksdb/db/compaction/subcompaction_state.h +220 -0
  183. package/vendor/rocksdb/db/compaction/tiered_compaction_test.cc +2149 -0
  184. package/vendor/rocksdb/db/comparator_db_test.cc +678 -0
  185. package/vendor/rocksdb/db/convenience.cc +81 -0
  186. package/vendor/rocksdb/db/corruption_test.cc +1670 -0
  187. package/vendor/rocksdb/db/cuckoo_table_db_test.cc +351 -0
  188. package/vendor/rocksdb/db/db_basic_test.cc +4777 -0
  189. package/vendor/rocksdb/db/db_block_cache_test.cc +1972 -0
  190. package/vendor/rocksdb/db/db_bloom_filter_test.cc +3513 -0
  191. package/vendor/rocksdb/db/db_clip_test.cc +142 -0
  192. package/vendor/rocksdb/db/db_compaction_filter_test.cc +1030 -0
  193. package/vendor/rocksdb/db/db_compaction_test.cc +9424 -0
  194. package/vendor/rocksdb/db/db_dynamic_level_test.cc +499 -0
  195. package/vendor/rocksdb/db/db_encryption_test.cc +126 -0
  196. package/vendor/rocksdb/db/db_filesnapshot.cc +436 -0
  197. package/vendor/rocksdb/db/db_flush_test.cc +3202 -0
  198. package/vendor/rocksdb/db/db_impl/compacted_db_impl.cc +260 -0
  199. package/vendor/rocksdb/db/db_impl/compacted_db_impl.h +157 -0
  200. package/vendor/rocksdb/db/db_impl/db_impl.cc +6132 -0
  201. package/vendor/rocksdb/db/db_impl/db_impl.h +2841 -0
  202. package/vendor/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3980 -0
  203. package/vendor/rocksdb/db/db_impl/db_impl_debug.cc +314 -0
  204. package/vendor/rocksdb/db/db_impl/db_impl_experimental.cc +159 -0
  205. package/vendor/rocksdb/db/db_impl/db_impl_files.cc +1014 -0
  206. package/vendor/rocksdb/db/db_impl/db_impl_open.cc +2202 -0
  207. package/vendor/rocksdb/db/db_impl/db_impl_readonly.cc +334 -0
  208. package/vendor/rocksdb/db/db_impl/db_impl_readonly.h +173 -0
  209. package/vendor/rocksdb/db/db_impl/db_impl_secondary.cc +964 -0
  210. package/vendor/rocksdb/db/db_impl/db_impl_secondary.h +406 -0
  211. package/vendor/rocksdb/db/db_impl/db_impl_write.cc +2487 -0
  212. package/vendor/rocksdb/db/db_info_dumper.cc +147 -0
  213. package/vendor/rocksdb/db/db_info_dumper.h +15 -0
  214. package/vendor/rocksdb/db/db_inplace_update_test.cc +262 -0
  215. package/vendor/rocksdb/db/db_io_failure_test.cc +589 -0
  216. package/vendor/rocksdb/db/db_iter.cc +1708 -0
  217. package/vendor/rocksdb/db/db_iter.h +411 -0
  218. package/vendor/rocksdb/db/db_iter_stress_test.cc +658 -0
  219. package/vendor/rocksdb/db/db_iter_test.cc +3195 -0
  220. package/vendor/rocksdb/db/db_iterator_test.cc +3304 -0
  221. package/vendor/rocksdb/db/db_kv_checksum_test.cc +885 -0
  222. package/vendor/rocksdb/db/db_log_iter_test.cc +297 -0
  223. package/vendor/rocksdb/db/db_logical_block_size_cache_test.cc +505 -0
  224. package/vendor/rocksdb/db/db_memtable_test.cc +344 -0
  225. package/vendor/rocksdb/db/db_merge_operand_test.cc +488 -0
  226. package/vendor/rocksdb/db/db_merge_operator_test.cc +866 -0
  227. package/vendor/rocksdb/db/db_options_test.cc +1330 -0
  228. package/vendor/rocksdb/db/db_properties_test.cc +2377 -0
  229. package/vendor/rocksdb/db/db_range_del_test.cc +3414 -0
  230. package/vendor/rocksdb/db/db_rate_limiter_test.cc +437 -0
  231. package/vendor/rocksdb/db/db_readonly_with_timestamp_test.cc +956 -0
  232. package/vendor/rocksdb/db/db_secondary_test.cc +1691 -0
  233. package/vendor/rocksdb/db/db_sst_test.cc +1865 -0
  234. package/vendor/rocksdb/db/db_statistics_test.cc +292 -0
  235. package/vendor/rocksdb/db/db_table_properties_test.cc +623 -0
  236. package/vendor/rocksdb/db/db_tailing_iter_test.cc +595 -0
  237. package/vendor/rocksdb/db/db_test.cc +7359 -0
  238. package/vendor/rocksdb/db/db_test2.cc +7679 -0
  239. package/vendor/rocksdb/db/db_test_util.cc +1759 -0
  240. package/vendor/rocksdb/db/db_test_util.h +1340 -0
  241. package/vendor/rocksdb/db/db_universal_compaction_test.cc +2227 -0
  242. package/vendor/rocksdb/db/db_wal_test.cc +2433 -0
  243. package/vendor/rocksdb/db/db_with_timestamp_basic_test.cc +4016 -0
  244. package/vendor/rocksdb/db/db_with_timestamp_compaction_test.cc +353 -0
  245. package/vendor/rocksdb/db/db_with_timestamp_test_util.cc +96 -0
  246. package/vendor/rocksdb/db/db_with_timestamp_test_util.h +126 -0
  247. package/vendor/rocksdb/db/db_write_buffer_manager_test.cc +927 -0
  248. package/vendor/rocksdb/db/db_write_test.cc +795 -0
  249. package/vendor/rocksdb/db/dbformat.cc +213 -0
  250. package/vendor/rocksdb/db/dbformat.h +869 -0
  251. package/vendor/rocksdb/db/dbformat_test.cc +214 -0
  252. package/vendor/rocksdb/db/deletefile_test.cc +603 -0
  253. package/vendor/rocksdb/db/error_handler.cc +792 -0
  254. package/vendor/rocksdb/db/error_handler.h +124 -0
  255. package/vendor/rocksdb/db/error_handler_fs_test.cc +2862 -0
  256. package/vendor/rocksdb/db/event_helpers.cc +323 -0
  257. package/vendor/rocksdb/db/event_helpers.h +78 -0
  258. package/vendor/rocksdb/db/experimental.cc +144 -0
  259. package/vendor/rocksdb/db/external_sst_file_basic_test.cc +2084 -0
  260. package/vendor/rocksdb/db/external_sst_file_ingestion_job.cc +1104 -0
  261. package/vendor/rocksdb/db/external_sst_file_ingestion_job.h +238 -0
  262. package/vendor/rocksdb/db/external_sst_file_test.cc +2859 -0
  263. package/vendor/rocksdb/db/fault_injection_test.cc +637 -0
  264. package/vendor/rocksdb/db/file_indexer.cc +218 -0
  265. package/vendor/rocksdb/db/file_indexer.h +140 -0
  266. package/vendor/rocksdb/db/file_indexer_test.cc +352 -0
  267. package/vendor/rocksdb/db/filename_test.cc +241 -0
  268. package/vendor/rocksdb/db/flush_job.cc +1097 -0
  269. package/vendor/rocksdb/db/flush_job.h +200 -0
  270. package/vendor/rocksdb/db/flush_job_test.cc +743 -0
  271. package/vendor/rocksdb/db/flush_scheduler.cc +86 -0
  272. package/vendor/rocksdb/db/flush_scheduler.h +55 -0
  273. package/vendor/rocksdb/db/forward_iterator.cc +1070 -0
  274. package/vendor/rocksdb/db/forward_iterator.h +166 -0
  275. package/vendor/rocksdb/db/forward_iterator_bench.cc +378 -0
  276. package/vendor/rocksdb/db/history_trimming_iterator.h +95 -0
  277. package/vendor/rocksdb/db/import_column_family_job.cc +364 -0
  278. package/vendor/rocksdb/db/import_column_family_job.h +82 -0
  279. package/vendor/rocksdb/db/import_column_family_test.cc +748 -0
  280. package/vendor/rocksdb/db/internal_stats.cc +2121 -0
  281. package/vendor/rocksdb/db/internal_stats.h +875 -0
  282. package/vendor/rocksdb/db/job_context.h +237 -0
  283. package/vendor/rocksdb/db/kv_checksum.h +484 -0
  284. package/vendor/rocksdb/db/listener_test.cc +1598 -0
  285. package/vendor/rocksdb/db/log_format.h +55 -0
  286. package/vendor/rocksdb/db/log_reader.cc +934 -0
  287. package/vendor/rocksdb/db/log_reader.h +241 -0
  288. package/vendor/rocksdb/db/log_test.cc +1216 -0
  289. package/vendor/rocksdb/db/log_writer.cc +279 -0
  290. package/vendor/rocksdb/db/log_writer.h +144 -0
  291. package/vendor/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  292. package/vendor/rocksdb/db/logs_with_prep_tracker.h +62 -0
  293. package/vendor/rocksdb/db/lookup_key.h +68 -0
  294. package/vendor/rocksdb/db/malloc_stats.cc +53 -0
  295. package/vendor/rocksdb/db/malloc_stats.h +22 -0
  296. package/vendor/rocksdb/db/manual_compaction_test.cc +308 -0
  297. package/vendor/rocksdb/db/memtable.cc +1675 -0
  298. package/vendor/rocksdb/db/memtable.h +660 -0
  299. package/vendor/rocksdb/db/memtable_list.cc +987 -0
  300. package/vendor/rocksdb/db/memtable_list.h +471 -0
  301. package/vendor/rocksdb/db/memtable_list_test.cc +1037 -0
  302. package/vendor/rocksdb/db/merge_context.h +147 -0
  303. package/vendor/rocksdb/db/merge_helper.cc +606 -0
  304. package/vendor/rocksdb/db/merge_helper.h +224 -0
  305. package/vendor/rocksdb/db/merge_helper_test.cc +298 -0
  306. package/vendor/rocksdb/db/merge_operator.cc +85 -0
  307. package/vendor/rocksdb/db/merge_test.cc +621 -0
  308. package/vendor/rocksdb/db/obsolete_files_test.cc +317 -0
  309. package/vendor/rocksdb/db/options_file_test.cc +110 -0
  310. package/vendor/rocksdb/db/output_validator.cc +33 -0
  311. package/vendor/rocksdb/db/output_validator.h +48 -0
  312. package/vendor/rocksdb/db/perf_context_test.cc +1158 -0
  313. package/vendor/rocksdb/db/periodic_task_scheduler.cc +111 -0
  314. package/vendor/rocksdb/db/periodic_task_scheduler.h +108 -0
  315. package/vendor/rocksdb/db/periodic_task_scheduler_test.cc +229 -0
  316. package/vendor/rocksdb/db/pinned_iterators_manager.h +92 -0
  317. package/vendor/rocksdb/db/plain_table_db_test.cc +1348 -0
  318. package/vendor/rocksdb/db/post_memtable_callback.h +25 -0
  319. package/vendor/rocksdb/db/pre_release_callback.h +37 -0
  320. package/vendor/rocksdb/db/prefix_test.cc +894 -0
  321. package/vendor/rocksdb/db/range_del_aggregator.cc +555 -0
  322. package/vendor/rocksdb/db/range_del_aggregator.h +478 -0
  323. package/vendor/rocksdb/db/range_del_aggregator_bench.cc +280 -0
  324. package/vendor/rocksdb/db/range_del_aggregator_test.cc +713 -0
  325. package/vendor/rocksdb/db/range_tombstone_fragmenter.cc +502 -0
  326. package/vendor/rocksdb/db/range_tombstone_fragmenter.h +356 -0
  327. package/vendor/rocksdb/db/range_tombstone_fragmenter_test.cc +555 -0
  328. package/vendor/rocksdb/db/read_callback.h +54 -0
  329. package/vendor/rocksdb/db/repair.cc +839 -0
  330. package/vendor/rocksdb/db/repair_test.cc +484 -0
  331. package/vendor/rocksdb/db/seqno_time_test.cc +994 -0
  332. package/vendor/rocksdb/db/seqno_to_time_mapping.cc +341 -0
  333. package/vendor/rocksdb/db/seqno_to_time_mapping.h +189 -0
  334. package/vendor/rocksdb/db/snapshot_checker.h +58 -0
  335. package/vendor/rocksdb/db/snapshot_impl.cc +25 -0
  336. package/vendor/rocksdb/db/snapshot_impl.h +239 -0
  337. package/vendor/rocksdb/db/table_cache.cc +710 -0
  338. package/vendor/rocksdb/db/table_cache.h +283 -0
  339. package/vendor/rocksdb/db/table_cache_sync_and_async.h +130 -0
  340. package/vendor/rocksdb/db/table_properties_collector.cc +74 -0
  341. package/vendor/rocksdb/db/table_properties_collector.h +177 -0
  342. package/vendor/rocksdb/db/table_properties_collector_test.cc +512 -0
  343. package/vendor/rocksdb/db/transaction_log_impl.cc +296 -0
  344. package/vendor/rocksdb/db/transaction_log_impl.h +128 -0
  345. package/vendor/rocksdb/db/trim_history_scheduler.cc +54 -0
  346. package/vendor/rocksdb/db/trim_history_scheduler.h +46 -0
  347. package/vendor/rocksdb/db/version_builder.cc +1426 -0
  348. package/vendor/rocksdb/db/version_builder.h +93 -0
  349. package/vendor/rocksdb/db/version_builder_test.cc +1840 -0
  350. package/vendor/rocksdb/db/version_edit.cc +1059 -0
  351. package/vendor/rocksdb/db/version_edit.h +702 -0
  352. package/vendor/rocksdb/db/version_edit_handler.cc +1017 -0
  353. package/vendor/rocksdb/db/version_edit_handler.h +334 -0
  354. package/vendor/rocksdb/db/version_edit_test.cc +732 -0
  355. package/vendor/rocksdb/db/version_set.cc +7286 -0
  356. package/vendor/rocksdb/db/version_set.h +1714 -0
  357. package/vendor/rocksdb/db/version_set_sync_and_async.h +172 -0
  358. package/vendor/rocksdb/db/version_set_test.cc +3659 -0
  359. package/vendor/rocksdb/db/version_util.h +72 -0
  360. package/vendor/rocksdb/db/wal_edit.cc +211 -0
  361. package/vendor/rocksdb/db/wal_edit.h +177 -0
  362. package/vendor/rocksdb/db/wal_edit_test.cc +213 -0
  363. package/vendor/rocksdb/db/wal_manager.cc +527 -0
  364. package/vendor/rocksdb/db/wal_manager.h +136 -0
  365. package/vendor/rocksdb/db/wal_manager_test.cc +336 -0
  366. package/vendor/rocksdb/db/wide/db_wide_basic_test.cc +1042 -0
  367. package/vendor/rocksdb/db/wide/wide_column_serialization.cc +182 -0
  368. package/vendor/rocksdb/db/wide/wide_column_serialization.h +77 -0
  369. package/vendor/rocksdb/db/wide/wide_column_serialization_test.cc +338 -0
  370. package/vendor/rocksdb/db/wide/wide_columns.cc +22 -0
  371. package/vendor/rocksdb/db/write_batch.cc +3142 -0
  372. package/vendor/rocksdb/db/write_batch_base.cc +94 -0
  373. package/vendor/rocksdb/db/write_batch_internal.h +401 -0
  374. package/vendor/rocksdb/db/write_batch_test.cc +1112 -0
  375. package/vendor/rocksdb/db/write_callback.h +27 -0
  376. package/vendor/rocksdb/db/write_callback_test.cc +454 -0
  377. package/vendor/rocksdb/db/write_controller.cc +121 -0
  378. package/vendor/rocksdb/db/write_controller.h +148 -0
  379. package/vendor/rocksdb/db/write_controller_test.cc +248 -0
  380. package/vendor/rocksdb/db/write_stall_stats.cc +179 -0
  381. package/vendor/rocksdb/db/write_stall_stats.h +47 -0
  382. package/vendor/rocksdb/db/write_thread.cc +844 -0
  383. package/vendor/rocksdb/db/write_thread.h +464 -0
  384. package/vendor/rocksdb/db_stress_tool/CMakeLists.txt +18 -0
  385. package/vendor/rocksdb/db_stress_tool/batched_ops_stress.cc +593 -0
  386. package/vendor/rocksdb/db_stress_tool/cf_consistency_stress.cc +892 -0
  387. package/vendor/rocksdb/db_stress_tool/db_stress.cc +25 -0
  388. package/vendor/rocksdb/db_stress_tool/db_stress_common.cc +491 -0
  389. package/vendor/rocksdb/db_stress_tool/db_stress_common.h +674 -0
  390. package/vendor/rocksdb/db_stress_tool/db_stress_compaction_filter.h +96 -0
  391. package/vendor/rocksdb/db_stress_tool/db_stress_driver.cc +216 -0
  392. package/vendor/rocksdb/db_stress_tool/db_stress_driver.h +18 -0
  393. package/vendor/rocksdb/db_stress_tool/db_stress_env_wrapper.h +78 -0
  394. package/vendor/rocksdb/db_stress_tool/db_stress_gflags.cc +1094 -0
  395. package/vendor/rocksdb/db_stress_tool/db_stress_listener.cc +189 -0
  396. package/vendor/rocksdb/db_stress_tool/db_stress_listener.h +269 -0
  397. package/vendor/rocksdb/db_stress_tool/db_stress_shared_state.cc +17 -0
  398. package/vendor/rocksdb/db_stress_tool/db_stress_shared_state.h +437 -0
  399. package/vendor/rocksdb/db_stress_tool/db_stress_stat.cc +17 -0
  400. package/vendor/rocksdb/db_stress_tool/db_stress_stat.h +219 -0
  401. package/vendor/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +65 -0
  402. package/vendor/rocksdb/db_stress_tool/db_stress_test_base.cc +3294 -0
  403. package/vendor/rocksdb/db_stress_tool/db_stress_test_base.h +327 -0
  404. package/vendor/rocksdb/db_stress_tool/db_stress_tool.cc +371 -0
  405. package/vendor/rocksdb/db_stress_tool/expected_state.cc +780 -0
  406. package/vendor/rocksdb/db_stress_tool/expected_state.h +329 -0
  407. package/vendor/rocksdb/db_stress_tool/expected_value.cc +122 -0
  408. package/vendor/rocksdb/db_stress_tool/expected_value.h +206 -0
  409. package/vendor/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +1761 -0
  410. package/vendor/rocksdb/db_stress_tool/multi_ops_txns_stress.h +446 -0
  411. package/vendor/rocksdb/db_stress_tool/no_batched_ops_stress.cc +1906 -0
  412. package/vendor/rocksdb/docs/CNAME +1 -0
  413. package/vendor/rocksdb/docs/CONTRIBUTING.md +115 -0
  414. package/vendor/rocksdb/docs/Gemfile +4 -0
  415. package/vendor/rocksdb/docs/LICENSE-DOCUMENTATION +385 -0
  416. package/vendor/rocksdb/docs/README.md +80 -0
  417. package/vendor/rocksdb/docs/TEMPLATE-INFORMATION.md +17 -0
  418. package/vendor/rocksdb/docs/_config.yml +85 -0
  419. package/vendor/rocksdb/docs/_data/authors.yml +81 -0
  420. package/vendor/rocksdb/docs/_data/features.yml +19 -0
  421. package/vendor/rocksdb/docs/_data/nav.yml +30 -0
  422. package/vendor/rocksdb/docs/_data/nav_docs.yml +3 -0
  423. package/vendor/rocksdb/docs/_data/powered_by.yml +1 -0
  424. package/vendor/rocksdb/docs/_data/powered_by_highlight.yml +1 -0
  425. package/vendor/rocksdb/docs/_data/promo.yml +6 -0
  426. package/vendor/rocksdb/docs/_docs/faq.md +48 -0
  427. package/vendor/rocksdb/docs/_docs/getting-started.md +78 -0
  428. package/vendor/rocksdb/docs/_includes/blog_pagination.html +28 -0
  429. package/vendor/rocksdb/docs/_includes/content/gridblocks.html +5 -0
  430. package/vendor/rocksdb/docs/_includes/content/items/gridblock.html +37 -0
  431. package/vendor/rocksdb/docs/_includes/doc.html +25 -0
  432. package/vendor/rocksdb/docs/_includes/doc_paging.html +0 -0
  433. package/vendor/rocksdb/docs/_includes/footer.html +34 -0
  434. package/vendor/rocksdb/docs/_includes/head.html +23 -0
  435. package/vendor/rocksdb/docs/_includes/header.html +19 -0
  436. package/vendor/rocksdb/docs/_includes/hero.html +0 -0
  437. package/vendor/rocksdb/docs/_includes/home_header.html +22 -0
  438. package/vendor/rocksdb/docs/_includes/katex_import.html +3 -0
  439. package/vendor/rocksdb/docs/_includes/katex_render.html +210 -0
  440. package/vendor/rocksdb/docs/_includes/nav/collection_nav.html +64 -0
  441. package/vendor/rocksdb/docs/_includes/nav/collection_nav_group.html +19 -0
  442. package/vendor/rocksdb/docs/_includes/nav/collection_nav_group_item.html +1 -0
  443. package/vendor/rocksdb/docs/_includes/nav/header_nav.html +30 -0
  444. package/vendor/rocksdb/docs/_includes/nav.html +37 -0
  445. package/vendor/rocksdb/docs/_includes/nav_search.html +15 -0
  446. package/vendor/rocksdb/docs/_includes/plugins/all_share.html +3 -0
  447. package/vendor/rocksdb/docs/_includes/plugins/ascii_cinema.html +2 -0
  448. package/vendor/rocksdb/docs/_includes/plugins/button.html +6 -0
  449. package/vendor/rocksdb/docs/_includes/plugins/github_star.html +4 -0
  450. package/vendor/rocksdb/docs/_includes/plugins/github_watch.html +4 -0
  451. package/vendor/rocksdb/docs/_includes/plugins/google_share.html +5 -0
  452. package/vendor/rocksdb/docs/_includes/plugins/iframe.html +6 -0
  453. package/vendor/rocksdb/docs/_includes/plugins/like_button.html +18 -0
  454. package/vendor/rocksdb/docs/_includes/plugins/plugin_row.html +5 -0
  455. package/vendor/rocksdb/docs/_includes/plugins/post_social_plugins.html +41 -0
  456. package/vendor/rocksdb/docs/_includes/plugins/slideshow.html +88 -0
  457. package/vendor/rocksdb/docs/_includes/plugins/twitter_follow.html +12 -0
  458. package/vendor/rocksdb/docs/_includes/plugins/twitter_share.html +11 -0
  459. package/vendor/rocksdb/docs/_includes/post.html +40 -0
  460. package/vendor/rocksdb/docs/_includes/powered_by.html +28 -0
  461. package/vendor/rocksdb/docs/_includes/social_plugins.html +31 -0
  462. package/vendor/rocksdb/docs/_includes/ui/button.html +1 -0
  463. package/vendor/rocksdb/docs/_layouts/basic.html +12 -0
  464. package/vendor/rocksdb/docs/_layouts/blog.html +11 -0
  465. package/vendor/rocksdb/docs/_layouts/blog_default.html +14 -0
  466. package/vendor/rocksdb/docs/_layouts/default.html +12 -0
  467. package/vendor/rocksdb/docs/_layouts/doc_default.html +14 -0
  468. package/vendor/rocksdb/docs/_layouts/doc_page.html +10 -0
  469. package/vendor/rocksdb/docs/_layouts/docs.html +5 -0
  470. package/vendor/rocksdb/docs/_layouts/home.html +26 -0
  471. package/vendor/rocksdb/docs/_layouts/page.html +3 -0
  472. package/vendor/rocksdb/docs/_layouts/plain.html +10 -0
  473. package/vendor/rocksdb/docs/_layouts/post.html +8 -0
  474. package/vendor/rocksdb/docs/_layouts/redirect.html +6 -0
  475. package/vendor/rocksdb/docs/_layouts/top-level.html +10 -0
  476. package/vendor/rocksdb/docs/_posts/2014-03-27-how-to-backup-rocksdb.markdown +135 -0
  477. package/vendor/rocksdb/docs/_posts/2014-03-27-how-to-persist-in-memory-rocksdb-database.markdown +54 -0
  478. package/vendor/rocksdb/docs/_posts/2014-04-02-the-1st-rocksdb-local-meetup-held-on-march-27-2014.markdown +53 -0
  479. package/vendor/rocksdb/docs/_posts/2014-04-07-rocksdb-2-8-release.markdown +40 -0
  480. package/vendor/rocksdb/docs/_posts/2014-04-21-indexing-sst-files-for-better-lookup-performance.markdown +28 -0
  481. package/vendor/rocksdb/docs/_posts/2014-05-14-lock.markdown +88 -0
  482. package/vendor/rocksdb/docs/_posts/2014-05-19-rocksdb-3-0-release.markdown +24 -0
  483. package/vendor/rocksdb/docs/_posts/2014-05-22-rocksdb-3-1-release.markdown +20 -0
  484. package/vendor/rocksdb/docs/_posts/2014-06-23-plaintable-a-new-file-format.markdown +47 -0
  485. package/vendor/rocksdb/docs/_posts/2014-06-27-avoid-expensive-locks-in-get.markdown +89 -0
  486. package/vendor/rocksdb/docs/_posts/2014-06-27-rocksdb-3-2-release.markdown +30 -0
  487. package/vendor/rocksdb/docs/_posts/2014-07-29-rocksdb-3-3-release.markdown +34 -0
  488. package/vendor/rocksdb/docs/_posts/2014-09-12-cuckoo.markdown +74 -0
  489. package/vendor/rocksdb/docs/_posts/2014-09-12-new-bloom-filter-format.markdown +52 -0
  490. package/vendor/rocksdb/docs/_posts/2014-09-15-rocksdb-3-5-release.markdown +38 -0
  491. package/vendor/rocksdb/docs/_posts/2015-01-16-migrating-from-leveldb-to-rocksdb-2.markdown +112 -0
  492. package/vendor/rocksdb/docs/_posts/2015-02-24-reading-rocksdb-options-from-a-file.markdown +41 -0
  493. package/vendor/rocksdb/docs/_posts/2015-02-27-write-batch-with-index.markdown +20 -0
  494. package/vendor/rocksdb/docs/_posts/2015-04-22-integrating-rocksdb-with-mongodb-2.markdown +16 -0
  495. package/vendor/rocksdb/docs/_posts/2015-06-12-rocksdb-in-osquery.markdown +10 -0
  496. package/vendor/rocksdb/docs/_posts/2015-07-15-rocksdb-2015-h2-roadmap.markdown +92 -0
  497. package/vendor/rocksdb/docs/_posts/2015-07-17-spatial-indexing-in-rocksdb.markdown +78 -0
  498. package/vendor/rocksdb/docs/_posts/2015-07-22-rocksdb-is-now-available-in-windows-platform.markdown +30 -0
  499. package/vendor/rocksdb/docs/_posts/2015-07-23-dynamic-level.markdown +29 -0
  500. package/vendor/rocksdb/docs/_posts/2015-10-27-getthreadlist.markdown +193 -0
  501. package/vendor/rocksdb/docs/_posts/2015-11-10-use-checkpoints-for-efficient-snapshots.markdown +45 -0
  502. package/vendor/rocksdb/docs/_posts/2015-11-16-analysis-file-read-latency-by-level.markdown +244 -0
  503. package/vendor/rocksdb/docs/_posts/2016-01-29-compaction_pri.markdown +51 -0
  504. package/vendor/rocksdb/docs/_posts/2016-02-24-rocksdb-4-2-release.markdown +41 -0
  505. package/vendor/rocksdb/docs/_posts/2016-02-25-rocksdb-ama.markdown +20 -0
  506. package/vendor/rocksdb/docs/_posts/2016-03-07-rocksdb-options-file.markdown +24 -0
  507. package/vendor/rocksdb/docs/_posts/2016-04-26-rocksdb-4-5-1-released.markdown +60 -0
  508. package/vendor/rocksdb/docs/_posts/2016-07-26-rocksdb-4-8-released.markdown +48 -0
  509. package/vendor/rocksdb/docs/_posts/2016-09-28-rocksdb-4-11-2-released.markdown +49 -0
  510. package/vendor/rocksdb/docs/_posts/2017-01-06-rocksdb-5-0-1-released.markdown +26 -0
  511. package/vendor/rocksdb/docs/_posts/2017-02-07-rocksdb-5-1-2-released.markdown +15 -0
  512. package/vendor/rocksdb/docs/_posts/2017-02-17-bulkoad-ingest-sst-file.markdown +50 -0
  513. package/vendor/rocksdb/docs/_posts/2017-03-02-rocksdb-5-2-1-released.markdown +22 -0
  514. package/vendor/rocksdb/docs/_posts/2017-05-12-partitioned-index-filter.markdown +34 -0
  515. package/vendor/rocksdb/docs/_posts/2017-05-14-core-local-stats.markdown +106 -0
  516. package/vendor/rocksdb/docs/_posts/2017-05-26-rocksdb-5-4-5-released.markdown +39 -0
  517. package/vendor/rocksdb/docs/_posts/2017-06-26-17-level-based-changes.markdown +60 -0
  518. package/vendor/rocksdb/docs/_posts/2017-06-29-rocksdb-5-5-1-released.markdown +22 -0
  519. package/vendor/rocksdb/docs/_posts/2017-07-25-rocksdb-5-6-1-released.markdown +22 -0
  520. package/vendor/rocksdb/docs/_posts/2017-08-24-pinnableslice.markdown +37 -0
  521. package/vendor/rocksdb/docs/_posts/2017-08-25-flushwal.markdown +26 -0
  522. package/vendor/rocksdb/docs/_posts/2017-09-28-rocksdb-5-8-released.markdown +25 -0
  523. package/vendor/rocksdb/docs/_posts/2017-12-18-17-auto-tuned-rate-limiter.markdown +28 -0
  524. package/vendor/rocksdb/docs/_posts/2017-12-19-write-prepared-txn.markdown +41 -0
  525. package/vendor/rocksdb/docs/_posts/2018-02-05-rocksdb-5-10-2-released.markdown +22 -0
  526. package/vendor/rocksdb/docs/_posts/2018-08-01-rocksdb-tuning-advisor.markdown +58 -0
  527. package/vendor/rocksdb/docs/_posts/2018-08-23-data-block-hash-index.markdown +118 -0
  528. package/vendor/rocksdb/docs/_posts/2018-11-21-delete-range.markdown +292 -0
  529. package/vendor/rocksdb/docs/_posts/2019-03-08-format-version-4.markdown +36 -0
  530. package/vendor/rocksdb/docs/_posts/2019-08-15-unordered-write.markdown +56 -0
  531. package/vendor/rocksdb/docs/_posts/2021-04-12-universal-improvements.markdown +46 -0
  532. package/vendor/rocksdb/docs/_posts/2021-05-26-integrated-blob-db.markdown +101 -0
  533. package/vendor/rocksdb/docs/_posts/2021-05-26-online-validation.markdown +17 -0
  534. package/vendor/rocksdb/docs/_posts/2021-05-27-rocksdb-secondary-cache.markdown +195 -0
  535. package/vendor/rocksdb/docs/_posts/2021-05-31-dictionary-compression.markdown +157 -0
  536. package/vendor/rocksdb/docs/_posts/2021-12-29-ribbon-filter.markdown +281 -0
  537. package/vendor/rocksdb/docs/_posts/2022-07-18-per-key-value-checksum.markdown +142 -0
  538. package/vendor/rocksdb/docs/_posts/2022-10-05-lost-buffered-write-recovery.markdown +123 -0
  539. package/vendor/rocksdb/docs/_posts/2022-10-07-asynchronous-io-in-rocksdb.markdown +133 -0
  540. package/vendor/rocksdb/docs/_posts/2022-10-31-align-compaction-output-file.markdown +107 -0
  541. package/vendor/rocksdb/docs/_posts/2022-11-09-time-aware-tiered-storage.markdown +121 -0
  542. package/vendor/rocksdb/docs/_sass/_base.scss +492 -0
  543. package/vendor/rocksdb/docs/_sass/_blog.scss +47 -0
  544. package/vendor/rocksdb/docs/_sass/_buttons.scss +47 -0
  545. package/vendor/rocksdb/docs/_sass/_footer.scss +82 -0
  546. package/vendor/rocksdb/docs/_sass/_gridBlock.scss +115 -0
  547. package/vendor/rocksdb/docs/_sass/_header.scss +139 -0
  548. package/vendor/rocksdb/docs/_sass/_poweredby.scss +69 -0
  549. package/vendor/rocksdb/docs/_sass/_promo.scss +55 -0
  550. package/vendor/rocksdb/docs/_sass/_react_docs_nav.scss +332 -0
  551. package/vendor/rocksdb/docs/_sass/_react_header_nav.scss +141 -0
  552. package/vendor/rocksdb/docs/_sass/_reset.scss +43 -0
  553. package/vendor/rocksdb/docs/_sass/_search.scss +142 -0
  554. package/vendor/rocksdb/docs/_sass/_slideshow.scss +48 -0
  555. package/vendor/rocksdb/docs/_sass/_syntax-highlighting.scss +129 -0
  556. package/vendor/rocksdb/docs/_sass/_tables.scss +47 -0
  557. package/vendor/rocksdb/docs/_top-level/support.md +22 -0
  558. package/vendor/rocksdb/docs/blog/all.html +20 -0
  559. package/vendor/rocksdb/docs/blog/index.html +12 -0
  560. package/vendor/rocksdb/docs/css/main.scss +159 -0
  561. package/vendor/rocksdb/docs/doc-type-examples/2016-04-07-blog-post-example.md +21 -0
  562. package/vendor/rocksdb/docs/doc-type-examples/docs-hello-world.md +12 -0
  563. package/vendor/rocksdb/docs/doc-type-examples/top-level-example.md +8 -0
  564. package/vendor/rocksdb/docs/docs/index.html +6 -0
  565. package/vendor/rocksdb/docs/feed.xml +30 -0
  566. package/vendor/rocksdb/docs/index.md +9 -0
  567. package/vendor/rocksdb/docs/static/favicon.png +0 -0
  568. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Black.woff +0 -0
  569. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Black.woff2 +0 -0
  570. package/vendor/rocksdb/docs/static/fonts/LatoLatin-BlackItalic.woff +0 -0
  571. package/vendor/rocksdb/docs/static/fonts/LatoLatin-BlackItalic.woff2 +0 -0
  572. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Italic.woff +0 -0
  573. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Italic.woff2 +0 -0
  574. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Light.woff +0 -0
  575. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Light.woff2 +0 -0
  576. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Regular.woff +0 -0
  577. package/vendor/rocksdb/docs/static/fonts/LatoLatin-Regular.woff2 +0 -0
  578. package/vendor/rocksdb/docs/static/images/Resize-of-20140327_200754-300x225.jpg +0 -0
  579. package/vendor/rocksdb/docs/static/images/align-compaction-output/compaction_output_file_size_compare.png +0 -0
  580. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_align.png +0 -0
  581. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_normal.png +0 -0
  582. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_cut_trival_move.png +0 -0
  583. package/vendor/rocksdb/docs/static/images/align-compaction-output/file_size_compare.png +0 -0
  584. package/vendor/rocksdb/docs/static/images/align-compaction-output/write_amp_compare.png +0 -0
  585. package/vendor/rocksdb/docs/static/images/asynchronous-io/mget_async.png +0 -0
  586. package/vendor/rocksdb/docs/static/images/asynchronous-io/scan_async.png +0 -0
  587. package/vendor/rocksdb/docs/static/images/binaryseek.png +0 -0
  588. package/vendor/rocksdb/docs/static/images/bloom_fp_vs_bpk.png +0 -0
  589. package/vendor/rocksdb/docs/static/images/compaction/full-range.png +0 -0
  590. package/vendor/rocksdb/docs/static/images/compaction/l0-l1-contend.png +0 -0
  591. package/vendor/rocksdb/docs/static/images/compaction/l1-l2-contend.png +0 -0
  592. package/vendor/rocksdb/docs/static/images/compaction/part-range-old.png +0 -0
  593. package/vendor/rocksdb/docs/static/images/data-block-hash-index/block-format-binary-seek.png +0 -0
  594. package/vendor/rocksdb/docs/static/images/data-block-hash-index/block-format-hash-index.png +0 -0
  595. package/vendor/rocksdb/docs/static/images/data-block-hash-index/hash-index-data-structure.png +0 -0
  596. package/vendor/rocksdb/docs/static/images/data-block-hash-index/perf-cache-miss.png +0 -0
  597. package/vendor/rocksdb/docs/static/images/data-block-hash-index/perf-throughput.png +0 -0
  598. package/vendor/rocksdb/docs/static/images/delrange/delrange_collapsed.png +0 -0
  599. package/vendor/rocksdb/docs/static/images/delrange/delrange_key_schema.png +0 -0
  600. package/vendor/rocksdb/docs/static/images/delrange/delrange_sst_blocks.png +0 -0
  601. package/vendor/rocksdb/docs/static/images/delrange/delrange_uncollapsed.png +0 -0
  602. package/vendor/rocksdb/docs/static/images/delrange/delrange_write_path.png +0 -0
  603. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_raw_sampled.png +0 -0
  604. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_sst_blocks.png +0 -0
  605. package/vendor/rocksdb/docs/static/images/dictcmp/dictcmp_zstd_trained.png +0 -0
  606. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Legacy_Vs_Integrated.png +0 -0
  607. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_RW_RO_Perf.png +0 -0
  608. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Write_Amp.png +0 -0
  609. package/vendor/rocksdb/docs/static/images/integrated-blob-db/BlobDB_Benchmarks_Write_Perf.png +0 -0
  610. package/vendor/rocksdb/docs/static/images/kv-checksum/Memtable-entry.png +0 -0
  611. package/vendor/rocksdb/docs/static/images/kv-checksum/Memtable-write.png +0 -0
  612. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Memtable.png +0 -0
  613. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Writebatch-to-Memtable.png +0 -0
  614. package/vendor/rocksdb/docs/static/images/kv-checksum/ProtInfo-Writebatch.png +0 -0
  615. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-fragment.png +0 -0
  616. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-read.png +0 -0
  617. package/vendor/rocksdb/docs/static/images/kv-checksum/WAL-write.png +0 -0
  618. package/vendor/rocksdb/docs/static/images/kv-checksum/Write-batch.png +0 -0
  619. package/vendor/rocksdb/docs/static/images/kv-checksum/Writebatch-write.png +0 -0
  620. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/angry-cat.png +0 -0
  621. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/basic-setup.png +0 -0
  622. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/happy-cat.png +0 -0
  623. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/replay-extension.png +0 -0
  624. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/test-fs-writable-file.png +0 -0
  625. package/vendor/rocksdb/docs/static/images/lost-buffered-write-recovery/trace-extension.png +0 -0
  626. package/vendor/rocksdb/docs/static/images/pcache-blockindex.jpg +0 -0
  627. package/vendor/rocksdb/docs/static/images/pcache-fileindex.jpg +0 -0
  628. package/vendor/rocksdb/docs/static/images/pcache-filelayout.jpg +0 -0
  629. package/vendor/rocksdb/docs/static/images/pcache-readiopath.jpg +0 -0
  630. package/vendor/rocksdb/docs/static/images/pcache-tieredstorage.jpg +0 -0
  631. package/vendor/rocksdb/docs/static/images/pcache-writeiopath.jpg +0 -0
  632. package/vendor/rocksdb/docs/static/images/promo-adapt.svg +8 -0
  633. package/vendor/rocksdb/docs/static/images/promo-flash.svg +28 -0
  634. package/vendor/rocksdb/docs/static/images/promo-operations.svg +6 -0
  635. package/vendor/rocksdb/docs/static/images/promo-performance.svg +134 -0
  636. package/vendor/rocksdb/docs/static/images/rate-limiter/auto-tuned-write-KBps-series.png +0 -0
  637. package/vendor/rocksdb/docs/static/images/rate-limiter/write-KBps-cdf.png +0 -0
  638. package/vendor/rocksdb/docs/static/images/rate-limiter/write-KBps-series.png +0 -0
  639. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/Mixgraph_hit_rate.png +0 -0
  640. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/Mixgraph_throughput.png +0 -0
  641. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/arch_diagram.png +0 -0
  642. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/insert_flow.png +0 -0
  643. package/vendor/rocksdb/docs/static/images/rocksdb-secondary-cache/lookup_flow.png +0 -0
  644. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/compaction_moving_up_conflict.png +0 -0
  645. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/per_key_placement_compaction.png +0 -0
  646. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_design.png +0 -0
  647. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_overview.png +0 -0
  648. package/vendor/rocksdb/docs/static/images/time-aware-tiered-storage/tiered_storage_problem.png +0 -0
  649. package/vendor/rocksdb/docs/static/images/tree_example1.png +0 -0
  650. package/vendor/rocksdb/docs/static/logo.svg +76 -0
  651. package/vendor/rocksdb/docs/static/og_image.png +0 -0
  652. package/vendor/rocksdb/env/composite_env.cc +534 -0
  653. package/vendor/rocksdb/env/composite_env_wrapper.h +378 -0
  654. package/vendor/rocksdb/env/emulated_clock.h +114 -0
  655. package/vendor/rocksdb/env/env.cc +1233 -0
  656. package/vendor/rocksdb/env/env_basic_test.cc +397 -0
  657. package/vendor/rocksdb/env/env_chroot.cc +148 -0
  658. package/vendor/rocksdb/env/env_chroot.h +55 -0
  659. package/vendor/rocksdb/env/env_encryption.cc +1346 -0
  660. package/vendor/rocksdb/env/env_encryption_ctr.h +114 -0
  661. package/vendor/rocksdb/env/env_posix.cc +524 -0
  662. package/vendor/rocksdb/env/env_test.cc +3577 -0
  663. package/vendor/rocksdb/env/file_system.cc +277 -0
  664. package/vendor/rocksdb/env/file_system_tracer.cc +564 -0
  665. package/vendor/rocksdb/env/file_system_tracer.h +461 -0
  666. package/vendor/rocksdb/env/fs_posix.cc +1284 -0
  667. package/vendor/rocksdb/env/fs_readonly.h +105 -0
  668. package/vendor/rocksdb/env/fs_remap.cc +341 -0
  669. package/vendor/rocksdb/env/fs_remap.h +137 -0
  670. package/vendor/rocksdb/env/io_posix.cc +1733 -0
  671. package/vendor/rocksdb/env/io_posix.h +523 -0
  672. package/vendor/rocksdb/env/io_posix_test.cc +141 -0
  673. package/vendor/rocksdb/env/mock_env.cc +1058 -0
  674. package/vendor/rocksdb/env/mock_env.h +144 -0
  675. package/vendor/rocksdb/env/mock_env_test.cc +84 -0
  676. package/vendor/rocksdb/env/unique_id_gen.cc +164 -0
  677. package/vendor/rocksdb/env/unique_id_gen.h +85 -0
  678. package/vendor/rocksdb/examples/CMakeLists.txt +45 -0
  679. package/vendor/rocksdb/examples/Makefile +58 -0
  680. package/vendor/rocksdb/examples/README.md +2 -0
  681. package/vendor/rocksdb/examples/c_simple_example.c +96 -0
  682. package/vendor/rocksdb/examples/column_families_example.cc +88 -0
  683. package/vendor/rocksdb/examples/compact_files_example.cc +177 -0
  684. package/vendor/rocksdb/examples/compaction_filter_example.cc +96 -0
  685. package/vendor/rocksdb/examples/multi_processes_example.cc +393 -0
  686. package/vendor/rocksdb/examples/optimistic_transaction_example.cc +190 -0
  687. package/vendor/rocksdb/examples/options_file_example.cc +132 -0
  688. package/vendor/rocksdb/examples/rocksdb_backup_restore_example.cc +99 -0
  689. package/vendor/rocksdb/examples/rocksdb_option_file_example.ini +142 -0
  690. package/vendor/rocksdb/examples/simple_example.cc +93 -0
  691. package/vendor/rocksdb/examples/transaction_example.cc +196 -0
  692. package/vendor/rocksdb/file/delete_scheduler.cc +409 -0
  693. package/vendor/rocksdb/file/delete_scheduler.h +147 -0
  694. package/vendor/rocksdb/file/delete_scheduler_test.cc +717 -0
  695. package/vendor/rocksdb/file/file_prefetch_buffer.cc +955 -0
  696. package/vendor/rocksdb/file/file_prefetch_buffer.h +471 -0
  697. package/vendor/rocksdb/file/file_util.cc +277 -0
  698. package/vendor/rocksdb/file/file_util.h +91 -0
  699. package/vendor/rocksdb/file/filename.cc +523 -0
  700. package/vendor/rocksdb/file/filename.h +188 -0
  701. package/vendor/rocksdb/file/line_file_reader.cc +73 -0
  702. package/vendor/rocksdb/file/line_file_reader.h +60 -0
  703. package/vendor/rocksdb/file/prefetch_test.cc +2374 -0
  704. package/vendor/rocksdb/file/random_access_file_reader.cc +599 -0
  705. package/vendor/rocksdb/file/random_access_file_reader.h +210 -0
  706. package/vendor/rocksdb/file/random_access_file_reader_test.cc +479 -0
  707. package/vendor/rocksdb/file/read_write_util.cc +33 -0
  708. package/vendor/rocksdb/file/read_write_util.h +31 -0
  709. package/vendor/rocksdb/file/readahead_file_info.h +33 -0
  710. package/vendor/rocksdb/file/readahead_raf.cc +169 -0
  711. package/vendor/rocksdb/file/readahead_raf.h +29 -0
  712. package/vendor/rocksdb/file/sequence_file_reader.cc +320 -0
  713. package/vendor/rocksdb/file/sequence_file_reader.h +119 -0
  714. package/vendor/rocksdb/file/sst_file_manager_impl.cc +507 -0
  715. package/vendor/rocksdb/file/sst_file_manager_impl.h +193 -0
  716. package/vendor/rocksdb/file/writable_file_writer.cc +989 -0
  717. package/vendor/rocksdb/file/writable_file_writer.h +320 -0
  718. package/vendor/rocksdb/fuzz/Makefile +67 -0
  719. package/vendor/rocksdb/fuzz/README.md +165 -0
  720. package/vendor/rocksdb/fuzz/db_fuzzer.cc +172 -0
  721. package/vendor/rocksdb/fuzz/db_map_fuzzer.cc +107 -0
  722. package/vendor/rocksdb/fuzz/proto/db_operation.proto +28 -0
  723. package/vendor/rocksdb/fuzz/sst_file_writer_fuzzer.cc +210 -0
  724. package/vendor/rocksdb/fuzz/util.h +29 -0
  725. package/vendor/rocksdb/include/rocksdb/advanced_cache.h +623 -0
  726. package/vendor/rocksdb/include/rocksdb/advanced_options.h +1177 -0
  727. package/vendor/rocksdb/include/rocksdb/block_cache_trace_writer.h +149 -0
  728. package/vendor/rocksdb/include/rocksdb/c.h +2864 -0
  729. package/vendor/rocksdb/include/rocksdb/cache.h +442 -0
  730. package/vendor/rocksdb/include/rocksdb/cache_bench_tool.h +14 -0
  731. package/vendor/rocksdb/include/rocksdb/cleanable.h +128 -0
  732. package/vendor/rocksdb/include/rocksdb/compaction_filter.h +363 -0
  733. package/vendor/rocksdb/include/rocksdb/compaction_job_stats.h +109 -0
  734. package/vendor/rocksdb/include/rocksdb/comparator.h +164 -0
  735. package/vendor/rocksdb/include/rocksdb/compression_type.h +40 -0
  736. package/vendor/rocksdb/include/rocksdb/concurrent_task_limiter.h +51 -0
  737. package/vendor/rocksdb/include/rocksdb/configurable.h +390 -0
  738. package/vendor/rocksdb/include/rocksdb/convenience.h +466 -0
  739. package/vendor/rocksdb/include/rocksdb/customizable.h +229 -0
  740. package/vendor/rocksdb/include/rocksdb/data_structure.h +186 -0
  741. package/vendor/rocksdb/include/rocksdb/db.h +1980 -0
  742. package/vendor/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  743. package/vendor/rocksdb/include/rocksdb/db_dump_tool.h +43 -0
  744. package/vendor/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  745. package/vendor/rocksdb/include/rocksdb/env.h +1882 -0
  746. package/vendor/rocksdb/include/rocksdb/env_encryption.h +463 -0
  747. package/vendor/rocksdb/include/rocksdb/experimental.h +56 -0
  748. package/vendor/rocksdb/include/rocksdb/file_checksum.h +146 -0
  749. package/vendor/rocksdb/include/rocksdb/file_system.h +1849 -0
  750. package/vendor/rocksdb/include/rocksdb/filter_policy.h +206 -0
  751. package/vendor/rocksdb/include/rocksdb/flush_block_policy.h +75 -0
  752. package/vendor/rocksdb/include/rocksdb/functor_wrapper.h +56 -0
  753. package/vendor/rocksdb/include/rocksdb/io_status.h +244 -0
  754. package/vendor/rocksdb/include/rocksdb/iostats_context.h +98 -0
  755. package/vendor/rocksdb/include/rocksdb/iterator.h +144 -0
  756. package/vendor/rocksdb/include/rocksdb/ldb_tool.h +42 -0
  757. package/vendor/rocksdb/include/rocksdb/listener.h +840 -0
  758. package/vendor/rocksdb/include/rocksdb/memory_allocator.h +87 -0
  759. package/vendor/rocksdb/include/rocksdb/memtablerep.h +421 -0
  760. package/vendor/rocksdb/include/rocksdb/merge_operator.h +286 -0
  761. package/vendor/rocksdb/include/rocksdb/metadata.h +258 -0
  762. package/vendor/rocksdb/include/rocksdb/options.h +2083 -0
  763. package/vendor/rocksdb/include/rocksdb/perf_context.h +314 -0
  764. package/vendor/rocksdb/include/rocksdb/perf_level.h +36 -0
  765. package/vendor/rocksdb/include/rocksdb/persistent_cache.h +74 -0
  766. package/vendor/rocksdb/include/rocksdb/port_defs.h +22 -0
  767. package/vendor/rocksdb/include/rocksdb/rate_limiter.h +159 -0
  768. package/vendor/rocksdb/include/rocksdb/rocksdb_namespace.h +16 -0
  769. package/vendor/rocksdb/include/rocksdb/secondary_cache.h +139 -0
  770. package/vendor/rocksdb/include/rocksdb/slice.h +264 -0
  771. package/vendor/rocksdb/include/rocksdb/slice_transform.h +135 -0
  772. package/vendor/rocksdb/include/rocksdb/snapshot.h +53 -0
  773. package/vendor/rocksdb/include/rocksdb/sst_dump_tool.h +17 -0
  774. package/vendor/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  775. package/vendor/rocksdb/include/rocksdb/sst_file_reader.h +45 -0
  776. package/vendor/rocksdb/include/rocksdb/sst_file_writer.h +189 -0
  777. package/vendor/rocksdb/include/rocksdb/sst_partitioner.h +142 -0
  778. package/vendor/rocksdb/include/rocksdb/statistics.h +757 -0
  779. package/vendor/rocksdb/include/rocksdb/stats_history.h +70 -0
  780. package/vendor/rocksdb/include/rocksdb/status.h +574 -0
  781. package/vendor/rocksdb/include/rocksdb/system_clock.h +114 -0
  782. package/vendor/rocksdb/include/rocksdb/table.h +927 -0
  783. package/vendor/rocksdb/include/rocksdb/table_properties.h +332 -0
  784. package/vendor/rocksdb/include/rocksdb/table_reader_caller.h +41 -0
  785. package/vendor/rocksdb/include/rocksdb/thread_status.h +190 -0
  786. package/vendor/rocksdb/include/rocksdb/threadpool.h +67 -0
  787. package/vendor/rocksdb/include/rocksdb/trace_reader_writer.h +52 -0
  788. package/vendor/rocksdb/include/rocksdb/trace_record.h +248 -0
  789. package/vendor/rocksdb/include/rocksdb/trace_record_result.h +187 -0
  790. package/vendor/rocksdb/include/rocksdb/transaction_log.h +122 -0
  791. package/vendor/rocksdb/include/rocksdb/types.h +94 -0
  792. package/vendor/rocksdb/include/rocksdb/unique_id.h +55 -0
  793. package/vendor/rocksdb/include/rocksdb/universal_compaction.h +96 -0
  794. package/vendor/rocksdb/include/rocksdb/utilities/agg_merge.h +138 -0
  795. package/vendor/rocksdb/include/rocksdb/utilities/backup_engine.h +689 -0
  796. package/vendor/rocksdb/include/rocksdb/utilities/cache_dump_load.h +140 -0
  797. package/vendor/rocksdb/include/rocksdb/utilities/checkpoint.h +63 -0
  798. package/vendor/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  799. package/vendor/rocksdb/include/rocksdb/utilities/customizable_util.h +322 -0
  800. package/vendor/rocksdb/include/rocksdb/utilities/db_ttl.h +70 -0
  801. package/vendor/rocksdb/include/rocksdb/utilities/debug.h +46 -0
  802. package/vendor/rocksdb/include/rocksdb/utilities/env_mirror.h +179 -0
  803. package/vendor/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  804. package/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd.h +316 -0
  805. package/vendor/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +75 -0
  806. package/vendor/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  807. package/vendor/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  808. package/vendor/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  809. package/vendor/rocksdb/include/rocksdb/utilities/memory_util.h +48 -0
  810. package/vendor/rocksdb/include/rocksdb/utilities/object_registry.h +583 -0
  811. package/vendor/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +98 -0
  812. package/vendor/rocksdb/include/rocksdb/utilities/option_change_migration.h +24 -0
  813. package/vendor/rocksdb/include/rocksdb/utilities/options_type.h +1221 -0
  814. package/vendor/rocksdb/include/rocksdb/utilities/options_util.h +105 -0
  815. package/vendor/rocksdb/include/rocksdb/utilities/replayer.h +85 -0
  816. package/vendor/rocksdb/include/rocksdb/utilities/sim_cache.h +93 -0
  817. package/vendor/rocksdb/include/rocksdb/utilities/stackable_db.h +587 -0
  818. package/vendor/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +88 -0
  819. package/vendor/rocksdb/include/rocksdb/utilities/transaction.h +683 -0
  820. package/vendor/rocksdb/include/rocksdb/utilities/transaction_db.h +506 -0
  821. package/vendor/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +89 -0
  822. package/vendor/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +307 -0
  823. package/vendor/rocksdb/include/rocksdb/version.h +43 -0
  824. package/vendor/rocksdb/include/rocksdb/wal_filter.h +111 -0
  825. package/vendor/rocksdb/include/rocksdb/wide_columns.h +210 -0
  826. package/vendor/rocksdb/include/rocksdb/write_batch.h +494 -0
  827. package/vendor/rocksdb/include/rocksdb/write_batch_base.h +144 -0
  828. package/vendor/rocksdb/include/rocksdb/write_buffer_manager.h +183 -0
  829. package/vendor/rocksdb/issue_template.md +7 -0
  830. package/vendor/rocksdb/java/CMakeLists.txt +549 -0
  831. package/vendor/rocksdb/java/GetBenchmarks.md +161 -0
  832. package/vendor/rocksdb/java/HISTORY-JAVA.md +86 -0
  833. package/vendor/rocksdb/java/Makefile +453 -0
  834. package/vendor/rocksdb/java/RELEASE.md +59 -0
  835. package/vendor/rocksdb/java/benchmark/src/main/java/org/rocksdb/benchmark/DbBenchmark.java +1640 -0
  836. package/vendor/rocksdb/java/crossbuild/Vagrantfile +51 -0
  837. package/vendor/rocksdb/java/crossbuild/build-linux-alpine.sh +70 -0
  838. package/vendor/rocksdb/java/crossbuild/build-linux-centos.sh +38 -0
  839. package/vendor/rocksdb/java/crossbuild/build-linux.sh +15 -0
  840. package/vendor/rocksdb/java/crossbuild/docker-build-linux-alpine.sh +17 -0
  841. package/vendor/rocksdb/java/crossbuild/docker-build-linux-centos.sh +38 -0
  842. package/vendor/rocksdb/java/jdb_bench.sh +13 -0
  843. package/vendor/rocksdb/java/jmh/LICENSE-HEADER.txt +5 -0
  844. package/vendor/rocksdb/java/jmh/README.md +24 -0
  845. package/vendor/rocksdb/java/jmh/pom.xml +138 -0
  846. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/ComparatorBenchmarks.java +139 -0
  847. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/GetBenchmarks.java +215 -0
  848. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/MultiGetBenchmarks.java +214 -0
  849. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/jmh/PutBenchmarks.java +112 -0
  850. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/util/FileUtils.java +59 -0
  851. package/vendor/rocksdb/java/jmh/src/main/java/org/rocksdb/util/KVUtils.java +72 -0
  852. package/vendor/rocksdb/java/pom.xml.template +178 -0
  853. package/vendor/rocksdb/java/rocksjni/backup_engine_options.cc +365 -0
  854. package/vendor/rocksdb/java/rocksjni/backupenginejni.cc +279 -0
  855. package/vendor/rocksdb/java/rocksjni/cache.cc +34 -0
  856. package/vendor/rocksdb/java/rocksjni/cassandra_compactionfilterjni.cc +25 -0
  857. package/vendor/rocksdb/java/rocksjni/cassandra_value_operator.cc +50 -0
  858. package/vendor/rocksdb/java/rocksjni/checkpoint.cc +71 -0
  859. package/vendor/rocksdb/java/rocksjni/clock_cache.cc +42 -0
  860. package/vendor/rocksdb/java/rocksjni/columnfamilyhandle.cc +72 -0
  861. package/vendor/rocksdb/java/rocksjni/compact_range_options.cc +222 -0
  862. package/vendor/rocksdb/java/rocksjni/compaction_filter.cc +29 -0
  863. package/vendor/rocksdb/java/rocksjni/compaction_filter_factory.cc +42 -0
  864. package/vendor/rocksdb/java/rocksjni/compaction_filter_factory_jnicallback.cc +79 -0
  865. package/vendor/rocksdb/java/rocksjni/compaction_filter_factory_jnicallback.h +37 -0
  866. package/vendor/rocksdb/java/rocksjni/compaction_job_info.cc +230 -0
  867. package/vendor/rocksdb/java/rocksjni/compaction_job_stats.cc +345 -0
  868. package/vendor/rocksdb/java/rocksjni/compaction_options.cc +112 -0
  869. package/vendor/rocksdb/java/rocksjni/compaction_options_fifo.cc +83 -0
  870. package/vendor/rocksdb/java/rocksjni/compaction_options_universal.cc +209 -0
  871. package/vendor/rocksdb/java/rocksjni/comparator.cc +60 -0
  872. package/vendor/rocksdb/java/rocksjni/comparatorjnicallback.cc +647 -0
  873. package/vendor/rocksdb/java/rocksjni/comparatorjnicallback.h +137 -0
  874. package/vendor/rocksdb/java/rocksjni/compression_options.cc +214 -0
  875. package/vendor/rocksdb/java/rocksjni/concurrent_task_limiter.cc +97 -0
  876. package/vendor/rocksdb/java/rocksjni/config_options.cc +103 -0
  877. package/vendor/rocksdb/java/rocksjni/cplusplus_to_java_convert.h +37 -0
  878. package/vendor/rocksdb/java/rocksjni/env.cc +205 -0
  879. package/vendor/rocksdb/java/rocksjni/env_options.cc +305 -0
  880. package/vendor/rocksdb/java/rocksjni/event_listener.cc +44 -0
  881. package/vendor/rocksdb/java/rocksjni/event_listener_jnicallback.cc +502 -0
  882. package/vendor/rocksdb/java/rocksjni/event_listener_jnicallback.h +122 -0
  883. package/vendor/rocksdb/java/rocksjni/filter.cc +46 -0
  884. package/vendor/rocksdb/java/rocksjni/ingest_external_file_options.cc +199 -0
  885. package/vendor/rocksdb/java/rocksjni/iterator.cc +340 -0
  886. package/vendor/rocksdb/java/rocksjni/jnicallback.cc +54 -0
  887. package/vendor/rocksdb/java/rocksjni/jnicallback.h +32 -0
  888. package/vendor/rocksdb/java/rocksjni/loggerjnicallback.cc +299 -0
  889. package/vendor/rocksdb/java/rocksjni/loggerjnicallback.h +51 -0
  890. package/vendor/rocksdb/java/rocksjni/lru_cache.cc +49 -0
  891. package/vendor/rocksdb/java/rocksjni/memory_util.cc +100 -0
  892. package/vendor/rocksdb/java/rocksjni/memtablejni.cc +94 -0
  893. package/vendor/rocksdb/java/rocksjni/merge_operator.cc +98 -0
  894. package/vendor/rocksdb/java/rocksjni/native_comparator_wrapper_test.cc +45 -0
  895. package/vendor/rocksdb/java/rocksjni/optimistic_transaction_db.cc +270 -0
  896. package/vendor/rocksdb/java/rocksjni/optimistic_transaction_options.cc +78 -0
  897. package/vendor/rocksdb/java/rocksjni/options.cc +8695 -0
  898. package/vendor/rocksdb/java/rocksjni/options_util.cc +139 -0
  899. package/vendor/rocksdb/java/rocksjni/persistent_cache.cc +60 -0
  900. package/vendor/rocksdb/java/rocksjni/portal.h +8706 -0
  901. package/vendor/rocksdb/java/rocksjni/ratelimiterjni.cc +128 -0
  902. package/vendor/rocksdb/java/rocksjni/remove_emptyvalue_compactionfilterjni.cc +24 -0
  903. package/vendor/rocksdb/java/rocksjni/restorejni.cc +42 -0
  904. package/vendor/rocksdb/java/rocksjni/rocks_callback_object.cc +30 -0
  905. package/vendor/rocksdb/java/rocksjni/rocksdb_exception_test.cc +81 -0
  906. package/vendor/rocksdb/java/rocksjni/rocksjni.cc +3957 -0
  907. package/vendor/rocksdb/java/rocksjni/slice.cc +374 -0
  908. package/vendor/rocksdb/java/rocksjni/snapshot.cc +27 -0
  909. package/vendor/rocksdb/java/rocksjni/sst_file_manager.cc +250 -0
  910. package/vendor/rocksdb/java/rocksjni/sst_file_reader_iterator.cc +373 -0
  911. package/vendor/rocksdb/java/rocksjni/sst_file_readerjni.cc +118 -0
  912. package/vendor/rocksdb/java/rocksjni/sst_file_writerjni.cc +310 -0
  913. package/vendor/rocksdb/java/rocksjni/sst_partitioner.cc +43 -0
  914. package/vendor/rocksdb/java/rocksjni/statistics.cc +268 -0
  915. package/vendor/rocksdb/java/rocksjni/statisticsjni.cc +31 -0
  916. package/vendor/rocksdb/java/rocksjni/statisticsjni.h +34 -0
  917. package/vendor/rocksdb/java/rocksjni/table.cc +145 -0
  918. package/vendor/rocksdb/java/rocksjni/table_filter.cc +27 -0
  919. package/vendor/rocksdb/java/rocksjni/table_filter_jnicallback.cc +66 -0
  920. package/vendor/rocksdb/java/rocksjni/table_filter_jnicallback.h +36 -0
  921. package/vendor/rocksdb/java/rocksjni/testable_event_listener.cc +219 -0
  922. package/vendor/rocksdb/java/rocksjni/thread_status.cc +125 -0
  923. package/vendor/rocksdb/java/rocksjni/trace_writer.cc +24 -0
  924. package/vendor/rocksdb/java/rocksjni/trace_writer_jnicallback.cc +118 -0
  925. package/vendor/rocksdb/java/rocksjni/trace_writer_jnicallback.h +36 -0
  926. package/vendor/rocksdb/java/rocksjni/transaction.cc +1655 -0
  927. package/vendor/rocksdb/java/rocksjni/transaction_db.cc +451 -0
  928. package/vendor/rocksdb/java/rocksjni/transaction_db_options.cc +169 -0
  929. package/vendor/rocksdb/java/rocksjni/transaction_log.cc +80 -0
  930. package/vendor/rocksdb/java/rocksjni/transaction_notifier.cc +44 -0
  931. package/vendor/rocksdb/java/rocksjni/transaction_notifier_jnicallback.cc +42 -0
  932. package/vendor/rocksdb/java/rocksjni/transaction_notifier_jnicallback.h +42 -0
  933. package/vendor/rocksdb/java/rocksjni/transaction_options.cc +191 -0
  934. package/vendor/rocksdb/java/rocksjni/ttl.cc +212 -0
  935. package/vendor/rocksdb/java/rocksjni/wal_filter.cc +24 -0
  936. package/vendor/rocksdb/java/rocksjni/wal_filter_jnicallback.cc +139 -0
  937. package/vendor/rocksdb/java/rocksjni/wal_filter_jnicallback.h +42 -0
  938. package/vendor/rocksdb/java/rocksjni/write_batch.cc +676 -0
  939. package/vendor/rocksdb/java/rocksjni/write_batch_test.cc +199 -0
  940. package/vendor/rocksdb/java/rocksjni/write_batch_with_index.cc +953 -0
  941. package/vendor/rocksdb/java/rocksjni/write_buffer_manager.cc +47 -0
  942. package/vendor/rocksdb/java/rocksjni/writebatchhandlerjnicallback.cc +519 -0
  943. package/vendor/rocksdb/java/rocksjni/writebatchhandlerjnicallback.h +92 -0
  944. package/vendor/rocksdb/java/samples/src/main/java/OptimisticTransactionSample.java +184 -0
  945. package/vendor/rocksdb/java/samples/src/main/java/RocksDBColumnFamilySample.java +78 -0
  946. package/vendor/rocksdb/java/samples/src/main/java/RocksDBSample.java +295 -0
  947. package/vendor/rocksdb/java/samples/src/main/java/TransactionSample.java +183 -0
  948. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractCompactionFilter.java +59 -0
  949. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractCompactionFilterFactory.java +77 -0
  950. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractComparator.java +124 -0
  951. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractComparatorJniBridge.java +119 -0
  952. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractEventListener.java +334 -0
  953. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractImmutableNativeReference.java +65 -0
  954. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractMutableOptions.java +368 -0
  955. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractNativeReference.java +49 -0
  956. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractRocksIterator.java +146 -0
  957. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractSlice.java +191 -0
  958. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTableFilter.java +20 -0
  959. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTraceWriter.java +70 -0
  960. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractTransactionNotifier.java +54 -0
  961. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractWalFilter.java +49 -0
  962. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AbstractWriteBatch.java +203 -0
  963. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AccessHint.java +53 -0
  964. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AdvancedColumnFamilyOptionsInterface.java +463 -0
  965. package/vendor/rocksdb/java/src/main/java/org/rocksdb/AdvancedMutableColumnFamilyOptionsInterface.java +830 -0
  966. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackgroundErrorReason.java +46 -0
  967. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupEngine.java +259 -0
  968. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupEngineOptions.java +458 -0
  969. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BackupInfo.java +76 -0
  970. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BlockBasedTableConfig.java +951 -0
  971. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BloomFilter.java +73 -0
  972. package/vendor/rocksdb/java/src/main/java/org/rocksdb/BuiltinComparator.java +20 -0
  973. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ByteBufferGetStatus.java +50 -0
  974. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Cache.java +40 -0
  975. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CassandraCompactionFilter.java +20 -0
  976. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CassandraValueMergeOperator.java +25 -0
  977. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Checkpoint.java +62 -0
  978. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ChecksumType.java +45 -0
  979. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ClockCache.java +59 -0
  980. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyDescriptor.java +84 -0
  981. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyHandle.java +151 -0
  982. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyMetaData.java +70 -0
  983. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyOptions.java +1543 -0
  984. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ColumnFamilyOptionsInterface.java +536 -0
  985. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactRangeOptions.java +245 -0
  986. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionJobInfo.java +161 -0
  987. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionJobStats.java +295 -0
  988. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptions.java +121 -0
  989. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptionsFIFO.java +87 -0
  990. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionOptionsUniversal.java +273 -0
  991. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionPriority.java +81 -0
  992. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionReason.java +141 -0
  993. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionStopStyle.java +55 -0
  994. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompactionStyle.java +81 -0
  995. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ComparatorOptions.java +133 -0
  996. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ComparatorType.java +48 -0
  997. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompressionOptions.java +150 -0
  998. package/vendor/rocksdb/java/src/main/java/org/rocksdb/CompressionType.java +121 -0
  999. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConcurrentTaskLimiter.java +44 -0
  1000. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConcurrentTaskLimiterImpl.java +48 -0
  1001. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ConfigOptions.java +53 -0
  1002. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DBOptions.java +1496 -0
  1003. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DBOptionsInterface.java +1756 -0
  1004. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DataBlockIndexType.java +32 -0
  1005. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DbPath.java +47 -0
  1006. package/vendor/rocksdb/java/src/main/java/org/rocksdb/DirectSlice.java +136 -0
  1007. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EncodingType.java +55 -0
  1008. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Env.java +167 -0
  1009. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EnvOptions.java +366 -0
  1010. package/vendor/rocksdb/java/src/main/java/org/rocksdb/EventListener.java +335 -0
  1011. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Experimental.java +23 -0
  1012. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ExternalFileIngestionInfo.java +103 -0
  1013. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FileOperationInfo.java +112 -0
  1014. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Filter.java +36 -0
  1015. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushJobInfo.java +186 -0
  1016. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushOptions.java +90 -0
  1017. package/vendor/rocksdb/java/src/main/java/org/rocksdb/FlushReason.java +53 -0
  1018. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HashLinkedListMemTableConfig.java +174 -0
  1019. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HashSkipListMemTableConfig.java +106 -0
  1020. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HistogramData.java +75 -0
  1021. package/vendor/rocksdb/java/src/main/java/org/rocksdb/HistogramType.java +214 -0
  1022. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Holder.java +46 -0
  1023. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IndexShorteningMode.java +60 -0
  1024. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IndexType.java +55 -0
  1025. package/vendor/rocksdb/java/src/main/java/org/rocksdb/InfoLogLevel.java +49 -0
  1026. package/vendor/rocksdb/java/src/main/java/org/rocksdb/IngestExternalFileOptions.java +227 -0
  1027. package/vendor/rocksdb/java/src/main/java/org/rocksdb/KeyMayExist.java +35 -0
  1028. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LRUCache.java +106 -0
  1029. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LevelMetaData.java +56 -0
  1030. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LiveFileMetaData.java +55 -0
  1031. package/vendor/rocksdb/java/src/main/java/org/rocksdb/LogFile.java +75 -0
  1032. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Logger.java +121 -0
  1033. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemTableConfig.java +29 -0
  1034. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemTableInfo.java +103 -0
  1035. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemoryUsageType.java +72 -0
  1036. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MemoryUtil.java +60 -0
  1037. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MergeOperator.java +18 -0
  1038. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableColumnFamilyOptions.java +621 -0
  1039. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableColumnFamilyOptionsInterface.java +156 -0
  1040. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableDBOptions.java +292 -0
  1041. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableDBOptionsInterface.java +440 -0
  1042. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableOptionKey.java +16 -0
  1043. package/vendor/rocksdb/java/src/main/java/org/rocksdb/MutableOptionValue.java +368 -0
  1044. package/vendor/rocksdb/java/src/main/java/org/rocksdb/NativeComparatorWrapper.java +59 -0
  1045. package/vendor/rocksdb/java/src/main/java/org/rocksdb/NativeLibraryLoader.java +172 -0
  1046. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OperationStage.java +59 -0
  1047. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OperationType.java +55 -0
  1048. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptimisticTransactionDB.java +224 -0
  1049. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptimisticTransactionOptions.java +53 -0
  1050. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptionString.java +261 -0
  1051. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Options.java +2574 -0
  1052. package/vendor/rocksdb/java/src/main/java/org/rocksdb/OptionsUtil.java +101 -0
  1053. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PersistentCache.java +26 -0
  1054. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PlainTableConfig.java +251 -0
  1055. package/vendor/rocksdb/java/src/main/java/org/rocksdb/PrepopulateBlobCache.java +117 -0
  1056. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Priority.java +49 -0
  1057. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Range.java +19 -0
  1058. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RateLimiter.java +227 -0
  1059. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RateLimiterMode.java +52 -0
  1060. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReadOptions.java +822 -0
  1061. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReadTier.java +49 -0
  1062. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RemoveEmptyValueCompactionFilter.java +18 -0
  1063. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RestoreOptions.java +32 -0
  1064. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ReusedSynchronisationType.java +65 -0
  1065. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksCallbackObject.java +73 -0
  1066. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksDB.java +4688 -0
  1067. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksDBException.java +44 -0
  1068. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksEnv.java +31 -0
  1069. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksIterator.java +140 -0
  1070. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksIteratorInterface.java +127 -0
  1071. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksMemEnv.java +31 -0
  1072. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksMutableObject.java +87 -0
  1073. package/vendor/rocksdb/java/src/main/java/org/rocksdb/RocksObject.java +45 -0
  1074. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SanityLevel.java +47 -0
  1075. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SizeApproximationFlag.java +31 -0
  1076. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SkipListMemTableConfig.java +51 -0
  1077. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Slice.java +135 -0
  1078. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Snapshot.java +41 -0
  1079. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileManager.java +249 -0
  1080. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileMetaData.java +162 -0
  1081. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileReader.java +82 -0
  1082. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileReaderIterator.java +140 -0
  1083. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstFileWriter.java +237 -0
  1084. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstPartitionerFactory.java +15 -0
  1085. package/vendor/rocksdb/java/src/main/java/org/rocksdb/SstPartitionerFixedPrefixFactory.java +19 -0
  1086. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StateType.java +53 -0
  1087. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Statistics.java +153 -0
  1088. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatisticsCollector.java +102 -0
  1089. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatisticsCollectorCallback.java +32 -0
  1090. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatsCollectorInput.java +35 -0
  1091. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StatsLevel.java +65 -0
  1092. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Status.java +155 -0
  1093. package/vendor/rocksdb/java/src/main/java/org/rocksdb/StringAppendOperator.java +29 -0
  1094. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationBriefInfo.java +107 -0
  1095. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationInfo.java +86 -0
  1096. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileCreationReason.java +46 -0
  1097. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFileDeletionInfo.java +86 -0
  1098. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFilter.java +21 -0
  1099. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableFormatConfig.java +22 -0
  1100. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TableProperties.java +426 -0
  1101. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ThreadStatus.java +224 -0
  1102. package/vendor/rocksdb/java/src/main/java/org/rocksdb/ThreadType.java +65 -0
  1103. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TickerType.java +802 -0
  1104. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TimedEnv.java +30 -0
  1105. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TraceOptions.java +32 -0
  1106. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TraceWriter.java +36 -0
  1107. package/vendor/rocksdb/java/src/main/java/org/rocksdb/Transaction.java +2162 -0
  1108. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionDB.java +401 -0
  1109. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionDBOptions.java +216 -0
  1110. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionLogIterator.java +112 -0
  1111. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionOptions.java +189 -0
  1112. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionalDB.java +65 -0
  1113. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TransactionalOptions.java +31 -0
  1114. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TtlDB.java +242 -0
  1115. package/vendor/rocksdb/java/src/main/java/org/rocksdb/TxnDBWritePolicy.java +62 -0
  1116. package/vendor/rocksdb/java/src/main/java/org/rocksdb/UInt64AddOperator.java +19 -0
  1117. package/vendor/rocksdb/java/src/main/java/org/rocksdb/VectorMemTableConfig.java +46 -0
  1118. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WALRecoveryMode.java +82 -0
  1119. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WBWIRocksIterator.java +203 -0
  1120. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalFileType.java +55 -0
  1121. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalFilter.java +86 -0
  1122. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WalProcessingOption.java +54 -0
  1123. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatch.java +394 -0
  1124. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatchInterface.java +283 -0
  1125. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBatchWithIndex.java +358 -0
  1126. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteBufferManager.java +50 -0
  1127. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteOptions.java +255 -0
  1128. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteStallCondition.java +44 -0
  1129. package/vendor/rocksdb/java/src/main/java/org/rocksdb/WriteStallInfo.java +75 -0
  1130. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/ByteUtil.java +52 -0
  1131. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/BytewiseComparator.java +121 -0
  1132. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/Environment.java +245 -0
  1133. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/IntComparator.java +67 -0
  1134. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/ReverseBytewiseComparator.java +88 -0
  1135. package/vendor/rocksdb/java/src/main/java/org/rocksdb/util/SizeUnit.java +16 -0
  1136. package/vendor/rocksdb/java/src/test/java/org/rocksdb/AbstractTransactionTest.java +979 -0
  1137. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BackupEngineOptionsTest.java +297 -0
  1138. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BackupEngineTest.java +261 -0
  1139. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BlobOptionsTest.java +353 -0
  1140. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BlockBasedTableConfigTest.java +415 -0
  1141. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BuiltinComparatorTest.java +145 -0
  1142. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ByteBufferUnsupportedOperationTest.java +132 -0
  1143. package/vendor/rocksdb/java/src/test/java/org/rocksdb/BytewiseComparatorRegressionTest.java +132 -0
  1144. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CheckPointTest.java +82 -0
  1145. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ClockCacheTest.java +25 -0
  1146. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ColumnFamilyOptionsTest.java +712 -0
  1147. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ColumnFamilyTest.java +562 -0
  1148. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactRangeOptionsTest.java +102 -0
  1149. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionFilterFactoryTest.java +61 -0
  1150. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionJobInfoTest.java +114 -0
  1151. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionJobStatsTest.java +196 -0
  1152. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsFIFOTest.java +35 -0
  1153. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsTest.java +52 -0
  1154. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionOptionsUniversalTest.java +80 -0
  1155. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionPriorityTest.java +31 -0
  1156. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompactionStopStyleTest.java +31 -0
  1157. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ComparatorOptionsTest.java +58 -0
  1158. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompressionOptionsTest.java +71 -0
  1159. package/vendor/rocksdb/java/src/test/java/org/rocksdb/CompressionTypesTest.java +25 -0
  1160. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ConcurrentTaskLimiterTest.java +56 -0
  1161. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DBOptionsTest.java +902 -0
  1162. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DefaultEnvTest.java +113 -0
  1163. package/vendor/rocksdb/java/src/test/java/org/rocksdb/DirectSliceTest.java +93 -0
  1164. package/vendor/rocksdb/java/src/test/java/org/rocksdb/EnvOptionsTest.java +145 -0
  1165. package/vendor/rocksdb/java/src/test/java/org/rocksdb/EventListenerTest.java +725 -0
  1166. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FilterTest.java +39 -0
  1167. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FlushOptionsTest.java +31 -0
  1168. package/vendor/rocksdb/java/src/test/java/org/rocksdb/FlushTest.java +49 -0
  1169. package/vendor/rocksdb/java/src/test/java/org/rocksdb/InfoLogLevelTest.java +109 -0
  1170. package/vendor/rocksdb/java/src/test/java/org/rocksdb/IngestExternalFileOptionsTest.java +107 -0
  1171. package/vendor/rocksdb/java/src/test/java/org/rocksdb/KeyMayExistTest.java +528 -0
  1172. package/vendor/rocksdb/java/src/test/java/org/rocksdb/LRUCacheTest.java +32 -0
  1173. package/vendor/rocksdb/java/src/test/java/org/rocksdb/LoggerTest.java +235 -0
  1174. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MemTableTest.java +108 -0
  1175. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MemoryUtilTest.java +136 -0
  1176. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MergeTest.java +465 -0
  1177. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MixedOptionsTest.java +85 -0
  1178. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiColumnRegressionTest.java +145 -0
  1179. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiGetManyKeysTest.java +241 -0
  1180. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MultiGetTest.java +530 -0
  1181. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableColumnFamilyOptionsTest.java +167 -0
  1182. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableDBOptionsTest.java +85 -0
  1183. package/vendor/rocksdb/java/src/test/java/org/rocksdb/MutableOptionsGetSetTest.java +429 -0
  1184. package/vendor/rocksdb/java/src/test/java/org/rocksdb/NativeComparatorWrapperTest.java +90 -0
  1185. package/vendor/rocksdb/java/src/test/java/org/rocksdb/NativeLibraryLoaderTest.java +41 -0
  1186. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionDBTest.java +131 -0
  1187. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionOptionsTest.java +38 -0
  1188. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptimisticTransactionTest.java +446 -0
  1189. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptionsTest.java +1488 -0
  1190. package/vendor/rocksdb/java/src/test/java/org/rocksdb/OptionsUtilTest.java +129 -0
  1191. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PlainTableConfigTest.java +89 -0
  1192. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PlatformRandomHelper.java +58 -0
  1193. package/vendor/rocksdb/java/src/test/java/org/rocksdb/PutMultiplePartsTest.java +164 -0
  1194. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RateLimiterTest.java +65 -0
  1195. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ReadOnlyTest.java +222 -0
  1196. package/vendor/rocksdb/java/src/test/java/org/rocksdb/ReadOptionsTest.java +374 -0
  1197. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksDBExceptionTest.java +115 -0
  1198. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksDBTest.java +1692 -0
  1199. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksIteratorTest.java +289 -0
  1200. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksMemEnvTest.java +137 -0
  1201. package/vendor/rocksdb/java/src/test/java/org/rocksdb/RocksNativeLibraryResource.java +18 -0
  1202. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SecondaryDBTest.java +135 -0
  1203. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SliceTest.java +80 -0
  1204. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SnapshotTest.java +169 -0
  1205. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileManagerTest.java +66 -0
  1206. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileReaderTest.java +222 -0
  1207. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstFileWriterTest.java +239 -0
  1208. package/vendor/rocksdb/java/src/test/java/org/rocksdb/SstPartitionerTest.java +72 -0
  1209. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatisticsCollectorTest.java +55 -0
  1210. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatisticsTest.java +168 -0
  1211. package/vendor/rocksdb/java/src/test/java/org/rocksdb/StatsCallbackMock.java +19 -0
  1212. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TableFilterTest.java +106 -0
  1213. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TimedEnvTest.java +40 -0
  1214. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionDBOptionsTest.java +64 -0
  1215. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionDBTest.java +177 -0
  1216. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionLogIteratorTest.java +139 -0
  1217. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionOptionsTest.java +72 -0
  1218. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TransactionTest.java +488 -0
  1219. package/vendor/rocksdb/java/src/test/java/org/rocksdb/TtlDBTest.java +112 -0
  1220. package/vendor/rocksdb/java/src/test/java/org/rocksdb/Types.java +43 -0
  1221. package/vendor/rocksdb/java/src/test/java/org/rocksdb/VerifyChecksumsTest.java +213 -0
  1222. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WALRecoveryModeTest.java +22 -0
  1223. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WalFilterTest.java +165 -0
  1224. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchHandlerTest.java +76 -0
  1225. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchTest.java +528 -0
  1226. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchThreadedTest.java +101 -0
  1227. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteBatchWithIndexTest.java +1068 -0
  1228. package/vendor/rocksdb/java/src/test/java/org/rocksdb/WriteOptionsTest.java +75 -0
  1229. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/RemoveEmptyValueCompactionFilterFactory.java +21 -0
  1230. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/RocksJunitRunner.java +174 -0
  1231. package/vendor/rocksdb/java/src/test/java/org/rocksdb/test/TestableEventListener.java +23 -0
  1232. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/ByteBufferAllocator.java +16 -0
  1233. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/BytewiseComparatorIntTest.java +267 -0
  1234. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/BytewiseComparatorTest.java +531 -0
  1235. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/CapturingWriteBatchHandler.java +190 -0
  1236. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/DirectByteBufferAllocator.java +18 -0
  1237. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/EnvironmentTest.java +304 -0
  1238. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/HeapByteBufferAllocator.java +18 -0
  1239. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/IntComparatorTest.java +266 -0
  1240. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/JNIComparatorTest.java +180 -0
  1241. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/ReverseBytewiseComparatorIntTest.java +270 -0
  1242. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/SizeUnitTest.java +27 -0
  1243. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/TestUtil.java +72 -0
  1244. package/vendor/rocksdb/java/src/test/java/org/rocksdb/util/WriteBatchGetter.java +139 -0
  1245. package/vendor/rocksdb/java/understanding_options.md +79 -0
  1246. package/vendor/rocksdb/logging/auto_roll_logger.cc +368 -0
  1247. package/vendor/rocksdb/logging/auto_roll_logger.h +166 -0
  1248. package/vendor/rocksdb/logging/auto_roll_logger_test.cc +731 -0
  1249. package/vendor/rocksdb/logging/env_logger.h +195 -0
  1250. package/vendor/rocksdb/logging/env_logger_test.cc +163 -0
  1251. package/vendor/rocksdb/logging/event_logger.cc +68 -0
  1252. package/vendor/rocksdb/logging/event_logger.h +202 -0
  1253. package/vendor/rocksdb/logging/event_logger_test.cc +45 -0
  1254. package/vendor/rocksdb/logging/log_buffer.cc +91 -0
  1255. package/vendor/rocksdb/logging/log_buffer.h +57 -0
  1256. package/vendor/rocksdb/logging/logging.h +62 -0
  1257. package/vendor/rocksdb/memory/allocator.h +58 -0
  1258. package/vendor/rocksdb/memory/arena.cc +170 -0
  1259. package/vendor/rocksdb/memory/arena.h +135 -0
  1260. package/vendor/rocksdb/memory/arena_test.cc +295 -0
  1261. package/vendor/rocksdb/memory/concurrent_arena.cc +45 -0
  1262. package/vendor/rocksdb/memory/concurrent_arena.h +215 -0
  1263. package/vendor/rocksdb/memory/jemalloc_nodump_allocator.cc +303 -0
  1264. package/vendor/rocksdb/memory/jemalloc_nodump_allocator.h +99 -0
  1265. package/vendor/rocksdb/memory/memkind_kmem_allocator.cc +44 -0
  1266. package/vendor/rocksdb/memory/memkind_kmem_allocator.h +43 -0
  1267. package/vendor/rocksdb/memory/memory_allocator.cc +80 -0
  1268. package/vendor/rocksdb/memory/memory_allocator_impl.h +47 -0
  1269. package/vendor/rocksdb/memory/memory_allocator_test.cc +236 -0
  1270. package/vendor/rocksdb/memory/memory_usage.h +38 -0
  1271. package/vendor/rocksdb/memtable/alloc_tracker.cc +63 -0
  1272. package/vendor/rocksdb/memtable/hash_linklist_rep.cc +924 -0
  1273. package/vendor/rocksdb/memtable/hash_skiplist_rep.cc +391 -0
  1274. package/vendor/rocksdb/memtable/inlineskiplist.h +1051 -0
  1275. package/vendor/rocksdb/memtable/inlineskiplist_test.cc +665 -0
  1276. package/vendor/rocksdb/memtable/memtablerep_bench.cc +687 -0
  1277. package/vendor/rocksdb/memtable/skiplist.h +498 -0
  1278. package/vendor/rocksdb/memtable/skiplist_test.cc +388 -0
  1279. package/vendor/rocksdb/memtable/skiplistrep.cc +368 -0
  1280. package/vendor/rocksdb/memtable/stl_wrappers.h +33 -0
  1281. package/vendor/rocksdb/memtable/vectorrep.cc +307 -0
  1282. package/vendor/rocksdb/memtable/write_buffer_manager.cc +185 -0
  1283. package/vendor/rocksdb/memtable/write_buffer_manager_test.cc +304 -0
  1284. package/vendor/rocksdb/microbench/CMakeLists.txt +17 -0
  1285. package/vendor/rocksdb/microbench/README.md +60 -0
  1286. package/vendor/rocksdb/microbench/db_basic_bench.cc +1583 -0
  1287. package/vendor/rocksdb/microbench/ribbon_bench.cc +155 -0
  1288. package/vendor/rocksdb/monitoring/file_read_sample.h +23 -0
  1289. package/vendor/rocksdb/monitoring/histogram.cc +270 -0
  1290. package/vendor/rocksdb/monitoring/histogram.h +143 -0
  1291. package/vendor/rocksdb/monitoring/histogram_test.cc +254 -0
  1292. package/vendor/rocksdb/monitoring/histogram_windowing.cc +194 -0
  1293. package/vendor/rocksdb/monitoring/histogram_windowing.h +84 -0
  1294. package/vendor/rocksdb/monitoring/in_memory_stats_history.cc +50 -0
  1295. package/vendor/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  1296. package/vendor/rocksdb/monitoring/instrumented_mutex.cc +90 -0
  1297. package/vendor/rocksdb/monitoring/instrumented_mutex.h +126 -0
  1298. package/vendor/rocksdb/monitoring/iostats_context.cc +78 -0
  1299. package/vendor/rocksdb/monitoring/iostats_context_imp.h +62 -0
  1300. package/vendor/rocksdb/monitoring/iostats_context_test.cc +31 -0
  1301. package/vendor/rocksdb/monitoring/perf_context.cc +313 -0
  1302. package/vendor/rocksdb/monitoring/perf_context_imp.h +96 -0
  1303. package/vendor/rocksdb/monitoring/perf_level.cc +23 -0
  1304. package/vendor/rocksdb/monitoring/perf_level_imp.h +14 -0
  1305. package/vendor/rocksdb/monitoring/perf_step_timer.h +77 -0
  1306. package/vendor/rocksdb/monitoring/persistent_stats_history.cc +170 -0
  1307. package/vendor/rocksdb/monitoring/persistent_stats_history.h +83 -0
  1308. package/vendor/rocksdb/monitoring/statistics.cc +534 -0
  1309. package/vendor/rocksdb/monitoring/statistics_impl.h +144 -0
  1310. package/vendor/rocksdb/monitoring/statistics_test.cc +88 -0
  1311. package/vendor/rocksdb/monitoring/stats_history_test.cc +662 -0
  1312. package/vendor/rocksdb/monitoring/thread_status_impl.cc +163 -0
  1313. package/vendor/rocksdb/monitoring/thread_status_updater.cc +328 -0
  1314. package/vendor/rocksdb/monitoring/thread_status_updater.h +226 -0
  1315. package/vendor/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  1316. package/vendor/rocksdb/monitoring/thread_status_util.cc +208 -0
  1317. package/vendor/rocksdb/monitoring/thread_status_util.h +139 -0
  1318. package/vendor/rocksdb/monitoring/thread_status_util_debug.cc +46 -0
  1319. package/vendor/rocksdb/options/cf_options.cc +1196 -0
  1320. package/vendor/rocksdb/options/cf_options.h +347 -0
  1321. package/vendor/rocksdb/options/configurable.cc +712 -0
  1322. package/vendor/rocksdb/options/configurable_helper.h +185 -0
  1323. package/vendor/rocksdb/options/configurable_test.cc +861 -0
  1324. package/vendor/rocksdb/options/configurable_test.h +116 -0
  1325. package/vendor/rocksdb/options/customizable.cc +133 -0
  1326. package/vendor/rocksdb/options/customizable_test.cc +2116 -0
  1327. package/vendor/rocksdb/options/db_options.cc +1079 -0
  1328. package/vendor/rocksdb/options/db_options.h +152 -0
  1329. package/vendor/rocksdb/options/options.cc +692 -0
  1330. package/vendor/rocksdb/options/options_helper.cc +1424 -0
  1331. package/vendor/rocksdb/options/options_helper.h +116 -0
  1332. package/vendor/rocksdb/options/options_parser.cc +736 -0
  1333. package/vendor/rocksdb/options/options_parser.h +149 -0
  1334. package/vendor/rocksdb/options/options_settable_test.cc +655 -0
  1335. package/vendor/rocksdb/options/options_test.cc +5060 -0
  1336. package/vendor/rocksdb/plugin/README.md +43 -0
  1337. package/vendor/rocksdb/port/README +10 -0
  1338. package/vendor/rocksdb/port/jemalloc_helper.h +107 -0
  1339. package/vendor/rocksdb/port/lang.h +97 -0
  1340. package/vendor/rocksdb/port/likely.h +18 -0
  1341. package/vendor/rocksdb/port/malloc.h +17 -0
  1342. package/vendor/rocksdb/port/mmap.cc +98 -0
  1343. package/vendor/rocksdb/port/mmap.h +70 -0
  1344. package/vendor/rocksdb/port/port.h +21 -0
  1345. package/vendor/rocksdb/port/port_dirent.h +44 -0
  1346. package/vendor/rocksdb/port/port_example.h +101 -0
  1347. package/vendor/rocksdb/port/port_posix.cc +300 -0
  1348. package/vendor/rocksdb/port/port_posix.h +243 -0
  1349. package/vendor/rocksdb/port/stack_trace.cc +336 -0
  1350. package/vendor/rocksdb/port/stack_trace.h +31 -0
  1351. package/vendor/rocksdb/port/sys_time.h +63 -0
  1352. package/vendor/rocksdb/port/util_logger.h +18 -0
  1353. package/vendor/rocksdb/port/win/env_default.cc +45 -0
  1354. package/vendor/rocksdb/port/win/env_win.cc +1437 -0
  1355. package/vendor/rocksdb/port/win/env_win.h +305 -0
  1356. package/vendor/rocksdb/port/win/io_win.cc +1101 -0
  1357. package/vendor/rocksdb/port/win/io_win.h +508 -0
  1358. package/vendor/rocksdb/port/win/port_win.cc +303 -0
  1359. package/vendor/rocksdb/port/win/port_win.h +379 -0
  1360. package/vendor/rocksdb/port/win/win_jemalloc.cc +80 -0
  1361. package/vendor/rocksdb/port/win/win_logger.cc +192 -0
  1362. package/vendor/rocksdb/port/win/win_logger.h +64 -0
  1363. package/vendor/rocksdb/port/win/win_thread.cc +170 -0
  1364. package/vendor/rocksdb/port/win/win_thread.h +117 -0
  1365. package/vendor/rocksdb/port/win/xpress_win.cc +210 -0
  1366. package/vendor/rocksdb/port/win/xpress_win.h +26 -0
  1367. package/vendor/rocksdb/port/xpress.h +17 -0
  1368. package/vendor/rocksdb/rocksdb.pc.in +10 -0
  1369. package/vendor/rocksdb/src.mk +713 -0
  1370. package/vendor/rocksdb/table/adaptive/adaptive_table_factory.cc +125 -0
  1371. package/vendor/rocksdb/table/adaptive/adaptive_table_factory.h +56 -0
  1372. package/vendor/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  1373. package/vendor/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  1374. package/vendor/rocksdb/table/block_based/block.cc +1291 -0
  1375. package/vendor/rocksdb/table/block_based/block.h +921 -0
  1376. package/vendor/rocksdb/table/block_based/block_based_table_builder.cc +2027 -0
  1377. package/vendor/rocksdb/table/block_based/block_based_table_builder.h +209 -0
  1378. package/vendor/rocksdb/table/block_based/block_based_table_factory.cc +962 -0
  1379. package/vendor/rocksdb/table/block_based/block_based_table_factory.h +102 -0
  1380. package/vendor/rocksdb/table/block_based/block_based_table_iterator.cc +500 -0
  1381. package/vendor/rocksdb/table/block_based/block_based_table_iterator.h +310 -0
  1382. package/vendor/rocksdb/table/block_based/block_based_table_reader.cc +3043 -0
  1383. package/vendor/rocksdb/table/block_based/block_based_table_reader.h +745 -0
  1384. package/vendor/rocksdb/table/block_based/block_based_table_reader_impl.h +203 -0
  1385. package/vendor/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +758 -0
  1386. package/vendor/rocksdb/table/block_based/block_based_table_reader_test.cc +567 -0
  1387. package/vendor/rocksdb/table/block_based/block_builder.cc +234 -0
  1388. package/vendor/rocksdb/table/block_based/block_builder.h +104 -0
  1389. package/vendor/rocksdb/table/block_based/block_cache.cc +106 -0
  1390. package/vendor/rocksdb/table/block_based/block_cache.h +140 -0
  1391. package/vendor/rocksdb/table/block_based/block_prefetcher.cc +120 -0
  1392. package/vendor/rocksdb/table/block_based/block_prefetcher.h +72 -0
  1393. package/vendor/rocksdb/table/block_based/block_prefix_index.cc +226 -0
  1394. package/vendor/rocksdb/table/block_based/block_prefix_index.h +70 -0
  1395. package/vendor/rocksdb/table/block_based/block_test.cc +1543 -0
  1396. package/vendor/rocksdb/table/block_based/block_type.h +34 -0
  1397. package/vendor/rocksdb/table/block_based/cachable_entry.h +244 -0
  1398. package/vendor/rocksdb/table/block_based/data_block_footer.cc +59 -0
  1399. package/vendor/rocksdb/table/block_based/data_block_footer.h +25 -0
  1400. package/vendor/rocksdb/table/block_based/data_block_hash_index.cc +94 -0
  1401. package/vendor/rocksdb/table/block_based/data_block_hash_index.h +137 -0
  1402. package/vendor/rocksdb/table/block_based/data_block_hash_index_test.cc +718 -0
  1403. package/vendor/rocksdb/table/block_based/filter_block.h +183 -0
  1404. package/vendor/rocksdb/table/block_based/filter_block_reader_common.cc +163 -0
  1405. package/vendor/rocksdb/table/block_based/filter_block_reader_common.h +76 -0
  1406. package/vendor/rocksdb/table/block_based/filter_policy.cc +1966 -0
  1407. package/vendor/rocksdb/table/block_based/filter_policy_internal.h +340 -0
  1408. package/vendor/rocksdb/table/block_based/flush_block_policy.cc +132 -0
  1409. package/vendor/rocksdb/table/block_based/flush_block_policy_impl.h +40 -0
  1410. package/vendor/rocksdb/table/block_based/full_filter_block.cc +290 -0
  1411. package/vendor/rocksdb/table/block_based/full_filter_block.h +147 -0
  1412. package/vendor/rocksdb/table/block_based/full_filter_block_test.cc +323 -0
  1413. package/vendor/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  1414. package/vendor/rocksdb/table/block_based/hash_index_reader.h +49 -0
  1415. package/vendor/rocksdb/table/block_based/index_builder.cc +282 -0
  1416. package/vendor/rocksdb/table/block_based/index_builder.h +455 -0
  1417. package/vendor/rocksdb/table/block_based/index_reader_common.cc +57 -0
  1418. package/vendor/rocksdb/table/block_based/index_reader_common.h +85 -0
  1419. package/vendor/rocksdb/table/block_based/mock_block_based_table.h +62 -0
  1420. package/vendor/rocksdb/table/block_based/parsed_full_filter_block.cc +23 -0
  1421. package/vendor/rocksdb/table/block_based/parsed_full_filter_block.h +47 -0
  1422. package/vendor/rocksdb/table/block_based/partitioned_filter_block.cc +554 -0
  1423. package/vendor/rocksdb/table/block_based/partitioned_filter_block.h +182 -0
  1424. package/vendor/rocksdb/table/block_based/partitioned_filter_block_test.cc +436 -0
  1425. package/vendor/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  1426. package/vendor/rocksdb/table/block_based/partitioned_index_iterator.h +160 -0
  1427. package/vendor/rocksdb/table/block_based/partitioned_index_reader.cc +224 -0
  1428. package/vendor/rocksdb/table/block_based/partitioned_index_reader.h +56 -0
  1429. package/vendor/rocksdb/table/block_based/reader_common.cc +52 -0
  1430. package/vendor/rocksdb/table/block_based/reader_common.h +34 -0
  1431. package/vendor/rocksdb/table/block_based/uncompression_dict_reader.cc +126 -0
  1432. package/vendor/rocksdb/table/block_based/uncompression_dict_reader.h +61 -0
  1433. package/vendor/rocksdb/table/block_fetcher.cc +405 -0
  1434. package/vendor/rocksdb/table/block_fetcher.h +142 -0
  1435. package/vendor/rocksdb/table/block_fetcher_test.cc +520 -0
  1436. package/vendor/rocksdb/table/cleanable_test.cc +390 -0
  1437. package/vendor/rocksdb/table/compaction_merging_iterator.cc +370 -0
  1438. package/vendor/rocksdb/table/compaction_merging_iterator.h +44 -0
  1439. package/vendor/rocksdb/table/cuckoo/cuckoo_table_builder.cc +551 -0
  1440. package/vendor/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  1441. package/vendor/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +631 -0
  1442. package/vendor/rocksdb/table/cuckoo/cuckoo_table_factory.cc +100 -0
  1443. package/vendor/rocksdb/table/cuckoo/cuckoo_table_factory.h +80 -0
  1444. package/vendor/rocksdb/table/cuckoo/cuckoo_table_reader.cc +412 -0
  1445. package/vendor/rocksdb/table/cuckoo/cuckoo_table_reader.h +100 -0
  1446. package/vendor/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +574 -0
  1447. package/vendor/rocksdb/table/format.cc +573 -0
  1448. package/vendor/rocksdb/table/format.h +378 -0
  1449. package/vendor/rocksdb/table/get_context.cc +616 -0
  1450. package/vendor/rocksdb/table/get_context.h +245 -0
  1451. package/vendor/rocksdb/table/internal_iterator.h +224 -0
  1452. package/vendor/rocksdb/table/iter_heap.h +44 -0
  1453. package/vendor/rocksdb/table/iterator.cc +130 -0
  1454. package/vendor/rocksdb/table/iterator_wrapper.h +190 -0
  1455. package/vendor/rocksdb/table/merger_test.cc +182 -0
  1456. package/vendor/rocksdb/table/merging_iterator.cc +1725 -0
  1457. package/vendor/rocksdb/table/merging_iterator.h +97 -0
  1458. package/vendor/rocksdb/table/meta_blocks.cc +564 -0
  1459. package/vendor/rocksdb/table/meta_blocks.h +172 -0
  1460. package/vendor/rocksdb/table/mock_table.cc +346 -0
  1461. package/vendor/rocksdb/table/mock_table.h +94 -0
  1462. package/vendor/rocksdb/table/multiget_context.h +405 -0
  1463. package/vendor/rocksdb/table/persistent_cache_helper.cc +111 -0
  1464. package/vendor/rocksdb/table/persistent_cache_helper.h +46 -0
  1465. package/vendor/rocksdb/table/persistent_cache_options.h +34 -0
  1466. package/vendor/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  1467. package/vendor/rocksdb/table/plain/plain_table_bloom.h +132 -0
  1468. package/vendor/rocksdb/table/plain/plain_table_builder.cc +335 -0
  1469. package/vendor/rocksdb/table/plain/plain_table_builder.h +152 -0
  1470. package/vendor/rocksdb/table/plain/plain_table_factory.cc +296 -0
  1471. package/vendor/rocksdb/table/plain/plain_table_factory.h +180 -0
  1472. package/vendor/rocksdb/table/plain/plain_table_index.cc +211 -0
  1473. package/vendor/rocksdb/table/plain/plain_table_index.h +246 -0
  1474. package/vendor/rocksdb/table/plain/plain_table_key_coding.cc +507 -0
  1475. package/vendor/rocksdb/table/plain/plain_table_key_coding.h +199 -0
  1476. package/vendor/rocksdb/table/plain/plain_table_reader.cc +771 -0
  1477. package/vendor/rocksdb/table/plain/plain_table_reader.h +243 -0
  1478. package/vendor/rocksdb/table/scoped_arena_iterator.h +57 -0
  1479. package/vendor/rocksdb/table/sst_file_dumper.cc +520 -0
  1480. package/vendor/rocksdb/table/sst_file_dumper.h +99 -0
  1481. package/vendor/rocksdb/table/sst_file_reader.cc +101 -0
  1482. package/vendor/rocksdb/table/sst_file_reader_test.cc +423 -0
  1483. package/vendor/rocksdb/table/sst_file_writer.cc +436 -0
  1484. package/vendor/rocksdb/table/sst_file_writer_collectors.h +95 -0
  1485. package/vendor/rocksdb/table/table_builder.h +228 -0
  1486. package/vendor/rocksdb/table/table_factory.cc +52 -0
  1487. package/vendor/rocksdb/table/table_properties.cc +351 -0
  1488. package/vendor/rocksdb/table/table_properties_internal.h +14 -0
  1489. package/vendor/rocksdb/table/table_reader.h +187 -0
  1490. package/vendor/rocksdb/table/table_reader_bench.cc +339 -0
  1491. package/vendor/rocksdb/table/table_test.cc +5882 -0
  1492. package/vendor/rocksdb/table/two_level_iterator.cc +220 -0
  1493. package/vendor/rocksdb/table/two_level_iterator.h +43 -0
  1494. package/vendor/rocksdb/table/unique_id.cc +223 -0
  1495. package/vendor/rocksdb/table/unique_id_impl.h +93 -0
  1496. package/vendor/rocksdb/test_util/mock_time_env.cc +38 -0
  1497. package/vendor/rocksdb/test_util/mock_time_env.h +78 -0
  1498. package/vendor/rocksdb/test_util/secondary_cache_test_util.cc +96 -0
  1499. package/vendor/rocksdb/test_util/secondary_cache_test_util.h +119 -0
  1500. package/vendor/rocksdb/test_util/sync_point.cc +82 -0
  1501. package/vendor/rocksdb/test_util/sync_point.h +180 -0
  1502. package/vendor/rocksdb/test_util/sync_point_impl.cc +152 -0
  1503. package/vendor/rocksdb/test_util/sync_point_impl.h +96 -0
  1504. package/vendor/rocksdb/test_util/testharness.cc +107 -0
  1505. package/vendor/rocksdb/test_util/testharness.h +124 -0
  1506. package/vendor/rocksdb/test_util/testutil.cc +722 -0
  1507. package/vendor/rocksdb/test_util/testutil.h +860 -0
  1508. package/vendor/rocksdb/test_util/testutil_test.cc +43 -0
  1509. package/vendor/rocksdb/test_util/transaction_test_util.cc +400 -0
  1510. package/vendor/rocksdb/test_util/transaction_test_util.h +147 -0
  1511. package/vendor/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  1512. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/CMakeLists.txt +4 -0
  1513. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/gtest-all.cc +11394 -0
  1514. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/gtest.h +22115 -0
  1515. package/vendor/rocksdb/third-party/gtest-1.8.1/fused-src/gtest/gtest_main.cc +37 -0
  1516. package/vendor/rocksdb/thirdparty.inc +268 -0
  1517. package/vendor/rocksdb/tools/CMakeLists.txt +30 -0
  1518. package/vendor/rocksdb/tools/Dockerfile +5 -0
  1519. package/vendor/rocksdb/tools/advisor/README.md +96 -0
  1520. package/vendor/rocksdb/tools/advisor/advisor/__init__.py +0 -0
  1521. package/vendor/rocksdb/tools/advisor/advisor/bench_runner.py +39 -0
  1522. package/vendor/rocksdb/tools/advisor/advisor/config_optimizer_example.py +140 -0
  1523. package/vendor/rocksdb/tools/advisor/advisor/db_bench_runner.py +237 -0
  1524. package/vendor/rocksdb/tools/advisor/advisor/db_config_optimizer.py +293 -0
  1525. package/vendor/rocksdb/tools/advisor/advisor/db_log_parser.py +134 -0
  1526. package/vendor/rocksdb/tools/advisor/advisor/db_options_parser.py +348 -0
  1527. package/vendor/rocksdb/tools/advisor/advisor/db_stats_fetcher.py +346 -0
  1528. package/vendor/rocksdb/tools/advisor/advisor/db_timeseries_parser.py +203 -0
  1529. package/vendor/rocksdb/tools/advisor/advisor/ini_parser.py +76 -0
  1530. package/vendor/rocksdb/tools/advisor/advisor/rule_parser.py +510 -0
  1531. package/vendor/rocksdb/tools/advisor/advisor/rule_parser_example.py +98 -0
  1532. package/vendor/rocksdb/tools/advisor/advisor/rules.ini +214 -0
  1533. package/vendor/rocksdb/tools/advisor/test/__init__.py +0 -0
  1534. package/vendor/rocksdb/tools/advisor/test/input_files/LOG-0 +30 -0
  1535. package/vendor/rocksdb/tools/advisor/test/input_files/LOG-1 +25 -0
  1536. package/vendor/rocksdb/tools/advisor/test/input_files/OPTIONS-000005 +49 -0
  1537. package/vendor/rocksdb/tools/advisor/test/input_files/log_stats_parser_keys_ts +3 -0
  1538. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err1.ini +56 -0
  1539. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err2.ini +15 -0
  1540. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err3.ini +15 -0
  1541. package/vendor/rocksdb/tools/advisor/test/input_files/rules_err4.ini +15 -0
  1542. package/vendor/rocksdb/tools/advisor/test/input_files/test_rules.ini +47 -0
  1543. package/vendor/rocksdb/tools/advisor/test/input_files/triggered_rules.ini +83 -0
  1544. package/vendor/rocksdb/tools/advisor/test/test_db_bench_runner.py +141 -0
  1545. package/vendor/rocksdb/tools/advisor/test/test_db_log_parser.py +96 -0
  1546. package/vendor/rocksdb/tools/advisor/test/test_db_options_parser.py +214 -0
  1547. package/vendor/rocksdb/tools/advisor/test/test_db_stats_fetcher.py +121 -0
  1548. package/vendor/rocksdb/tools/advisor/test/test_rule_parser.py +226 -0
  1549. package/vendor/rocksdb/tools/analyze_txn_stress_test.sh +77 -0
  1550. package/vendor/rocksdb/tools/auto_sanity_test.sh +93 -0
  1551. package/vendor/rocksdb/tools/backup_db.sh +15 -0
  1552. package/vendor/rocksdb/tools/benchmark.sh +1173 -0
  1553. package/vendor/rocksdb/tools/benchmark_ci.py +182 -0
  1554. package/vendor/rocksdb/tools/benchmark_compare.sh +342 -0
  1555. package/vendor/rocksdb/tools/benchmark_leveldb.sh +187 -0
  1556. package/vendor/rocksdb/tools/blob_dump.cc +103 -0
  1557. package/vendor/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  1558. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  1559. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  1560. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  1561. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2314 -0
  1562. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +397 -0
  1563. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +729 -0
  1564. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +791 -0
  1565. package/vendor/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +17 -0
  1566. package/vendor/rocksdb/tools/check_all_python.py +22 -0
  1567. package/vendor/rocksdb/tools/check_format_compatible.sh +379 -0
  1568. package/vendor/rocksdb/tools/db_bench.cc +21 -0
  1569. package/vendor/rocksdb/tools/db_bench_tool.cc +8604 -0
  1570. package/vendor/rocksdb/tools/db_bench_tool_test.cc +342 -0
  1571. package/vendor/rocksdb/tools/db_crashtest.py +1018 -0
  1572. package/vendor/rocksdb/tools/db_repl_stress.cc +132 -0
  1573. package/vendor/rocksdb/tools/db_sanity_test.cc +296 -0
  1574. package/vendor/rocksdb/tools/dbench_monitor +102 -0
  1575. package/vendor/rocksdb/tools/dump/db_dump_tool.cc +258 -0
  1576. package/vendor/rocksdb/tools/dump/rocksdb_dump.cc +60 -0
  1577. package/vendor/rocksdb/tools/dump/rocksdb_undump.cc +59 -0
  1578. package/vendor/rocksdb/tools/generate_random_db.sh +31 -0
  1579. package/vendor/rocksdb/tools/ingest_external_sst.sh +18 -0
  1580. package/vendor/rocksdb/tools/io_tracer_parser.cc +17 -0
  1581. package/vendor/rocksdb/tools/io_tracer_parser_test.cc +182 -0
  1582. package/vendor/rocksdb/tools/io_tracer_parser_tool.cc +142 -0
  1583. package/vendor/rocksdb/tools/io_tracer_parser_tool.h +38 -0
  1584. package/vendor/rocksdb/tools/ldb.cc +13 -0
  1585. package/vendor/rocksdb/tools/ldb_cmd.cc +4263 -0
  1586. package/vendor/rocksdb/tools/ldb_cmd_impl.h +744 -0
  1587. package/vendor/rocksdb/tools/ldb_cmd_test.cc +1216 -0
  1588. package/vendor/rocksdb/tools/ldb_test.py +955 -0
  1589. package/vendor/rocksdb/tools/ldb_tool.cc +182 -0
  1590. package/vendor/rocksdb/tools/pflag +217 -0
  1591. package/vendor/rocksdb/tools/reduce_levels_test.cc +212 -0
  1592. package/vendor/rocksdb/tools/regression_test.sh +525 -0
  1593. package/vendor/rocksdb/tools/restore_db.sh +15 -0
  1594. package/vendor/rocksdb/tools/rocksdb_dump_test.sh +9 -0
  1595. package/vendor/rocksdb/tools/run_blob_bench.sh +223 -0
  1596. package/vendor/rocksdb/tools/run_flash_bench.sh +359 -0
  1597. package/vendor/rocksdb/tools/run_leveldb.sh +175 -0
  1598. package/vendor/rocksdb/tools/sample-dump.dmp +0 -0
  1599. package/vendor/rocksdb/tools/simulated_hybrid_file_system.cc +243 -0
  1600. package/vendor/rocksdb/tools/simulated_hybrid_file_system.h +124 -0
  1601. package/vendor/rocksdb/tools/sst_dump.cc +12 -0
  1602. package/vendor/rocksdb/tools/sst_dump_test.cc +471 -0
  1603. package/vendor/rocksdb/tools/sst_dump_tool.cc +582 -0
  1604. package/vendor/rocksdb/tools/trace_analyzer.cc +17 -0
  1605. package/vendor/rocksdb/tools/trace_analyzer_test.cc +880 -0
  1606. package/vendor/rocksdb/tools/trace_analyzer_tool.cc +1929 -0
  1607. package/vendor/rocksdb/tools/trace_analyzer_tool.h +329 -0
  1608. package/vendor/rocksdb/tools/verify_random_db.sh +41 -0
  1609. package/vendor/rocksdb/tools/write_external_sst.sh +26 -0
  1610. package/vendor/rocksdb/tools/write_stress.cc +305 -0
  1611. package/vendor/rocksdb/tools/write_stress_runner.py +83 -0
  1612. package/vendor/rocksdb/trace_replay/block_cache_tracer.cc +509 -0
  1613. package/vendor/rocksdb/trace_replay/block_cache_tracer.h +239 -0
  1614. package/vendor/rocksdb/trace_replay/block_cache_tracer_test.cc +421 -0
  1615. package/vendor/rocksdb/trace_replay/io_tracer.cc +303 -0
  1616. package/vendor/rocksdb/trace_replay/io_tracer.h +185 -0
  1617. package/vendor/rocksdb/trace_replay/io_tracer_test.cc +353 -0
  1618. package/vendor/rocksdb/trace_replay/trace_record.cc +206 -0
  1619. package/vendor/rocksdb/trace_replay/trace_record_handler.cc +190 -0
  1620. package/vendor/rocksdb/trace_replay/trace_record_handler.h +46 -0
  1621. package/vendor/rocksdb/trace_replay/trace_record_result.cc +146 -0
  1622. package/vendor/rocksdb/trace_replay/trace_replay.cc +622 -0
  1623. package/vendor/rocksdb/trace_replay/trace_replay.h +183 -0
  1624. package/vendor/rocksdb/util/aligned_buffer.h +235 -0
  1625. package/vendor/rocksdb/util/async_file_reader.cc +81 -0
  1626. package/vendor/rocksdb/util/async_file_reader.h +144 -0
  1627. package/vendor/rocksdb/util/autovector.h +393 -0
  1628. package/vendor/rocksdb/util/autovector_test.cc +324 -0
  1629. package/vendor/rocksdb/util/bloom_impl.h +489 -0
  1630. package/vendor/rocksdb/util/bloom_test.cc +1175 -0
  1631. package/vendor/rocksdb/util/build_version.cc.in +79 -0
  1632. package/vendor/rocksdb/util/cast_util.h +42 -0
  1633. package/vendor/rocksdb/util/channel.h +69 -0
  1634. package/vendor/rocksdb/util/cleanable.cc +181 -0
  1635. package/vendor/rocksdb/util/coding.cc +90 -0
  1636. package/vendor/rocksdb/util/coding.h +389 -0
  1637. package/vendor/rocksdb/util/coding_lean.h +101 -0
  1638. package/vendor/rocksdb/util/coding_test.cc +217 -0
  1639. package/vendor/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  1640. package/vendor/rocksdb/util/comparator.cc +383 -0
  1641. package/vendor/rocksdb/util/compression.cc +122 -0
  1642. package/vendor/rocksdb/util/compression.h +1795 -0
  1643. package/vendor/rocksdb/util/compression_context_cache.cc +106 -0
  1644. package/vendor/rocksdb/util/compression_context_cache.h +47 -0
  1645. package/vendor/rocksdb/util/concurrent_task_limiter_impl.cc +64 -0
  1646. package/vendor/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  1647. package/vendor/rocksdb/util/core_local.h +84 -0
  1648. package/vendor/rocksdb/util/coro_utils.h +112 -0
  1649. package/vendor/rocksdb/util/crc32c.cc +1292 -0
  1650. package/vendor/rocksdb/util/crc32c.h +56 -0
  1651. package/vendor/rocksdb/util/crc32c_arm64.cc +213 -0
  1652. package/vendor/rocksdb/util/crc32c_arm64.h +52 -0
  1653. package/vendor/rocksdb/util/crc32c_ppc.c +94 -0
  1654. package/vendor/rocksdb/util/crc32c_ppc.h +22 -0
  1655. package/vendor/rocksdb/util/crc32c_ppc_asm.S +756 -0
  1656. package/vendor/rocksdb/util/crc32c_ppc_constants.h +900 -0
  1657. package/vendor/rocksdb/util/crc32c_test.cc +213 -0
  1658. package/vendor/rocksdb/util/data_structure.cc +18 -0
  1659. package/vendor/rocksdb/util/defer.h +82 -0
  1660. package/vendor/rocksdb/util/defer_test.cc +51 -0
  1661. package/vendor/rocksdb/util/distributed_mutex.h +50 -0
  1662. package/vendor/rocksdb/util/duplicate_detector.h +69 -0
  1663. package/vendor/rocksdb/util/dynamic_bloom.cc +70 -0
  1664. package/vendor/rocksdb/util/dynamic_bloom.h +214 -0
  1665. package/vendor/rocksdb/util/dynamic_bloom_test.cc +325 -0
  1666. package/vendor/rocksdb/util/fastrange.h +114 -0
  1667. package/vendor/rocksdb/util/file_checksum_helper.cc +170 -0
  1668. package/vendor/rocksdb/util/file_checksum_helper.h +101 -0
  1669. package/vendor/rocksdb/util/file_reader_writer_test.cc +1058 -0
  1670. package/vendor/rocksdb/util/filelock_test.cc +148 -0
  1671. package/vendor/rocksdb/util/filter_bench.cc +840 -0
  1672. package/vendor/rocksdb/util/gflags_compat.h +29 -0
  1673. package/vendor/rocksdb/util/hash.cc +201 -0
  1674. package/vendor/rocksdb/util/hash.h +137 -0
  1675. package/vendor/rocksdb/util/hash128.h +26 -0
  1676. package/vendor/rocksdb/util/hash_containers.h +51 -0
  1677. package/vendor/rocksdb/util/hash_map.h +67 -0
  1678. package/vendor/rocksdb/util/hash_test.cc +853 -0
  1679. package/vendor/rocksdb/util/heap.h +174 -0
  1680. package/vendor/rocksdb/util/heap_test.cc +131 -0
  1681. package/vendor/rocksdb/util/kv_map.h +33 -0
  1682. package/vendor/rocksdb/util/log_write_bench.cc +88 -0
  1683. package/vendor/rocksdb/util/math.h +299 -0
  1684. package/vendor/rocksdb/util/math128.h +316 -0
  1685. package/vendor/rocksdb/util/murmurhash.cc +196 -0
  1686. package/vendor/rocksdb/util/murmurhash.h +43 -0
  1687. package/vendor/rocksdb/util/mutexlock.h +181 -0
  1688. package/vendor/rocksdb/util/ppc-opcode.h +27 -0
  1689. package/vendor/rocksdb/util/random.cc +63 -0
  1690. package/vendor/rocksdb/util/random.h +190 -0
  1691. package/vendor/rocksdb/util/random_test.cc +107 -0
  1692. package/vendor/rocksdb/util/rate_limiter.cc +376 -0
  1693. package/vendor/rocksdb/util/rate_limiter_impl.h +146 -0
  1694. package/vendor/rocksdb/util/rate_limiter_test.cc +520 -0
  1695. package/vendor/rocksdb/util/repeatable_thread.h +149 -0
  1696. package/vendor/rocksdb/util/repeatable_thread_test.cc +111 -0
  1697. package/vendor/rocksdb/util/ribbon_alg.h +1225 -0
  1698. package/vendor/rocksdb/util/ribbon_config.cc +506 -0
  1699. package/vendor/rocksdb/util/ribbon_config.h +182 -0
  1700. package/vendor/rocksdb/util/ribbon_impl.h +1137 -0
  1701. package/vendor/rocksdb/util/ribbon_test.cc +1308 -0
  1702. package/vendor/rocksdb/util/set_comparator.h +24 -0
  1703. package/vendor/rocksdb/util/single_thread_executor.h +56 -0
  1704. package/vendor/rocksdb/util/slice.cc +367 -0
  1705. package/vendor/rocksdb/util/slice_test.cc +252 -0
  1706. package/vendor/rocksdb/util/slice_transform_test.cc +159 -0
  1707. package/vendor/rocksdb/util/status.cc +162 -0
  1708. package/vendor/rocksdb/util/stderr_logger.cc +30 -0
  1709. package/vendor/rocksdb/util/stderr_logger.h +31 -0
  1710. package/vendor/rocksdb/util/stop_watch.h +136 -0
  1711. package/vendor/rocksdb/util/string_util.cc +502 -0
  1712. package/vendor/rocksdb/util/string_util.h +175 -0
  1713. package/vendor/rocksdb/util/thread_guard.h +41 -0
  1714. package/vendor/rocksdb/util/thread_list_test.cc +362 -0
  1715. package/vendor/rocksdb/util/thread_local.cc +521 -0
  1716. package/vendor/rocksdb/util/thread_local.h +100 -0
  1717. package/vendor/rocksdb/util/thread_local_test.cc +578 -0
  1718. package/vendor/rocksdb/util/thread_operation.h +113 -0
  1719. package/vendor/rocksdb/util/threadpool_imp.cc +551 -0
  1720. package/vendor/rocksdb/util/threadpool_imp.h +120 -0
  1721. package/vendor/rocksdb/util/timer.h +340 -0
  1722. package/vendor/rocksdb/util/timer_queue.h +231 -0
  1723. package/vendor/rocksdb/util/timer_queue_test.cc +73 -0
  1724. package/vendor/rocksdb/util/timer_test.cc +402 -0
  1725. package/vendor/rocksdb/util/udt_util.h +77 -0
  1726. package/vendor/rocksdb/util/user_comparator_wrapper.h +64 -0
  1727. package/vendor/rocksdb/util/vector_iterator.h +118 -0
  1728. package/vendor/rocksdb/util/work_queue.h +150 -0
  1729. package/vendor/rocksdb/util/work_queue_test.cc +272 -0
  1730. package/vendor/rocksdb/util/xxhash.cc +48 -0
  1731. package/vendor/rocksdb/util/xxhash.h +6360 -0
  1732. package/vendor/rocksdb/util/xxph3.h +1764 -0
  1733. package/vendor/rocksdb/utilities/agg_merge/agg_merge.cc +238 -0
  1734. package/vendor/rocksdb/utilities/agg_merge/agg_merge_impl.h +49 -0
  1735. package/vendor/rocksdb/utilities/agg_merge/agg_merge_test.cc +135 -0
  1736. package/vendor/rocksdb/utilities/agg_merge/test_agg_merge.cc +104 -0
  1737. package/vendor/rocksdb/utilities/agg_merge/test_agg_merge.h +47 -0
  1738. package/vendor/rocksdb/utilities/backup/backup_engine.cc +3355 -0
  1739. package/vendor/rocksdb/utilities/backup/backup_engine_impl.h +34 -0
  1740. package/vendor/rocksdb/utilities/backup/backup_engine_test.cc +4414 -0
  1741. package/vendor/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  1742. package/vendor/rocksdb/utilities/blob_db/blob_compaction_filter.h +202 -0
  1743. package/vendor/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  1744. package/vendor/rocksdb/utilities/blob_db/blob_db.h +264 -0
  1745. package/vendor/rocksdb/utilities/blob_db/blob_db_gc_stats.h +54 -0
  1746. package/vendor/rocksdb/utilities/blob_db/blob_db_impl.cc +2185 -0
  1747. package/vendor/rocksdb/utilities/blob_db/blob_db_impl.h +501 -0
  1748. package/vendor/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +111 -0
  1749. package/vendor/rocksdb/utilities/blob_db/blob_db_iterator.h +148 -0
  1750. package/vendor/rocksdb/utilities/blob_db/blob_db_listener.h +69 -0
  1751. package/vendor/rocksdb/utilities/blob_db/blob_db_test.cc +2430 -0
  1752. package/vendor/rocksdb/utilities/blob_db/blob_dump_tool.cc +280 -0
  1753. package/vendor/rocksdb/utilities/blob_db/blob_dump_tool.h +56 -0
  1754. package/vendor/rocksdb/utilities/blob_db/blob_file.cc +316 -0
  1755. package/vendor/rocksdb/utilities/blob_db/blob_file.h +244 -0
  1756. package/vendor/rocksdb/utilities/cache_dump_load.cc +67 -0
  1757. package/vendor/rocksdb/utilities/cache_dump_load_impl.cc +369 -0
  1758. package/vendor/rocksdb/utilities/cache_dump_load_impl.h +356 -0
  1759. package/vendor/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +106 -0
  1760. package/vendor/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +57 -0
  1761. package/vendor/rocksdb/utilities/cassandra/cassandra_format_test.cc +377 -0
  1762. package/vendor/rocksdb/utilities/cassandra/cassandra_functional_test.cc +444 -0
  1763. package/vendor/rocksdb/utilities/cassandra/cassandra_options.h +41 -0
  1764. package/vendor/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +98 -0
  1765. package/vendor/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +164 -0
  1766. package/vendor/rocksdb/utilities/cassandra/format.cc +367 -0
  1767. package/vendor/rocksdb/utilities/cassandra/format.h +183 -0
  1768. package/vendor/rocksdb/utilities/cassandra/merge_operator.cc +80 -0
  1769. package/vendor/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  1770. package/vendor/rocksdb/utilities/cassandra/serialize.h +81 -0
  1771. package/vendor/rocksdb/utilities/cassandra/test_utils.cc +69 -0
  1772. package/vendor/rocksdb/utilities/cassandra/test_utils.h +42 -0
  1773. package/vendor/rocksdb/utilities/checkpoint/checkpoint_impl.cc +470 -0
  1774. package/vendor/rocksdb/utilities/checkpoint/checkpoint_impl.h +64 -0
  1775. package/vendor/rocksdb/utilities/checkpoint/checkpoint_test.cc +988 -0
  1776. package/vendor/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +41 -0
  1777. package/vendor/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +24 -0
  1778. package/vendor/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +26 -0
  1779. package/vendor/rocksdb/utilities/compaction_filters.cc +52 -0
  1780. package/vendor/rocksdb/utilities/convenience/info_log_finder.cc +26 -0
  1781. package/vendor/rocksdb/utilities/counted_fs.cc +379 -0
  1782. package/vendor/rocksdb/utilities/counted_fs.h +158 -0
  1783. package/vendor/rocksdb/utilities/debug.cc +118 -0
  1784. package/vendor/rocksdb/utilities/env_mirror.cc +273 -0
  1785. package/vendor/rocksdb/utilities/env_mirror_test.cc +216 -0
  1786. package/vendor/rocksdb/utilities/env_timed.cc +181 -0
  1787. package/vendor/rocksdb/utilities/env_timed.h +95 -0
  1788. package/vendor/rocksdb/utilities/env_timed_test.cc +34 -0
  1789. package/vendor/rocksdb/utilities/fault_injection_env.cc +555 -0
  1790. package/vendor/rocksdb/utilities/fault_injection_env.h +258 -0
  1791. package/vendor/rocksdb/utilities/fault_injection_fs.cc +1071 -0
  1792. package/vendor/rocksdb/utilities/fault_injection_fs.h +593 -0
  1793. package/vendor/rocksdb/utilities/fault_injection_secondary_cache.cc +136 -0
  1794. package/vendor/rocksdb/utilities/fault_injection_secondary_cache.h +109 -0
  1795. package/vendor/rocksdb/utilities/leveldb_options/leveldb_options.cc +57 -0
  1796. package/vendor/rocksdb/utilities/memory/memory_test.cc +269 -0
  1797. package/vendor/rocksdb/utilities/memory/memory_util.cc +50 -0
  1798. package/vendor/rocksdb/utilities/memory_allocators.h +103 -0
  1799. package/vendor/rocksdb/utilities/merge_operators/bytesxor.cc +57 -0
  1800. package/vendor/rocksdb/utilities/merge_operators/bytesxor.h +40 -0
  1801. package/vendor/rocksdb/utilities/merge_operators/max.cc +64 -0
  1802. package/vendor/rocksdb/utilities/merge_operators/max_operator.h +35 -0
  1803. package/vendor/rocksdb/utilities/merge_operators/put.cc +74 -0
  1804. package/vendor/rocksdb/utilities/merge_operators/put_operator.h +56 -0
  1805. package/vendor/rocksdb/utilities/merge_operators/sortlist.cc +95 -0
  1806. package/vendor/rocksdb/utilities/merge_operators/sortlist.h +42 -0
  1807. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend.cc +76 -0
  1808. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend.h +32 -0
  1809. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +130 -0
  1810. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend2.h +52 -0
  1811. package/vendor/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +636 -0
  1812. package/vendor/rocksdb/utilities/merge_operators/uint64add.cc +56 -0
  1813. package/vendor/rocksdb/utilities/merge_operators/uint64add.h +35 -0
  1814. package/vendor/rocksdb/utilities/merge_operators.cc +115 -0
  1815. package/vendor/rocksdb/utilities/merge_operators.h +36 -0
  1816. package/vendor/rocksdb/utilities/object_registry.cc +381 -0
  1817. package/vendor/rocksdb/utilities/object_registry_test.cc +862 -0
  1818. package/vendor/rocksdb/utilities/option_change_migration/option_change_migration.cc +176 -0
  1819. package/vendor/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +548 -0
  1820. package/vendor/rocksdb/utilities/options/options_util.cc +117 -0
  1821. package/vendor/rocksdb/utilities/options/options_util_test.cc +782 -0
  1822. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier.cc +420 -0
  1823. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier.h +154 -0
  1824. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +608 -0
  1825. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +291 -0
  1826. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  1827. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +84 -0
  1828. package/vendor/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +122 -0
  1829. package/vendor/rocksdb/utilities/persistent_cache/hash_table.h +237 -0
  1830. package/vendor/rocksdb/utilities/persistent_cache/hash_table_bench.cc +310 -0
  1831. package/vendor/rocksdb/utilities/persistent_cache/hash_table_evictable.h +166 -0
  1832. package/vendor/rocksdb/utilities/persistent_cache/hash_table_test.cc +161 -0
  1833. package/vendor/rocksdb/utilities/persistent_cache/lrulist.h +172 -0
  1834. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +355 -0
  1835. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +413 -0
  1836. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_test.h +284 -0
  1837. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +165 -0
  1838. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +340 -0
  1839. package/vendor/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  1840. package/vendor/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +138 -0
  1841. package/vendor/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +139 -0
  1842. package/vendor/rocksdb/utilities/simulator_cache/cache_simulator.cc +287 -0
  1843. package/vendor/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  1844. package/vendor/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +497 -0
  1845. package/vendor/rocksdb/utilities/simulator_cache/sim_cache.cc +372 -0
  1846. package/vendor/rocksdb/utilities/simulator_cache/sim_cache_test.cc +226 -0
  1847. package/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +221 -0
  1848. package/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +68 -0
  1849. package/vendor/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +238 -0
  1850. package/vendor/rocksdb/utilities/trace/file_trace_reader_writer.cc +133 -0
  1851. package/vendor/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  1852. package/vendor/rocksdb/utilities/trace/replayer_impl.cc +314 -0
  1853. package/vendor/rocksdb/utilities/trace/replayer_impl.h +84 -0
  1854. package/vendor/rocksdb/utilities/transactions/lock/lock_manager.cc +27 -0
  1855. package/vendor/rocksdb/utilities/transactions/lock/lock_manager.h +80 -0
  1856. package/vendor/rocksdb/utilities/transactions/lock/lock_tracker.h +207 -0
  1857. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +719 -0
  1858. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +222 -0
  1859. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +170 -0
  1860. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +324 -0
  1861. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +255 -0
  1862. package/vendor/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +97 -0
  1863. package/vendor/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +34 -0
  1864. package/vendor/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +448 -0
  1865. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  1866. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  1867. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  1868. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +13 -0
  1869. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  1870. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  1871. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  1872. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +137 -0
  1873. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  1874. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +220 -0
  1875. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  1876. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  1877. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +255 -0
  1878. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1021 -0
  1879. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +580 -0
  1880. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +525 -0
  1881. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +263 -0
  1882. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  1883. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +518 -0
  1884. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  1885. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +118 -0
  1886. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  1887. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +211 -0
  1888. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  1889. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  1890. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  1891. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  1892. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +83 -0
  1893. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1894. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1895. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1896. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1897. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +197 -0
  1898. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1899. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +130 -0
  1900. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +151 -0
  1901. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1902. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1903. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +199 -0
  1904. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1905. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1906. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1907. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1908. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1909. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +501 -0
  1910. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +135 -0
  1911. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +154 -0
  1912. package/vendor/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1913. package/vendor/rocksdb/utilities/transactions/optimistic_transaction.cc +194 -0
  1914. package/vendor/rocksdb/utilities/transactions/optimistic_transaction.h +99 -0
  1915. package/vendor/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +109 -0
  1916. package/vendor/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +86 -0
  1917. package/vendor/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1479 -0
  1918. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction.cc +1177 -0
  1919. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction.h +311 -0
  1920. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +780 -0
  1921. package/vendor/rocksdb/utilities/transactions/pessimistic_transaction_db.h +316 -0
  1922. package/vendor/rocksdb/utilities/transactions/snapshot_checker.cc +37 -0
  1923. package/vendor/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +457 -0
  1924. package/vendor/rocksdb/utilities/transactions/transaction_base.cc +757 -0
  1925. package/vendor/rocksdb/utilities/transactions/transaction_base.h +382 -0
  1926. package/vendor/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +133 -0
  1927. package/vendor/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +24 -0
  1928. package/vendor/rocksdb/utilities/transactions/transaction_test.cc +6751 -0
  1929. package/vendor/rocksdb/utilities/transactions/transaction_test.h +578 -0
  1930. package/vendor/rocksdb/utilities/transactions/transaction_util.cc +204 -0
  1931. package/vendor/rocksdb/utilities/transactions/transaction_util.h +83 -0
  1932. package/vendor/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +578 -0
  1933. package/vendor/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +4066 -0
  1934. package/vendor/rocksdb/utilities/transactions/write_prepared_txn.cc +515 -0
  1935. package/vendor/rocksdb/utilities/transactions/write_prepared_txn.h +117 -0
  1936. package/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.cc +1038 -0
  1937. package/vendor/rocksdb/utilities/transactions/write_prepared_txn_db.h +1123 -0
  1938. package/vendor/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +779 -0
  1939. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn.cc +1056 -0
  1940. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn.h +339 -0
  1941. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +476 -0
  1942. package/vendor/rocksdb/utilities/transactions/write_unprepared_txn_db.h +106 -0
  1943. package/vendor/rocksdb/utilities/ttl/db_ttl_impl.cc +617 -0
  1944. package/vendor/rocksdb/utilities/ttl/db_ttl_impl.h +243 -0
  1945. package/vendor/rocksdb/utilities/ttl/ttl_test.cc +913 -0
  1946. package/vendor/rocksdb/utilities/util_merge_operators_test.cc +100 -0
  1947. package/vendor/rocksdb/utilities/wal_filter.cc +22 -0
  1948. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +694 -0
  1949. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +742 -0
  1950. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +342 -0
  1951. package/vendor/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +2409 -0
@@ -0,0 +1,2202 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+ #include <cinttypes>
10
+
11
+ #include "db/builder.h"
12
+ #include "db/db_impl/db_impl.h"
13
+ #include "db/error_handler.h"
14
+ #include "db/periodic_task_scheduler.h"
15
+ #include "env/composite_env_wrapper.h"
16
+ #include "file/filename.h"
17
+ #include "file/read_write_util.h"
18
+ #include "file/sst_file_manager_impl.h"
19
+ #include "file/writable_file_writer.h"
20
+ #include "logging/logging.h"
21
+ #include "monitoring/persistent_stats_history.h"
22
+ #include "monitoring/thread_status_util.h"
23
+ #include "options/options_helper.h"
24
+ #include "rocksdb/table.h"
25
+ #include "rocksdb/wal_filter.h"
26
+ #include "test_util/sync_point.h"
27
+ #include "util/rate_limiter_impl.h"
28
+
29
+ namespace ROCKSDB_NAMESPACE {
30
+ Options SanitizeOptions(const std::string& dbname, const Options& src,
31
+ bool read_only, Status* logger_creation_s) {
32
+ auto db_options =
33
+ SanitizeOptions(dbname, DBOptions(src), read_only, logger_creation_s);
34
+ ImmutableDBOptions immutable_db_options(db_options);
35
+ auto cf_options =
36
+ SanitizeOptions(immutable_db_options, ColumnFamilyOptions(src));
37
+ return Options(db_options, cf_options);
38
+ }
39
+
40
+ DBOptions SanitizeOptions(const std::string& dbname, const DBOptions& src,
41
+ bool read_only, Status* logger_creation_s) {
42
+ DBOptions result(src);
43
+
44
+ if (result.env == nullptr) {
45
+ result.env = Env::Default();
46
+ }
47
+
48
+ // result.max_open_files means an "infinite" open files.
49
+ if (result.max_open_files != -1) {
50
+ int max_max_open_files = port::GetMaxOpenFiles();
51
+ if (max_max_open_files == -1) {
52
+ max_max_open_files = 0x400000;
53
+ }
54
+ ClipToRange(&result.max_open_files, 20, max_max_open_files);
55
+ TEST_SYNC_POINT_CALLBACK("SanitizeOptions::AfterChangeMaxOpenFiles",
56
+ &result.max_open_files);
57
+ }
58
+
59
+ if (result.info_log == nullptr && !read_only) {
60
+ Status s = CreateLoggerFromOptions(dbname, result, &result.info_log);
61
+ if (!s.ok()) {
62
+ // No place suitable for logging
63
+ result.info_log = nullptr;
64
+ if (logger_creation_s) {
65
+ *logger_creation_s = s;
66
+ }
67
+ }
68
+ }
69
+
70
+ if (!result.write_buffer_manager) {
71
+ result.write_buffer_manager.reset(
72
+ new WriteBufferManager(result.db_write_buffer_size));
73
+ }
74
+ auto bg_job_limits = DBImpl::GetBGJobLimits(
75
+ result.max_background_flushes, result.max_background_compactions,
76
+ result.max_background_jobs, true /* parallelize_compactions */);
77
+ result.env->IncBackgroundThreadsIfNeeded(bg_job_limits.max_compactions,
78
+ Env::Priority::LOW);
79
+ result.env->IncBackgroundThreadsIfNeeded(bg_job_limits.max_flushes,
80
+ Env::Priority::HIGH);
81
+
82
+ if (result.rate_limiter.get() != nullptr) {
83
+ if (result.bytes_per_sync == 0) {
84
+ result.bytes_per_sync = 1024 * 1024;
85
+ }
86
+ }
87
+
88
+ if (result.delayed_write_rate == 0) {
89
+ if (result.rate_limiter.get() != nullptr) {
90
+ result.delayed_write_rate = result.rate_limiter->GetBytesPerSecond();
91
+ }
92
+ if (result.delayed_write_rate == 0) {
93
+ result.delayed_write_rate = 16 * 1024 * 1024;
94
+ }
95
+ }
96
+
97
+ if (result.WAL_ttl_seconds > 0 || result.WAL_size_limit_MB > 0) {
98
+ result.recycle_log_file_num = false;
99
+ }
100
+
101
+ if (result.recycle_log_file_num &&
102
+ (result.wal_recovery_mode ==
103
+ WALRecoveryMode::kTolerateCorruptedTailRecords ||
104
+ result.wal_recovery_mode == WALRecoveryMode::kPointInTimeRecovery ||
105
+ result.wal_recovery_mode == WALRecoveryMode::kAbsoluteConsistency)) {
106
+ // - kTolerateCorruptedTailRecords is inconsistent with recycle log file
107
+ // feature. WAL recycling expects recovery success upon encountering a
108
+ // corrupt record at the point where new data ends and recycled data
109
+ // remains at the tail. However, `kTolerateCorruptedTailRecords` must fail
110
+ // upon encountering any such corrupt record, as it cannot differentiate
111
+ // between this and a real corruption, which would cause committed updates
112
+ // to be truncated -- a violation of the recovery guarantee.
113
+ // - kPointInTimeRecovery and kAbsoluteConsistency are incompatible with
114
+ // recycle log file feature temporarily due to a bug found introducing a
115
+ // hole in the recovered data
116
+ // (https://github.com/facebook/rocksdb/pull/7252#issuecomment-673766236).
117
+ // Besides this bug, we believe the features are fundamentally compatible.
118
+ result.recycle_log_file_num = 0;
119
+ }
120
+
121
+ if (result.db_paths.size() == 0) {
122
+ result.db_paths.emplace_back(dbname, std::numeric_limits<uint64_t>::max());
123
+ } else if (result.wal_dir.empty()) {
124
+ // Use dbname as default
125
+ result.wal_dir = dbname;
126
+ }
127
+ if (!result.wal_dir.empty()) {
128
+ // If there is a wal_dir already set, check to see if the wal_dir is the
129
+ // same as the dbname AND the same as the db_path[0] (which must exist from
130
+ // a few lines ago). If the wal_dir matches both of these values, then clear
131
+ // the wal_dir value, which will make wal_dir == dbname. Most likely this
132
+ // condition was the result of reading an old options file where we forced
133
+ // wal_dir to be set (to dbname).
134
+ auto npath = NormalizePath(dbname + "/");
135
+ if (npath == NormalizePath(result.wal_dir + "/") &&
136
+ npath == NormalizePath(result.db_paths[0].path + "/")) {
137
+ result.wal_dir.clear();
138
+ }
139
+ }
140
+
141
+ if (!result.wal_dir.empty() && result.wal_dir.back() == '/') {
142
+ result.wal_dir = result.wal_dir.substr(0, result.wal_dir.size() - 1);
143
+ }
144
+
145
+ if (result.use_direct_reads && result.compaction_readahead_size == 0) {
146
+ TEST_SYNC_POINT_CALLBACK("SanitizeOptions:direct_io", nullptr);
147
+ result.compaction_readahead_size = 1024 * 1024 * 2;
148
+ }
149
+
150
+ // Force flush on DB open if 2PC is enabled, since with 2PC we have no
151
+ // guarantee that consecutive log files have consecutive sequence id, which
152
+ // make recovery complicated.
153
+ if (result.allow_2pc) {
154
+ result.avoid_flush_during_recovery = false;
155
+ }
156
+
157
+ ImmutableDBOptions immutable_db_options(result);
158
+ if (!immutable_db_options.IsWalDirSameAsDBPath()) {
159
+ // Either the WAL dir and db_paths[0]/db_name are not the same, or we
160
+ // cannot tell for sure. In either case, assume they're different and
161
+ // explicitly cleanup the trash log files (bypass DeleteScheduler)
162
+ // Do this first so even if we end up calling
163
+ // DeleteScheduler::CleanupDirectory on the same dir later, it will be
164
+ // safe
165
+ std::vector<std::string> filenames;
166
+ IOOptions io_opts;
167
+ io_opts.do_not_recurse = true;
168
+ auto wal_dir = immutable_db_options.GetWalDir();
169
+ Status s = immutable_db_options.fs->GetChildren(
170
+ wal_dir, io_opts, &filenames, /*IODebugContext*=*/nullptr);
171
+ s.PermitUncheckedError(); //**TODO: What to do on error?
172
+ for (std::string& filename : filenames) {
173
+ if (filename.find(".log.trash", filename.length() -
174
+ std::string(".log.trash").length()) !=
175
+ std::string::npos) {
176
+ std::string trash_file = wal_dir + "/" + filename;
177
+ result.env->DeleteFile(trash_file).PermitUncheckedError();
178
+ }
179
+ }
180
+ }
181
+ // When the DB is stopped, it's possible that there are some .trash files that
182
+ // were not deleted yet, when we open the DB we will find these .trash files
183
+ // and schedule them to be deleted (or delete immediately if SstFileManager
184
+ // was not used)
185
+ auto sfm = static_cast<SstFileManagerImpl*>(result.sst_file_manager.get());
186
+ for (size_t i = 0; i < result.db_paths.size(); i++) {
187
+ DeleteScheduler::CleanupDirectory(result.env, sfm, result.db_paths[i].path)
188
+ .PermitUncheckedError();
189
+ }
190
+
191
+ // Create a default SstFileManager for purposes of tracking compaction size
192
+ // and facilitating recovery from out of space errors.
193
+ if (result.sst_file_manager.get() == nullptr) {
194
+ std::shared_ptr<SstFileManager> sst_file_manager(
195
+ NewSstFileManager(result.env, result.info_log));
196
+ result.sst_file_manager = sst_file_manager;
197
+ }
198
+
199
+ // Supported wal compression types
200
+ if (!StreamingCompressionTypeSupported(result.wal_compression)) {
201
+ result.wal_compression = kNoCompression;
202
+ ROCKS_LOG_WARN(result.info_log,
203
+ "wal_compression is disabled since only zstd is supported");
204
+ }
205
+
206
+ if (!result.paranoid_checks) {
207
+ result.skip_checking_sst_file_sizes_on_db_open = true;
208
+ ROCKS_LOG_INFO(result.info_log,
209
+ "file size check will be skipped during open.");
210
+ }
211
+
212
+ return result;
213
+ }
214
+
215
+ namespace {
216
+ Status ValidateOptionsByTable(
217
+ const DBOptions& db_opts,
218
+ const std::vector<ColumnFamilyDescriptor>& column_families) {
219
+ Status s;
220
+ for (auto& cf : column_families) {
221
+ s = ValidateOptions(db_opts, cf.options);
222
+ if (!s.ok()) {
223
+ return s;
224
+ }
225
+ }
226
+ return Status::OK();
227
+ }
228
+ } // namespace
229
+
230
+ Status DBImpl::ValidateOptions(
231
+ const DBOptions& db_options,
232
+ const std::vector<ColumnFamilyDescriptor>& column_families) {
233
+ Status s;
234
+ for (auto& cfd : column_families) {
235
+ s = ColumnFamilyData::ValidateOptions(db_options, cfd.options);
236
+ if (!s.ok()) {
237
+ return s;
238
+ }
239
+ }
240
+ s = ValidateOptions(db_options);
241
+ return s;
242
+ }
243
+
244
+ Status DBImpl::ValidateOptions(const DBOptions& db_options) {
245
+ if (db_options.db_paths.size() > 4) {
246
+ return Status::NotSupported(
247
+ "More than four DB paths are not supported yet. ");
248
+ }
249
+
250
+ if (db_options.allow_mmap_reads && db_options.use_direct_reads) {
251
+ // Protect against assert in PosixMMapReadableFile constructor
252
+ return Status::NotSupported(
253
+ "If memory mapped reads (allow_mmap_reads) are enabled "
254
+ "then direct I/O reads (use_direct_reads) must be disabled. ");
255
+ }
256
+
257
+ if (db_options.allow_mmap_writes &&
258
+ db_options.use_direct_io_for_flush_and_compaction) {
259
+ return Status::NotSupported(
260
+ "If memory mapped writes (allow_mmap_writes) are enabled "
261
+ "then direct I/O writes (use_direct_io_for_flush_and_compaction) must "
262
+ "be disabled. ");
263
+ }
264
+
265
+ if (db_options.keep_log_file_num == 0) {
266
+ return Status::InvalidArgument("keep_log_file_num must be greater than 0");
267
+ }
268
+
269
+ if (db_options.unordered_write &&
270
+ !db_options.allow_concurrent_memtable_write) {
271
+ return Status::InvalidArgument(
272
+ "unordered_write is incompatible with "
273
+ "!allow_concurrent_memtable_write");
274
+ }
275
+
276
+ if (db_options.unordered_write && db_options.enable_pipelined_write) {
277
+ return Status::InvalidArgument(
278
+ "unordered_write is incompatible with enable_pipelined_write");
279
+ }
280
+
281
+ if (db_options.atomic_flush && db_options.enable_pipelined_write) {
282
+ return Status::InvalidArgument(
283
+ "atomic_flush is incompatible with enable_pipelined_write");
284
+ }
285
+
286
+ // TODO remove this restriction
287
+ if (db_options.atomic_flush && db_options.best_efforts_recovery) {
288
+ return Status::InvalidArgument(
289
+ "atomic_flush is currently incompatible with best-efforts recovery");
290
+ }
291
+
292
+ if (db_options.use_direct_io_for_flush_and_compaction &&
293
+ 0 == db_options.writable_file_max_buffer_size) {
294
+ return Status::InvalidArgument(
295
+ "writes in direct IO require writable_file_max_buffer_size > 0");
296
+ }
297
+
298
+ return Status::OK();
299
+ }
300
+
301
+ Status DBImpl::NewDB(std::vector<std::string>* new_filenames) {
302
+ VersionEdit new_db;
303
+ Status s = SetIdentityFile(env_, dbname_);
304
+ if (!s.ok()) {
305
+ return s;
306
+ }
307
+ if (immutable_db_options_.write_dbid_to_manifest) {
308
+ std::string temp_db_id;
309
+ GetDbIdentityFromIdentityFile(&temp_db_id);
310
+ new_db.SetDBId(temp_db_id);
311
+ }
312
+ new_db.SetLogNumber(0);
313
+ new_db.SetNextFile(2);
314
+ new_db.SetLastSequence(0);
315
+
316
+ ROCKS_LOG_INFO(immutable_db_options_.info_log, "Creating manifest 1 \n");
317
+ const std::string manifest = DescriptorFileName(dbname_, 1);
318
+ {
319
+ if (fs_->FileExists(manifest, IOOptions(), nullptr).ok()) {
320
+ fs_->DeleteFile(manifest, IOOptions(), nullptr).PermitUncheckedError();
321
+ }
322
+ std::unique_ptr<FSWritableFile> file;
323
+ FileOptions file_options = fs_->OptimizeForManifestWrite(file_options_);
324
+ s = NewWritableFile(fs_.get(), manifest, &file, file_options);
325
+ if (!s.ok()) {
326
+ return s;
327
+ }
328
+ FileTypeSet tmp_set = immutable_db_options_.checksum_handoff_file_types;
329
+ file->SetPreallocationBlockSize(
330
+ immutable_db_options_.manifest_preallocation_size);
331
+ std::unique_ptr<WritableFileWriter> file_writer(new WritableFileWriter(
332
+ std::move(file), manifest, file_options, immutable_db_options_.clock,
333
+ io_tracer_, nullptr /* stats */, immutable_db_options_.listeners,
334
+ nullptr, tmp_set.Contains(FileType::kDescriptorFile),
335
+ tmp_set.Contains(FileType::kDescriptorFile)));
336
+ log::Writer log(std::move(file_writer), 0, false);
337
+ std::string record;
338
+ new_db.EncodeTo(&record);
339
+ s = log.AddRecord(record);
340
+ if (s.ok()) {
341
+ s = SyncManifest(&immutable_db_options_, log.file());
342
+ }
343
+ }
344
+ if (s.ok()) {
345
+ // Make "CURRENT" file that points to the new manifest file.
346
+ s = SetCurrentFile(fs_.get(), dbname_, 1, directories_.GetDbDir());
347
+ if (new_filenames) {
348
+ new_filenames->emplace_back(
349
+ manifest.substr(manifest.find_last_of("/\\") + 1));
350
+ }
351
+ } else {
352
+ fs_->DeleteFile(manifest, IOOptions(), nullptr).PermitUncheckedError();
353
+ }
354
+ return s;
355
+ }
356
+
357
+ IOStatus DBImpl::CreateAndNewDirectory(
358
+ FileSystem* fs, const std::string& dirname,
359
+ std::unique_ptr<FSDirectory>* directory) {
360
+ // We call CreateDirIfMissing() as the directory may already exist (if we
361
+ // are reopening a DB), when this happens we don't want creating the
362
+ // directory to cause an error. However, we need to check if creating the
363
+ // directory fails or else we may get an obscure message about the lock
364
+ // file not existing. One real-world example of this occurring is if
365
+ // env->CreateDirIfMissing() doesn't create intermediate directories, e.g.
366
+ // when dbname_ is "dir/db" but when "dir" doesn't exist.
367
+ IOStatus io_s = fs->CreateDirIfMissing(dirname, IOOptions(), nullptr);
368
+ if (!io_s.ok()) {
369
+ return io_s;
370
+ }
371
+ return fs->NewDirectory(dirname, IOOptions(), directory, nullptr);
372
+ }
373
+
374
+ IOStatus Directories::SetDirectories(FileSystem* fs, const std::string& dbname,
375
+ const std::string& wal_dir,
376
+ const std::vector<DbPath>& data_paths) {
377
+ IOStatus io_s = DBImpl::CreateAndNewDirectory(fs, dbname, &db_dir_);
378
+ if (!io_s.ok()) {
379
+ return io_s;
380
+ }
381
+ if (!wal_dir.empty() && dbname != wal_dir) {
382
+ io_s = DBImpl::CreateAndNewDirectory(fs, wal_dir, &wal_dir_);
383
+ if (!io_s.ok()) {
384
+ return io_s;
385
+ }
386
+ }
387
+
388
+ data_dirs_.clear();
389
+ for (auto& p : data_paths) {
390
+ const std::string db_path = p.path;
391
+ if (db_path == dbname) {
392
+ data_dirs_.emplace_back(nullptr);
393
+ } else {
394
+ std::unique_ptr<FSDirectory> path_directory;
395
+ io_s = DBImpl::CreateAndNewDirectory(fs, db_path, &path_directory);
396
+ if (!io_s.ok()) {
397
+ return io_s;
398
+ }
399
+ data_dirs_.emplace_back(path_directory.release());
400
+ }
401
+ }
402
+ assert(data_dirs_.size() == data_paths.size());
403
+ return IOStatus::OK();
404
+ }
405
+
406
+ Status DBImpl::Recover(
407
+ const std::vector<ColumnFamilyDescriptor>& column_families, bool read_only,
408
+ bool error_if_wal_file_exists, bool error_if_data_exists_in_wals,
409
+ uint64_t* recovered_seq, RecoveryContext* recovery_ctx) {
410
+ mutex_.AssertHeld();
411
+
412
+ bool is_new_db = false;
413
+ assert(db_lock_ == nullptr);
414
+ std::vector<std::string> files_in_dbname;
415
+ if (!read_only) {
416
+ Status s = directories_.SetDirectories(fs_.get(), dbname_,
417
+ immutable_db_options_.wal_dir,
418
+ immutable_db_options_.db_paths);
419
+ if (!s.ok()) {
420
+ return s;
421
+ }
422
+
423
+ s = env_->LockFile(LockFileName(dbname_), &db_lock_);
424
+ if (!s.ok()) {
425
+ return s;
426
+ }
427
+
428
+ std::string current_fname = CurrentFileName(dbname_);
429
+ // Path to any MANIFEST file in the db dir. It does not matter which one.
430
+ // Since best-efforts recovery ignores CURRENT file, existence of a
431
+ // MANIFEST indicates the recovery to recover existing db. If no MANIFEST
432
+ // can be found, a new db will be created.
433
+ std::string manifest_path;
434
+ if (!immutable_db_options_.best_efforts_recovery) {
435
+ s = env_->FileExists(current_fname);
436
+ } else {
437
+ s = Status::NotFound();
438
+ IOOptions io_opts;
439
+ io_opts.do_not_recurse = true;
440
+ Status io_s = immutable_db_options_.fs->GetChildren(
441
+ dbname_, io_opts, &files_in_dbname, /*IODebugContext*=*/nullptr);
442
+ if (!io_s.ok()) {
443
+ s = io_s;
444
+ files_in_dbname.clear();
445
+ }
446
+ for (const std::string& file : files_in_dbname) {
447
+ uint64_t number = 0;
448
+ FileType type = kWalFile; // initialize
449
+ if (ParseFileName(file, &number, &type) && type == kDescriptorFile) {
450
+ uint64_t bytes;
451
+ s = env_->GetFileSize(DescriptorFileName(dbname_, number), &bytes);
452
+ if (s.ok() && bytes != 0) {
453
+ // Found non-empty MANIFEST (descriptor log), thus best-efforts
454
+ // recovery does not have to treat the db as empty.
455
+ manifest_path = dbname_ + "/" + file;
456
+ break;
457
+ }
458
+ }
459
+ }
460
+ }
461
+ if (s.IsNotFound()) {
462
+ if (immutable_db_options_.create_if_missing) {
463
+ s = NewDB(&files_in_dbname);
464
+ is_new_db = true;
465
+ if (!s.ok()) {
466
+ return s;
467
+ }
468
+ } else {
469
+ return Status::InvalidArgument(
470
+ current_fname, "does not exist (create_if_missing is false)");
471
+ }
472
+ } else if (s.ok()) {
473
+ if (immutable_db_options_.error_if_exists) {
474
+ return Status::InvalidArgument(dbname_,
475
+ "exists (error_if_exists is true)");
476
+ }
477
+ } else {
478
+ // Unexpected error reading file
479
+ assert(s.IsIOError());
480
+ return s;
481
+ }
482
+ // Verify compatibility of file_options_ and filesystem
483
+ {
484
+ std::unique_ptr<FSRandomAccessFile> idfile;
485
+ FileOptions customized_fs(file_options_);
486
+ customized_fs.use_direct_reads |=
487
+ immutable_db_options_.use_direct_io_for_flush_and_compaction;
488
+ const std::string& fname =
489
+ manifest_path.empty() ? current_fname : manifest_path;
490
+ s = fs_->NewRandomAccessFile(fname, customized_fs, &idfile, nullptr);
491
+ if (!s.ok()) {
492
+ std::string error_str = s.ToString();
493
+ // Check if unsupported Direct I/O is the root cause
494
+ customized_fs.use_direct_reads = false;
495
+ s = fs_->NewRandomAccessFile(fname, customized_fs, &idfile, nullptr);
496
+ if (s.ok()) {
497
+ return Status::InvalidArgument(
498
+ "Direct I/O is not supported by the specified DB.");
499
+ } else {
500
+ return Status::InvalidArgument(
501
+ "Found options incompatible with filesystem", error_str.c_str());
502
+ }
503
+ }
504
+ }
505
+ } else if (immutable_db_options_.best_efforts_recovery) {
506
+ assert(files_in_dbname.empty());
507
+ IOOptions io_opts;
508
+ io_opts.do_not_recurse = true;
509
+ Status s = immutable_db_options_.fs->GetChildren(
510
+ dbname_, io_opts, &files_in_dbname, /*IODebugContext*=*/nullptr);
511
+ if (s.IsNotFound()) {
512
+ return Status::InvalidArgument(dbname_,
513
+ "does not exist (open for read only)");
514
+ } else if (s.IsIOError()) {
515
+ return s;
516
+ }
517
+ assert(s.ok());
518
+ }
519
+ assert(db_id_.empty());
520
+ Status s;
521
+ bool missing_table_file = false;
522
+ if (!immutable_db_options_.best_efforts_recovery) {
523
+ s = versions_->Recover(column_families, read_only, &db_id_);
524
+ } else {
525
+ assert(!files_in_dbname.empty());
526
+ s = versions_->TryRecover(column_families, read_only, files_in_dbname,
527
+ &db_id_, &missing_table_file);
528
+ if (s.ok()) {
529
+ // TryRecover may delete previous column_family_set_.
530
+ column_family_memtables_.reset(
531
+ new ColumnFamilyMemTablesImpl(versions_->GetColumnFamilySet()));
532
+ }
533
+ }
534
+ if (!s.ok()) {
535
+ return s;
536
+ }
537
+ if (s.ok() && !read_only) {
538
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
539
+ // Try to trivially move files down the LSM tree to start from bottommost
540
+ // level when level_compaction_dynamic_level_bytes is enabled. This should
541
+ // only be useful when user is migrating to turning on this option.
542
+ // If a user is migrating from Level Compaction with a smaller level
543
+ // multiplier or from Universal Compaction, there may be too many
544
+ // non-empty levels and the trivial moves here are not sufficed for
545
+ // migration. Additional compactions are needed to drain unnecessary
546
+ // levels.
547
+ //
548
+ // Note that this step moves files down LSM without consulting
549
+ // SSTPartitioner. Further compactions are still needed if
550
+ // the user wants to partition SST files.
551
+ // Note that files moved in this step may not respect the compression
552
+ // option in target level.
553
+ if (cfd->ioptions()->compaction_style ==
554
+ CompactionStyle::kCompactionStyleLevel &&
555
+ cfd->ioptions()->level_compaction_dynamic_level_bytes &&
556
+ !cfd->GetLatestMutableCFOptions()->disable_auto_compactions) {
557
+ int to_level = cfd->ioptions()->num_levels - 1;
558
+ // last level is reserved
559
+ // allow_ingest_behind does not support Level Compaction,
560
+ // and per_key_placement can have infinite compaction loop for Level
561
+ // Compaction. Adjust to_level here just to be safe.
562
+ if (cfd->ioptions()->allow_ingest_behind ||
563
+ cfd->ioptions()->preclude_last_level_data_seconds > 0) {
564
+ to_level -= 1;
565
+ }
566
+ // Whether this column family has a level trivially moved
567
+ bool moved = false;
568
+ // Fill the LSM starting from to_level and going up one level at a time.
569
+ // Some loop invariants (when last level is not reserved):
570
+ // - levels in (from_level, to_level] are empty, and
571
+ // - levels in (to_level, last_level] are non-empty.
572
+ for (int from_level = to_level; from_level >= 0; --from_level) {
573
+ const std::vector<FileMetaData*>& level_files =
574
+ cfd->current()->storage_info()->LevelFiles(from_level);
575
+ if (level_files.empty() || from_level == 0) {
576
+ continue;
577
+ }
578
+ assert(from_level <= to_level);
579
+ // Trivial move files from `from_level` to `to_level`
580
+ if (from_level < to_level) {
581
+ if (!moved) {
582
+ // lsm_state will look like "[1,2,3,4,5,6,0]" for an LSM with
583
+ // 7 levels
584
+ std::string lsm_state = "[";
585
+ for (int i = 0; i < cfd->ioptions()->num_levels; ++i) {
586
+ lsm_state += std::to_string(
587
+ cfd->current()->storage_info()->NumLevelFiles(i));
588
+ if (i < cfd->ioptions()->num_levels - 1) {
589
+ lsm_state += ",";
590
+ }
591
+ }
592
+ lsm_state += "]";
593
+ ROCKS_LOG_WARN(immutable_db_options_.info_log,
594
+ "[%s] Trivially move files down the LSM when open "
595
+ "with level_compaction_dynamic_level_bytes=true,"
596
+ " lsm_state: %s (Files are moved only if DB "
597
+ "Recovery is successful).",
598
+ cfd->GetName().c_str(), lsm_state.c_str());
599
+ moved = true;
600
+ }
601
+ ROCKS_LOG_WARN(
602
+ immutable_db_options_.info_log,
603
+ "[%s] Moving %zu files from from_level-%d to from_level-%d",
604
+ cfd->GetName().c_str(), level_files.size(), from_level,
605
+ to_level);
606
+ VersionEdit edit;
607
+ edit.SetColumnFamily(cfd->GetID());
608
+ for (const FileMetaData* f : level_files) {
609
+ edit.DeleteFile(from_level, f->fd.GetNumber());
610
+ edit.AddFile(to_level, f->fd.GetNumber(), f->fd.GetPathId(),
611
+ f->fd.GetFileSize(), f->smallest, f->largest,
612
+ f->fd.smallest_seqno, f->fd.largest_seqno,
613
+ f->marked_for_compaction,
614
+ f->temperature, // this can be different from
615
+ // `last_level_temperature`
616
+ f->oldest_blob_file_number, f->oldest_ancester_time,
617
+ f->file_creation_time, f->epoch_number,
618
+ f->file_checksum, f->file_checksum_func_name,
619
+ f->unique_id, f->compensated_range_deletion_size,
620
+ f->tail_size);
621
+ ROCKS_LOG_WARN(immutable_db_options_.info_log,
622
+ "[%s] Moving #%" PRIu64
623
+ " from from_level-%d to from_level-%d %" PRIu64
624
+ " bytes\n",
625
+ cfd->GetName().c_str(), f->fd.GetNumber(),
626
+ from_level, to_level, f->fd.GetFileSize());
627
+ }
628
+ recovery_ctx->UpdateVersionEdits(cfd, edit);
629
+ }
630
+ --to_level;
631
+ }
632
+ }
633
+ }
634
+ }
635
+ s = SetupDBId(read_only, recovery_ctx);
636
+ ROCKS_LOG_INFO(immutable_db_options_.info_log, "DB ID: %s\n", db_id_.c_str());
637
+ if (s.ok() && !read_only) {
638
+ s = DeleteUnreferencedSstFiles(recovery_ctx);
639
+ }
640
+
641
+ if (immutable_db_options_.paranoid_checks && s.ok()) {
642
+ s = CheckConsistency();
643
+ }
644
+ if (s.ok() && !read_only) {
645
+ // TODO: share file descriptors (FSDirectory) with SetDirectories above
646
+ std::map<std::string, std::shared_ptr<FSDirectory>> created_dirs;
647
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
648
+ s = cfd->AddDirectories(&created_dirs);
649
+ if (!s.ok()) {
650
+ return s;
651
+ }
652
+ }
653
+ }
654
+
655
+ std::vector<std::string> files_in_wal_dir;
656
+ if (s.ok()) {
657
+ // Initial max_total_in_memory_state_ before recovery wals. Log recovery
658
+ // may check this value to decide whether to flush.
659
+ max_total_in_memory_state_ = 0;
660
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
661
+ auto* mutable_cf_options = cfd->GetLatestMutableCFOptions();
662
+ max_total_in_memory_state_ += mutable_cf_options->write_buffer_size *
663
+ mutable_cf_options->max_write_buffer_number;
664
+ }
665
+
666
+ SequenceNumber next_sequence(kMaxSequenceNumber);
667
+ default_cf_handle_ = new ColumnFamilyHandleImpl(
668
+ versions_->GetColumnFamilySet()->GetDefault(), this, &mutex_);
669
+ default_cf_internal_stats_ = default_cf_handle_->cfd()->internal_stats();
670
+
671
+ // Recover from all newer log files than the ones named in the
672
+ // descriptor (new log files may have been added by the previous
673
+ // incarnation without registering them in the descriptor).
674
+ //
675
+ // Note that prev_log_number() is no longer used, but we pay
676
+ // attention to it in case we are recovering a database
677
+ // produced by an older version of rocksdb.
678
+ auto wal_dir = immutable_db_options_.GetWalDir();
679
+ if (!immutable_db_options_.best_efforts_recovery) {
680
+ IOOptions io_opts;
681
+ io_opts.do_not_recurse = true;
682
+ s = immutable_db_options_.fs->GetChildren(
683
+ wal_dir, io_opts, &files_in_wal_dir, /*IODebugContext*=*/nullptr);
684
+ }
685
+ if (s.IsNotFound()) {
686
+ return Status::InvalidArgument("wal_dir not found", wal_dir);
687
+ } else if (!s.ok()) {
688
+ return s;
689
+ }
690
+
691
+ std::unordered_map<uint64_t, std::string> wal_files;
692
+ for (const auto& file : files_in_wal_dir) {
693
+ uint64_t number;
694
+ FileType type;
695
+ if (ParseFileName(file, &number, &type) && type == kWalFile) {
696
+ if (is_new_db) {
697
+ return Status::Corruption(
698
+ "While creating a new Db, wal_dir contains "
699
+ "existing log file: ",
700
+ file);
701
+ } else {
702
+ wal_files[number] = LogFileName(wal_dir, number);
703
+ }
704
+ }
705
+ }
706
+
707
+ if (immutable_db_options_.track_and_verify_wals_in_manifest) {
708
+ if (!immutable_db_options_.best_efforts_recovery) {
709
+ // Verify WALs in MANIFEST.
710
+ s = versions_->GetWalSet().CheckWals(env_, wal_files);
711
+ } // else since best effort recovery does not recover from WALs, no need
712
+ // to check WALs.
713
+ } else if (!versions_->GetWalSet().GetWals().empty()) {
714
+ // Tracking is disabled, clear previously tracked WALs from MANIFEST,
715
+ // otherwise, in the future, if WAL tracking is enabled again,
716
+ // since the WALs deleted when WAL tracking is disabled are not persisted
717
+ // into MANIFEST, WAL check may fail.
718
+ VersionEdit edit;
719
+ WalNumber max_wal_number =
720
+ versions_->GetWalSet().GetWals().rbegin()->first;
721
+ edit.DeleteWalsBefore(max_wal_number + 1);
722
+ assert(recovery_ctx != nullptr);
723
+ assert(versions_->GetColumnFamilySet() != nullptr);
724
+ recovery_ctx->UpdateVersionEdits(
725
+ versions_->GetColumnFamilySet()->GetDefault(), edit);
726
+ }
727
+ if (!s.ok()) {
728
+ return s;
729
+ }
730
+
731
+ if (!wal_files.empty()) {
732
+ if (error_if_wal_file_exists) {
733
+ return Status::Corruption(
734
+ "The db was opened in readonly mode with error_if_wal_file_exists"
735
+ "flag but a WAL file already exists");
736
+ } else if (error_if_data_exists_in_wals) {
737
+ for (auto& wal_file : wal_files) {
738
+ uint64_t bytes;
739
+ s = env_->GetFileSize(wal_file.second, &bytes);
740
+ if (s.ok()) {
741
+ if (bytes > 0) {
742
+ return Status::Corruption(
743
+ "error_if_data_exists_in_wals is set but there are data "
744
+ " in WAL files.");
745
+ }
746
+ }
747
+ }
748
+ }
749
+ }
750
+
751
+ if (!wal_files.empty()) {
752
+ // Recover in the order in which the wals were generated
753
+ std::vector<uint64_t> wals;
754
+ wals.reserve(wal_files.size());
755
+ for (const auto& wal_file : wal_files) {
756
+ wals.push_back(wal_file.first);
757
+ }
758
+ std::sort(wals.begin(), wals.end());
759
+
760
+ bool corrupted_wal_found = false;
761
+ s = RecoverLogFiles(wals, &next_sequence, read_only, &corrupted_wal_found,
762
+ recovery_ctx);
763
+ if (corrupted_wal_found && recovered_seq != nullptr) {
764
+ *recovered_seq = next_sequence;
765
+ }
766
+ if (!s.ok()) {
767
+ // Clear memtables if recovery failed
768
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
769
+ cfd->CreateNewMemtable(*cfd->GetLatestMutableCFOptions(),
770
+ kMaxSequenceNumber);
771
+ }
772
+ }
773
+ }
774
+ }
775
+
776
+ if (read_only) {
777
+ // If we are opening as read-only, we need to update options_file_number_
778
+ // to reflect the most recent OPTIONS file. It does not matter for regular
779
+ // read-write db instance because options_file_number_ will later be
780
+ // updated to versions_->NewFileNumber() in RenameTempFileToOptionsFile.
781
+ std::vector<std::string> filenames;
782
+ if (s.ok()) {
783
+ const std::string normalized_dbname = NormalizePath(dbname_);
784
+ const std::string normalized_wal_dir =
785
+ NormalizePath(immutable_db_options_.GetWalDir());
786
+ if (immutable_db_options_.best_efforts_recovery) {
787
+ filenames = std::move(files_in_dbname);
788
+ } else if (normalized_dbname == normalized_wal_dir) {
789
+ filenames = std::move(files_in_wal_dir);
790
+ } else {
791
+ IOOptions io_opts;
792
+ io_opts.do_not_recurse = true;
793
+ s = immutable_db_options_.fs->GetChildren(
794
+ GetName(), io_opts, &filenames, /*IODebugContext*=*/nullptr);
795
+ }
796
+ }
797
+ if (s.ok()) {
798
+ uint64_t number = 0;
799
+ uint64_t options_file_number = 0;
800
+ FileType type;
801
+ for (const auto& fname : filenames) {
802
+ if (ParseFileName(fname, &number, &type) && type == kOptionsFile) {
803
+ options_file_number = std::max(number, options_file_number);
804
+ }
805
+ }
806
+ versions_->options_file_number_ = options_file_number;
807
+ uint64_t options_file_size = 0;
808
+ if (options_file_number > 0) {
809
+ s = env_->GetFileSize(OptionsFileName(GetName(), options_file_number),
810
+ &options_file_size);
811
+ }
812
+ versions_->options_file_size_ = options_file_size;
813
+ }
814
+ }
815
+ return s;
816
+ }
817
+
818
+ Status DBImpl::PersistentStatsProcessFormatVersion() {
819
+ mutex_.AssertHeld();
820
+ Status s;
821
+ // persist version when stats CF doesn't exist
822
+ bool should_persist_format_version = !persistent_stats_cfd_exists_;
823
+ mutex_.Unlock();
824
+ if (persistent_stats_cfd_exists_) {
825
+ // Check persistent stats format version compatibility. Drop and recreate
826
+ // persistent stats CF if format version is incompatible
827
+ uint64_t format_version_recovered = 0;
828
+ Status s_format = DecodePersistentStatsVersionNumber(
829
+ this, StatsVersionKeyType::kFormatVersion, &format_version_recovered);
830
+ uint64_t compatible_version_recovered = 0;
831
+ Status s_compatible = DecodePersistentStatsVersionNumber(
832
+ this, StatsVersionKeyType::kCompatibleVersion,
833
+ &compatible_version_recovered);
834
+ // abort reading from existing stats CF if any of following is true:
835
+ // 1. failed to read format version or compatible version from disk
836
+ // 2. sst's format version is greater than current format version, meaning
837
+ // this sst is encoded with a newer RocksDB release, and current compatible
838
+ // version is below the sst's compatible version
839
+ if (!s_format.ok() || !s_compatible.ok() ||
840
+ (kStatsCFCurrentFormatVersion < format_version_recovered &&
841
+ kStatsCFCompatibleFormatVersion < compatible_version_recovered)) {
842
+ if (!s_format.ok() || !s_compatible.ok()) {
843
+ ROCKS_LOG_WARN(
844
+ immutable_db_options_.info_log,
845
+ "Recreating persistent stats column family since reading "
846
+ "persistent stats version key failed. Format key: %s, compatible "
847
+ "key: %s",
848
+ s_format.ToString().c_str(), s_compatible.ToString().c_str());
849
+ } else {
850
+ ROCKS_LOG_WARN(
851
+ immutable_db_options_.info_log,
852
+ "Recreating persistent stats column family due to corrupted or "
853
+ "incompatible format version. Recovered format: %" PRIu64
854
+ "; recovered format compatible since: %" PRIu64 "\n",
855
+ format_version_recovered, compatible_version_recovered);
856
+ }
857
+ s = DropColumnFamily(persist_stats_cf_handle_);
858
+ if (s.ok()) {
859
+ s = DestroyColumnFamilyHandle(persist_stats_cf_handle_);
860
+ }
861
+ ColumnFamilyHandle* handle = nullptr;
862
+ if (s.ok()) {
863
+ ColumnFamilyOptions cfo;
864
+ OptimizeForPersistentStats(&cfo);
865
+ s = CreateColumnFamily(cfo, kPersistentStatsColumnFamilyName, &handle);
866
+ }
867
+ if (s.ok()) {
868
+ persist_stats_cf_handle_ = static_cast<ColumnFamilyHandleImpl*>(handle);
869
+ // should also persist version here because old stats CF is discarded
870
+ should_persist_format_version = true;
871
+ }
872
+ }
873
+ }
874
+ if (should_persist_format_version) {
875
+ // Persistent stats CF being created for the first time, need to write
876
+ // format version key
877
+ WriteBatch batch;
878
+ if (s.ok()) {
879
+ s = batch.Put(persist_stats_cf_handle_, kFormatVersionKeyString,
880
+ std::to_string(kStatsCFCurrentFormatVersion));
881
+ }
882
+ if (s.ok()) {
883
+ s = batch.Put(persist_stats_cf_handle_, kCompatibleVersionKeyString,
884
+ std::to_string(kStatsCFCompatibleFormatVersion));
885
+ }
886
+ if (s.ok()) {
887
+ WriteOptions wo;
888
+ wo.low_pri = true;
889
+ wo.no_slowdown = true;
890
+ wo.sync = false;
891
+ s = Write(wo, &batch);
892
+ }
893
+ }
894
+ mutex_.Lock();
895
+ return s;
896
+ }
897
+
898
+ Status DBImpl::InitPersistStatsColumnFamily() {
899
+ mutex_.AssertHeld();
900
+ assert(!persist_stats_cf_handle_);
901
+ ColumnFamilyData* persistent_stats_cfd =
902
+ versions_->GetColumnFamilySet()->GetColumnFamily(
903
+ kPersistentStatsColumnFamilyName);
904
+ persistent_stats_cfd_exists_ = persistent_stats_cfd != nullptr;
905
+
906
+ Status s;
907
+ if (persistent_stats_cfd != nullptr) {
908
+ // We are recovering from a DB which already contains persistent stats CF,
909
+ // the CF is already created in VersionSet::ApplyOneVersionEdit, but
910
+ // column family handle was not. Need to explicitly create handle here.
911
+ persist_stats_cf_handle_ =
912
+ new ColumnFamilyHandleImpl(persistent_stats_cfd, this, &mutex_);
913
+ } else {
914
+ mutex_.Unlock();
915
+ ColumnFamilyHandle* handle = nullptr;
916
+ ColumnFamilyOptions cfo;
917
+ OptimizeForPersistentStats(&cfo);
918
+ s = CreateColumnFamily(cfo, kPersistentStatsColumnFamilyName, &handle);
919
+ persist_stats_cf_handle_ = static_cast<ColumnFamilyHandleImpl*>(handle);
920
+ mutex_.Lock();
921
+ }
922
+ return s;
923
+ }
924
+
925
+ Status DBImpl::LogAndApplyForRecovery(const RecoveryContext& recovery_ctx) {
926
+ mutex_.AssertHeld();
927
+ assert(versions_->descriptor_log_ == nullptr);
928
+ const ReadOptions read_options(Env::IOActivity::kDBOpen);
929
+ Status s = versions_->LogAndApply(
930
+ recovery_ctx.cfds_, recovery_ctx.mutable_cf_opts_, read_options,
931
+ recovery_ctx.edit_lists_, &mutex_, directories_.GetDbDir());
932
+ if (s.ok() && !(recovery_ctx.files_to_delete_.empty())) {
933
+ mutex_.Unlock();
934
+ for (const auto& fname : recovery_ctx.files_to_delete_) {
935
+ s = env_->DeleteFile(fname);
936
+ if (!s.ok()) {
937
+ break;
938
+ }
939
+ }
940
+ mutex_.Lock();
941
+ }
942
+ return s;
943
+ }
944
+
945
+ void DBImpl::InvokeWalFilterIfNeededOnColumnFamilyToWalNumberMap() {
946
+ if (immutable_db_options_.wal_filter == nullptr) {
947
+ return;
948
+ }
949
+ assert(immutable_db_options_.wal_filter != nullptr);
950
+ WalFilter& wal_filter = *(immutable_db_options_.wal_filter);
951
+
952
+ std::map<std::string, uint32_t> cf_name_id_map;
953
+ std::map<uint32_t, uint64_t> cf_lognumber_map;
954
+ assert(versions_);
955
+ assert(versions_->GetColumnFamilySet());
956
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
957
+ assert(cfd);
958
+ cf_name_id_map.insert(std::make_pair(cfd->GetName(), cfd->GetID()));
959
+ cf_lognumber_map.insert(std::make_pair(cfd->GetID(), cfd->GetLogNumber()));
960
+ }
961
+
962
+ wal_filter.ColumnFamilyLogNumberMap(cf_lognumber_map, cf_name_id_map);
963
+ }
964
+
965
+ bool DBImpl::InvokeWalFilterIfNeededOnWalRecord(uint64_t wal_number,
966
+ const std::string& wal_fname,
967
+ log::Reader::Reporter& reporter,
968
+ Status& status,
969
+ bool& stop_replay,
970
+ WriteBatch& batch) {
971
+ if (immutable_db_options_.wal_filter == nullptr) {
972
+ return true;
973
+ }
974
+ assert(immutable_db_options_.wal_filter != nullptr);
975
+ WalFilter& wal_filter = *(immutable_db_options_.wal_filter);
976
+
977
+ WriteBatch new_batch;
978
+ bool batch_changed = false;
979
+
980
+ bool process_current_record = true;
981
+
982
+ WalFilter::WalProcessingOption wal_processing_option =
983
+ wal_filter.LogRecordFound(wal_number, wal_fname, batch, &new_batch,
984
+ &batch_changed);
985
+
986
+ switch (wal_processing_option) {
987
+ case WalFilter::WalProcessingOption::kContinueProcessing:
988
+ // do nothing, proceeed normally
989
+ break;
990
+ case WalFilter::WalProcessingOption::kIgnoreCurrentRecord:
991
+ // skip current record
992
+ process_current_record = false;
993
+ break;
994
+ case WalFilter::WalProcessingOption::kStopReplay:
995
+ // skip current record and stop replay
996
+ process_current_record = false;
997
+ stop_replay = true;
998
+ break;
999
+ case WalFilter::WalProcessingOption::kCorruptedRecord: {
1000
+ status = Status::Corruption("Corruption reported by Wal Filter ",
1001
+ wal_filter.Name());
1002
+ MaybeIgnoreError(&status);
1003
+ if (!status.ok()) {
1004
+ process_current_record = false;
1005
+ reporter.Corruption(batch.GetDataSize(), status);
1006
+ }
1007
+ break;
1008
+ }
1009
+ default: {
1010
+ // logical error which should not happen. If RocksDB throws, we would
1011
+ // just do `throw std::logic_error`.
1012
+ assert(false);
1013
+ status = Status::NotSupported(
1014
+ "Unknown WalProcessingOption returned by Wal Filter ",
1015
+ wal_filter.Name());
1016
+ MaybeIgnoreError(&status);
1017
+ if (!status.ok()) {
1018
+ // Ignore the error with current record processing.
1019
+ stop_replay = true;
1020
+ }
1021
+ break;
1022
+ }
1023
+ }
1024
+
1025
+ if (!process_current_record) {
1026
+ return false;
1027
+ }
1028
+
1029
+ if (batch_changed) {
1030
+ // Make sure that the count in the new batch is
1031
+ // within the orignal count.
1032
+ int new_count = WriteBatchInternal::Count(&new_batch);
1033
+ int original_count = WriteBatchInternal::Count(&batch);
1034
+ if (new_count > original_count) {
1035
+ ROCKS_LOG_FATAL(
1036
+ immutable_db_options_.info_log,
1037
+ "Recovering log #%" PRIu64
1038
+ " mode %d log filter %s returned "
1039
+ "more records (%d) than original (%d) which is not allowed. "
1040
+ "Aborting recovery.",
1041
+ wal_number, static_cast<int>(immutable_db_options_.wal_recovery_mode),
1042
+ wal_filter.Name(), new_count, original_count);
1043
+ status = Status::NotSupported(
1044
+ "More than original # of records "
1045
+ "returned by Wal Filter ",
1046
+ wal_filter.Name());
1047
+ return false;
1048
+ }
1049
+ // Set the same sequence number in the new_batch
1050
+ // as the original batch.
1051
+ WriteBatchInternal::SetSequence(&new_batch,
1052
+ WriteBatchInternal::Sequence(&batch));
1053
+ batch = new_batch;
1054
+ }
1055
+ return true;
1056
+ }
1057
+
1058
+ // REQUIRES: wal_numbers are sorted in ascending order
1059
+ Status DBImpl::RecoverLogFiles(const std::vector<uint64_t>& wal_numbers,
1060
+ SequenceNumber* next_sequence, bool read_only,
1061
+ bool* corrupted_wal_found,
1062
+ RecoveryContext* recovery_ctx) {
1063
+ struct LogReporter : public log::Reader::Reporter {
1064
+ Env* env;
1065
+ Logger* info_log;
1066
+ const char* fname;
1067
+ Status* status; // nullptr if immutable_db_options_.paranoid_checks==false
1068
+ void Corruption(size_t bytes, const Status& s) override {
1069
+ ROCKS_LOG_WARN(info_log, "%s%s: dropping %d bytes; %s",
1070
+ (status == nullptr ? "(ignoring error) " : ""), fname,
1071
+ static_cast<int>(bytes), s.ToString().c_str());
1072
+ if (status != nullptr && status->ok()) {
1073
+ *status = s;
1074
+ }
1075
+ }
1076
+ };
1077
+
1078
+ mutex_.AssertHeld();
1079
+ Status status;
1080
+ std::unordered_map<int, VersionEdit> version_edits;
1081
+ // no need to refcount because iteration is under mutex
1082
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
1083
+ VersionEdit edit;
1084
+ edit.SetColumnFamily(cfd->GetID());
1085
+ version_edits.insert({cfd->GetID(), edit});
1086
+ }
1087
+ int job_id = next_job_id_.fetch_add(1);
1088
+ {
1089
+ auto stream = event_logger_.Log();
1090
+ stream << "job" << job_id << "event"
1091
+ << "recovery_started";
1092
+ stream << "wal_files";
1093
+ stream.StartArray();
1094
+ for (auto wal_number : wal_numbers) {
1095
+ stream << wal_number;
1096
+ }
1097
+ stream.EndArray();
1098
+ }
1099
+
1100
+ // No-op for immutable_db_options_.wal_filter == nullptr.
1101
+ InvokeWalFilterIfNeededOnColumnFamilyToWalNumberMap();
1102
+
1103
+ bool stop_replay_by_wal_filter = false;
1104
+ bool stop_replay_for_corruption = false;
1105
+ bool flushed = false;
1106
+ uint64_t corrupted_wal_number = kMaxSequenceNumber;
1107
+ uint64_t min_wal_number = MinLogNumberToKeep();
1108
+ if (!allow_2pc()) {
1109
+ // In non-2pc mode, we skip WALs that do not back unflushed data.
1110
+ min_wal_number =
1111
+ std::max(min_wal_number, versions_->MinLogNumberWithUnflushedData());
1112
+ }
1113
+ for (auto wal_number : wal_numbers) {
1114
+ if (wal_number < min_wal_number) {
1115
+ ROCKS_LOG_INFO(immutable_db_options_.info_log,
1116
+ "Skipping log #%" PRIu64
1117
+ " since it is older than min log to keep #%" PRIu64,
1118
+ wal_number, min_wal_number);
1119
+ continue;
1120
+ }
1121
+ // The previous incarnation may not have written any MANIFEST
1122
+ // records after allocating this log number. So we manually
1123
+ // update the file number allocation counter in VersionSet.
1124
+ versions_->MarkFileNumberUsed(wal_number);
1125
+ // Open the log file
1126
+ std::string fname =
1127
+ LogFileName(immutable_db_options_.GetWalDir(), wal_number);
1128
+
1129
+ ROCKS_LOG_INFO(immutable_db_options_.info_log,
1130
+ "Recovering log #%" PRIu64 " mode %d", wal_number,
1131
+ static_cast<int>(immutable_db_options_.wal_recovery_mode));
1132
+ auto logFileDropped = [this, &fname]() {
1133
+ uint64_t bytes;
1134
+ if (env_->GetFileSize(fname, &bytes).ok()) {
1135
+ auto info_log = immutable_db_options_.info_log.get();
1136
+ ROCKS_LOG_WARN(info_log, "%s: dropping %d bytes", fname.c_str(),
1137
+ static_cast<int>(bytes));
1138
+ }
1139
+ };
1140
+ if (stop_replay_by_wal_filter) {
1141
+ logFileDropped();
1142
+ continue;
1143
+ }
1144
+
1145
+ std::unique_ptr<SequentialFileReader> file_reader;
1146
+ {
1147
+ std::unique_ptr<FSSequentialFile> file;
1148
+ status = fs_->NewSequentialFile(
1149
+ fname, fs_->OptimizeForLogRead(file_options_), &file, nullptr);
1150
+ if (!status.ok()) {
1151
+ MaybeIgnoreError(&status);
1152
+ if (!status.ok()) {
1153
+ return status;
1154
+ } else {
1155
+ // Fail with one log file, but that's ok.
1156
+ // Try next one.
1157
+ continue;
1158
+ }
1159
+ }
1160
+ file_reader.reset(new SequentialFileReader(
1161
+ std::move(file), fname, immutable_db_options_.log_readahead_size,
1162
+ io_tracer_));
1163
+ }
1164
+
1165
+ // Create the log reader.
1166
+ LogReporter reporter;
1167
+ reporter.env = env_;
1168
+ reporter.info_log = immutable_db_options_.info_log.get();
1169
+ reporter.fname = fname.c_str();
1170
+ if (!immutable_db_options_.paranoid_checks ||
1171
+ immutable_db_options_.wal_recovery_mode ==
1172
+ WALRecoveryMode::kSkipAnyCorruptedRecords) {
1173
+ reporter.status = nullptr;
1174
+ } else {
1175
+ reporter.status = &status;
1176
+ }
1177
+ // We intentially make log::Reader do checksumming even if
1178
+ // paranoid_checks==false so that corruptions cause entire commits
1179
+ // to be skipped instead of propagating bad information (like overly
1180
+ // large sequence numbers).
1181
+ log::Reader reader(immutable_db_options_.info_log, std::move(file_reader),
1182
+ &reporter, true /*checksum*/, wal_number);
1183
+
1184
+ // Determine if we should tolerate incomplete records at the tail end of the
1185
+ // Read all the records and add to a memtable
1186
+ std::string scratch;
1187
+ Slice record;
1188
+
1189
+ TEST_SYNC_POINT_CALLBACK("DBImpl::RecoverLogFiles:BeforeReadWal",
1190
+ /*arg=*/nullptr);
1191
+ uint64_t record_checksum;
1192
+ while (!stop_replay_by_wal_filter &&
1193
+ reader.ReadRecord(&record, &scratch,
1194
+ immutable_db_options_.wal_recovery_mode,
1195
+ &record_checksum) &&
1196
+ status.ok()) {
1197
+ if (record.size() < WriteBatchInternal::kHeader) {
1198
+ reporter.Corruption(record.size(),
1199
+ Status::Corruption("log record too small"));
1200
+ continue;
1201
+ }
1202
+
1203
+ // We create a new batch and initialize with a valid prot_info_ to store
1204
+ // the data checksums
1205
+ WriteBatch batch;
1206
+
1207
+ status = WriteBatchInternal::SetContents(&batch, record);
1208
+ if (!status.ok()) {
1209
+ return status;
1210
+ }
1211
+ TEST_SYNC_POINT_CALLBACK(
1212
+ "DBImpl::RecoverLogFiles:BeforeUpdateProtectionInfo:batch", &batch);
1213
+ TEST_SYNC_POINT_CALLBACK(
1214
+ "DBImpl::RecoverLogFiles:BeforeUpdateProtectionInfo:checksum",
1215
+ &record_checksum);
1216
+ status = WriteBatchInternal::UpdateProtectionInfo(
1217
+ &batch, 8 /* bytes_per_key */, &record_checksum);
1218
+ if (!status.ok()) {
1219
+ return status;
1220
+ }
1221
+
1222
+ SequenceNumber sequence = WriteBatchInternal::Sequence(&batch);
1223
+
1224
+ if (immutable_db_options_.wal_recovery_mode ==
1225
+ WALRecoveryMode::kPointInTimeRecovery) {
1226
+ // In point-in-time recovery mode, if sequence id of log files are
1227
+ // consecutive, we continue recovery despite corruption. This could
1228
+ // happen when we open and write to a corrupted DB, where sequence id
1229
+ // will start from the last sequence id we recovered.
1230
+ if (sequence == *next_sequence) {
1231
+ stop_replay_for_corruption = false;
1232
+ }
1233
+ if (stop_replay_for_corruption) {
1234
+ logFileDropped();
1235
+ break;
1236
+ }
1237
+ }
1238
+
1239
+ // For the default case of wal_filter == nullptr, always performs no-op
1240
+ // and returns true.
1241
+ if (!InvokeWalFilterIfNeededOnWalRecord(wal_number, fname, reporter,
1242
+ status, stop_replay_by_wal_filter,
1243
+ batch)) {
1244
+ continue;
1245
+ }
1246
+
1247
+ // If column family was not found, it might mean that the WAL write
1248
+ // batch references to the column family that was dropped after the
1249
+ // insert. We don't want to fail the whole write batch in that case --
1250
+ // we just ignore the update.
1251
+ // That's why we set ignore missing column families to true
1252
+ bool has_valid_writes = false;
1253
+ status = WriteBatchInternal::InsertInto(
1254
+ &batch, column_family_memtables_.get(), &flush_scheduler_,
1255
+ &trim_history_scheduler_, true, wal_number, this,
1256
+ false /* concurrent_memtable_writes */, next_sequence,
1257
+ &has_valid_writes, seq_per_batch_, batch_per_txn_);
1258
+ MaybeIgnoreError(&status);
1259
+ if (!status.ok()) {
1260
+ // We are treating this as a failure while reading since we read valid
1261
+ // blocks that do not form coherent data
1262
+ reporter.Corruption(record.size(), status);
1263
+ continue;
1264
+ }
1265
+
1266
+ if (has_valid_writes && !read_only) {
1267
+ // we can do this because this is called before client has access to the
1268
+ // DB and there is only a single thread operating on DB
1269
+ ColumnFamilyData* cfd;
1270
+
1271
+ while ((cfd = flush_scheduler_.TakeNextColumnFamily()) != nullptr) {
1272
+ cfd->UnrefAndTryDelete();
1273
+ // If this asserts, it means that InsertInto failed in
1274
+ // filtering updates to already-flushed column families
1275
+ assert(cfd->GetLogNumber() <= wal_number);
1276
+ auto iter = version_edits.find(cfd->GetID());
1277
+ assert(iter != version_edits.end());
1278
+ VersionEdit* edit = &iter->second;
1279
+ status = WriteLevel0TableForRecovery(job_id, cfd, cfd->mem(), edit);
1280
+ if (!status.ok()) {
1281
+ // Reflect errors immediately so that conditions like full
1282
+ // file-systems cause the DB::Open() to fail.
1283
+ return status;
1284
+ }
1285
+ flushed = true;
1286
+
1287
+ cfd->CreateNewMemtable(*cfd->GetLatestMutableCFOptions(),
1288
+ *next_sequence);
1289
+ }
1290
+ }
1291
+ }
1292
+
1293
+ if (!status.ok()) {
1294
+ if (status.IsNotSupported()) {
1295
+ // We should not treat NotSupported as corruption. It is rather a clear
1296
+ // sign that we are processing a WAL that is produced by an incompatible
1297
+ // version of the code.
1298
+ return status;
1299
+ }
1300
+ if (immutable_db_options_.wal_recovery_mode ==
1301
+ WALRecoveryMode::kSkipAnyCorruptedRecords) {
1302
+ // We should ignore all errors unconditionally
1303
+ status = Status::OK();
1304
+ } else if (immutable_db_options_.wal_recovery_mode ==
1305
+ WALRecoveryMode::kPointInTimeRecovery) {
1306
+ if (status.IsIOError()) {
1307
+ ROCKS_LOG_ERROR(immutable_db_options_.info_log,
1308
+ "IOError during point-in-time reading log #%" PRIu64
1309
+ " seq #%" PRIu64
1310
+ ". %s. This likely mean loss of synced WAL, "
1311
+ "thus recovery fails.",
1312
+ wal_number, *next_sequence,
1313
+ status.ToString().c_str());
1314
+ return status;
1315
+ }
1316
+ // We should ignore the error but not continue replaying
1317
+ status = Status::OK();
1318
+ stop_replay_for_corruption = true;
1319
+ corrupted_wal_number = wal_number;
1320
+ if (corrupted_wal_found != nullptr) {
1321
+ *corrupted_wal_found = true;
1322
+ }
1323
+ ROCKS_LOG_INFO(immutable_db_options_.info_log,
1324
+ "Point in time recovered to log #%" PRIu64
1325
+ " seq #%" PRIu64,
1326
+ wal_number, *next_sequence);
1327
+ } else {
1328
+ assert(immutable_db_options_.wal_recovery_mode ==
1329
+ WALRecoveryMode::kTolerateCorruptedTailRecords ||
1330
+ immutable_db_options_.wal_recovery_mode ==
1331
+ WALRecoveryMode::kAbsoluteConsistency);
1332
+ return status;
1333
+ }
1334
+ }
1335
+
1336
+ flush_scheduler_.Clear();
1337
+ trim_history_scheduler_.Clear();
1338
+ auto last_sequence = *next_sequence - 1;
1339
+ if ((*next_sequence != kMaxSequenceNumber) &&
1340
+ (versions_->LastSequence() <= last_sequence)) {
1341
+ versions_->SetLastAllocatedSequence(last_sequence);
1342
+ versions_->SetLastPublishedSequence(last_sequence);
1343
+ versions_->SetLastSequence(last_sequence);
1344
+ }
1345
+ }
1346
+ // Compare the corrupted log number to all columnfamily's current log number.
1347
+ // Abort Open() if any column family's log number is greater than
1348
+ // the corrupted log number, which means CF contains data beyond the point of
1349
+ // corruption. This could during PIT recovery when the WAL is corrupted and
1350
+ // some (but not all) CFs are flushed
1351
+ // Exclude the PIT case where no log is dropped after the corruption point.
1352
+ // This is to cover the case for empty wals after corrupted log, in which we
1353
+ // don't reset stop_replay_for_corruption.
1354
+ if (stop_replay_for_corruption == true &&
1355
+ (immutable_db_options_.wal_recovery_mode ==
1356
+ WALRecoveryMode::kPointInTimeRecovery ||
1357
+ immutable_db_options_.wal_recovery_mode ==
1358
+ WALRecoveryMode::kTolerateCorruptedTailRecords)) {
1359
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
1360
+ // One special case cause cfd->GetLogNumber() > corrupted_wal_number but
1361
+ // the CF is still consistent: If a new column family is created during
1362
+ // the flush and the WAL sync fails at the same time, the new CF points to
1363
+ // the new WAL but the old WAL is curropted. Since the new CF is empty, it
1364
+ // is still consistent. We add the check of CF sst file size to avoid the
1365
+ // false positive alert.
1366
+
1367
+ // Note that, the check of (cfd->GetLiveSstFilesSize() > 0) may leads to
1368
+ // the ignorance of a very rare inconsistency case caused in data
1369
+ // canclation. One CF is empty due to KV deletion. But those operations
1370
+ // are in the WAL. If the WAL is corrupted, the status of this CF might
1371
+ // not be consistent with others. However, the consistency check will be
1372
+ // bypassed due to empty CF.
1373
+ // TODO: a better and complete implementation is needed to ensure strict
1374
+ // consistency check in WAL recovery including hanlding the tailing
1375
+ // issues.
1376
+ if (cfd->GetLogNumber() > corrupted_wal_number &&
1377
+ cfd->GetLiveSstFilesSize() > 0) {
1378
+ ROCKS_LOG_ERROR(immutable_db_options_.info_log,
1379
+ "Column family inconsistency: SST file contains data"
1380
+ " beyond the point of corruption.");
1381
+ return Status::Corruption("SST file is ahead of WALs in CF " +
1382
+ cfd->GetName());
1383
+ }
1384
+ }
1385
+ }
1386
+
1387
+ // True if there's any data in the WALs; if not, we can skip re-processing
1388
+ // them later
1389
+ bool data_seen = false;
1390
+ if (!read_only) {
1391
+ // no need to refcount since client still doesn't have access
1392
+ // to the DB and can not drop column families while we iterate
1393
+ const WalNumber max_wal_number = wal_numbers.back();
1394
+ for (auto cfd : *versions_->GetColumnFamilySet()) {
1395
+ auto iter = version_edits.find(cfd->GetID());
1396
+ assert(iter != version_edits.end());
1397
+ VersionEdit* edit = &iter->second;
1398
+
1399
+ if (cfd->GetLogNumber() > max_wal_number) {
1400
+ // Column family cfd has already flushed the data
1401
+ // from all wals. Memtable has to be empty because
1402
+ // we filter the updates based on wal_number
1403
+ // (in WriteBatch::InsertInto)
1404
+ assert(cfd->mem()->GetFirstSequenceNumber() == 0);
1405
+ assert(edit->NumEntries() == 0);
1406
+ continue;
1407
+ }
1408
+
1409
+ TEST_SYNC_POINT_CALLBACK(
1410
+ "DBImpl::RecoverLogFiles:BeforeFlushFinalMemtable", /*arg=*/nullptr);
1411
+
1412
+ // flush the final memtable (if non-empty)
1413
+ if (cfd->mem()->GetFirstSequenceNumber() != 0) {
1414
+ // If flush happened in the middle of recovery (e.g. due to memtable
1415
+ // being full), we flush at the end. Otherwise we'll need to record
1416
+ // where we were on last flush, which make the logic complicated.
1417
+ if (flushed || !immutable_db_options_.avoid_flush_during_recovery) {
1418
+ status = WriteLevel0TableForRecovery(job_id, cfd, cfd->mem(), edit);
1419
+ if (!status.ok()) {
1420
+ // Recovery failed
1421
+ break;
1422
+ }
1423
+ flushed = true;
1424
+
1425
+ cfd->CreateNewMemtable(*cfd->GetLatestMutableCFOptions(),
1426
+ versions_->LastSequence());
1427
+ }
1428
+ data_seen = true;
1429
+ }
1430
+
1431
+ // Update the log number info in the version edit corresponding to this
1432
+ // column family. Note that the version edits will be written to MANIFEST
1433
+ // together later.
1434
+ // writing wal_number in the manifest means that any log file
1435
+ // with number strongly less than (wal_number + 1) is already
1436
+ // recovered and should be ignored on next reincarnation.
1437
+ // Since we already recovered max_wal_number, we want all wals
1438
+ // with numbers `<= max_wal_number` (includes this one) to be ignored
1439
+ if (flushed || cfd->mem()->GetFirstSequenceNumber() == 0) {
1440
+ edit->SetLogNumber(max_wal_number + 1);
1441
+ }
1442
+ }
1443
+ if (status.ok()) {
1444
+ // we must mark the next log number as used, even though it's
1445
+ // not actually used. that is because VersionSet assumes
1446
+ // VersionSet::next_file_number_ always to be strictly greater than any
1447
+ // log number
1448
+ versions_->MarkFileNumberUsed(max_wal_number + 1);
1449
+ assert(recovery_ctx != nullptr);
1450
+
1451
+ for (auto* cfd : *versions_->GetColumnFamilySet()) {
1452
+ auto iter = version_edits.find(cfd->GetID());
1453
+ assert(iter != version_edits.end());
1454
+ recovery_ctx->UpdateVersionEdits(cfd, iter->second);
1455
+ }
1456
+
1457
+ if (flushed || !data_seen) {
1458
+ VersionEdit wal_deletion;
1459
+ if (immutable_db_options_.track_and_verify_wals_in_manifest) {
1460
+ wal_deletion.DeleteWalsBefore(max_wal_number + 1);
1461
+ }
1462
+ if (!allow_2pc()) {
1463
+ // In non-2pc mode, flushing the memtables of the column families
1464
+ // means we can advance min_log_number_to_keep.
1465
+ wal_deletion.SetMinLogNumberToKeep(max_wal_number + 1);
1466
+ }
1467
+ assert(versions_->GetColumnFamilySet() != nullptr);
1468
+ recovery_ctx->UpdateVersionEdits(
1469
+ versions_->GetColumnFamilySet()->GetDefault(), wal_deletion);
1470
+ }
1471
+ }
1472
+ }
1473
+
1474
+ if (status.ok()) {
1475
+ if (data_seen && !flushed) {
1476
+ status = RestoreAliveLogFiles(wal_numbers);
1477
+ } else if (!wal_numbers.empty()) { // If there's no data in the WAL, or we
1478
+ // flushed all the data, still
1479
+ // truncate the log file. If the process goes into a crash loop before
1480
+ // the file is deleted, the preallocated space will never get freed.
1481
+ const bool truncate = !read_only;
1482
+ GetLogSizeAndMaybeTruncate(wal_numbers.back(), truncate, nullptr)
1483
+ .PermitUncheckedError();
1484
+ }
1485
+ }
1486
+
1487
+ event_logger_.Log() << "job" << job_id << "event"
1488
+ << "recovery_finished";
1489
+
1490
+ return status;
1491
+ }
1492
+
1493
+ Status DBImpl::GetLogSizeAndMaybeTruncate(uint64_t wal_number, bool truncate,
1494
+ LogFileNumberSize* log_ptr) {
1495
+ LogFileNumberSize log(wal_number);
1496
+ std::string fname =
1497
+ LogFileName(immutable_db_options_.GetWalDir(), wal_number);
1498
+ Status s;
1499
+ // This gets the appear size of the wals, not including preallocated space.
1500
+ s = env_->GetFileSize(fname, &log.size);
1501
+ TEST_SYNC_POINT_CALLBACK("DBImpl::GetLogSizeAndMaybeTruncate:0", /*arg=*/&s);
1502
+ if (s.ok() && truncate) {
1503
+ std::unique_ptr<FSWritableFile> last_log;
1504
+ Status truncate_status = fs_->ReopenWritableFile(
1505
+ fname,
1506
+ fs_->OptimizeForLogWrite(
1507
+ file_options_,
1508
+ BuildDBOptions(immutable_db_options_, mutable_db_options_)),
1509
+ &last_log, nullptr);
1510
+ if (truncate_status.ok()) {
1511
+ truncate_status = last_log->Truncate(log.size, IOOptions(), nullptr);
1512
+ }
1513
+ if (truncate_status.ok()) {
1514
+ truncate_status = last_log->Close(IOOptions(), nullptr);
1515
+ }
1516
+ // Not a critical error if fail to truncate.
1517
+ if (!truncate_status.ok() && !truncate_status.IsNotSupported()) {
1518
+ ROCKS_LOG_WARN(immutable_db_options_.info_log,
1519
+ "Failed to truncate log #%" PRIu64 ": %s", wal_number,
1520
+ truncate_status.ToString().c_str());
1521
+ }
1522
+ }
1523
+ if (log_ptr) {
1524
+ *log_ptr = log;
1525
+ }
1526
+ return s;
1527
+ }
1528
+
1529
+ Status DBImpl::RestoreAliveLogFiles(const std::vector<uint64_t>& wal_numbers) {
1530
+ if (wal_numbers.empty()) {
1531
+ return Status::OK();
1532
+ }
1533
+ Status s;
1534
+ mutex_.AssertHeld();
1535
+ assert(immutable_db_options_.avoid_flush_during_recovery);
1536
+ // Mark these as alive so they'll be considered for deletion later by
1537
+ // FindObsoleteFiles()
1538
+ total_log_size_ = 0;
1539
+ log_empty_ = false;
1540
+ uint64_t min_wal_with_unflushed_data =
1541
+ versions_->MinLogNumberWithUnflushedData();
1542
+ for (auto wal_number : wal_numbers) {
1543
+ if (!allow_2pc() && wal_number < min_wal_with_unflushed_data) {
1544
+ // In non-2pc mode, the WAL files not backing unflushed data are not
1545
+ // alive, thus should not be added to the alive_log_files_.
1546
+ continue;
1547
+ }
1548
+ // We preallocate space for wals, but then after a crash and restart, those
1549
+ // preallocated space are not needed anymore. It is likely only the last
1550
+ // log has such preallocated space, so we only truncate for the last log.
1551
+ LogFileNumberSize log;
1552
+ s = GetLogSizeAndMaybeTruncate(
1553
+ wal_number, /*truncate=*/(wal_number == wal_numbers.back()), &log);
1554
+ if (!s.ok()) {
1555
+ break;
1556
+ }
1557
+ total_log_size_ += log.size;
1558
+ alive_log_files_.push_back(log);
1559
+ }
1560
+ return s;
1561
+ }
1562
+
1563
+ Status DBImpl::WriteLevel0TableForRecovery(int job_id, ColumnFamilyData* cfd,
1564
+ MemTable* mem, VersionEdit* edit) {
1565
+ mutex_.AssertHeld();
1566
+ assert(cfd);
1567
+ assert(cfd->imm());
1568
+ // The immutable memtable list must be empty.
1569
+ assert(std::numeric_limits<uint64_t>::max() ==
1570
+ cfd->imm()->GetEarliestMemTableID());
1571
+
1572
+ const uint64_t start_micros = immutable_db_options_.clock->NowMicros();
1573
+
1574
+ FileMetaData meta;
1575
+ std::vector<BlobFileAddition> blob_file_additions;
1576
+
1577
+ std::unique_ptr<std::list<uint64_t>::iterator> pending_outputs_inserted_elem(
1578
+ new std::list<uint64_t>::iterator(
1579
+ CaptureCurrentFileNumberInPendingOutputs()));
1580
+ meta.fd = FileDescriptor(versions_->NewFileNumber(), 0, 0);
1581
+ ReadOptions ro;
1582
+ ro.total_order_seek = true;
1583
+ ro.io_activity = Env::IOActivity::kDBOpen;
1584
+ Arena arena;
1585
+ Status s;
1586
+ TableProperties table_properties;
1587
+ {
1588
+ ScopedArenaIterator iter(mem->NewIterator(ro, &arena));
1589
+ ROCKS_LOG_DEBUG(immutable_db_options_.info_log,
1590
+ "[%s] [WriteLevel0TableForRecovery]"
1591
+ " Level-0 table #%" PRIu64 ": started",
1592
+ cfd->GetName().c_str(), meta.fd.GetNumber());
1593
+
1594
+ // Get the latest mutable cf options while the mutex is still locked
1595
+ const MutableCFOptions mutable_cf_options =
1596
+ *cfd->GetLatestMutableCFOptions();
1597
+ bool paranoid_file_checks =
1598
+ cfd->GetLatestMutableCFOptions()->paranoid_file_checks;
1599
+
1600
+ int64_t _current_time = 0;
1601
+ immutable_db_options_.clock->GetCurrentTime(&_current_time)
1602
+ .PermitUncheckedError(); // ignore error
1603
+ const uint64_t current_time = static_cast<uint64_t>(_current_time);
1604
+ meta.oldest_ancester_time = current_time;
1605
+ meta.epoch_number = cfd->NewEpochNumber();
1606
+ {
1607
+ auto write_hint = cfd->CalculateSSTWriteHint(0);
1608
+ mutex_.Unlock();
1609
+
1610
+ SequenceNumber earliest_write_conflict_snapshot;
1611
+ std::vector<SequenceNumber> snapshot_seqs =
1612
+ snapshots_.GetAll(&earliest_write_conflict_snapshot);
1613
+ auto snapshot_checker = snapshot_checker_.get();
1614
+ if (use_custom_gc_ && snapshot_checker == nullptr) {
1615
+ snapshot_checker = DisableGCSnapshotChecker::Instance();
1616
+ }
1617
+ std::vector<std::unique_ptr<FragmentedRangeTombstoneIterator>>
1618
+ range_del_iters;
1619
+ auto range_del_iter =
1620
+ // This is called during recovery, where a live memtable is flushed
1621
+ // directly. In this case, no fragmented tombstone list is cached in
1622
+ // this memtable yet.
1623
+ mem->NewRangeTombstoneIterator(ro, kMaxSequenceNumber,
1624
+ false /* immutable_memtable */);
1625
+ if (range_del_iter != nullptr) {
1626
+ range_del_iters.emplace_back(range_del_iter);
1627
+ }
1628
+
1629
+ IOStatus io_s;
1630
+ TableBuilderOptions tboptions(
1631
+ *cfd->ioptions(), mutable_cf_options, cfd->internal_comparator(),
1632
+ cfd->int_tbl_prop_collector_factories(),
1633
+ GetCompressionFlush(*cfd->ioptions(), mutable_cf_options),
1634
+ mutable_cf_options.compression_opts, cfd->GetID(), cfd->GetName(),
1635
+ 0 /* level */, false /* is_bottommost */,
1636
+ TableFileCreationReason::kRecovery, 0 /* oldest_key_time */,
1637
+ 0 /* file_creation_time */, db_id_, db_session_id_,
1638
+ 0 /* target_file_size */, meta.fd.GetNumber());
1639
+ SeqnoToTimeMapping empty_seqno_time_mapping;
1640
+ Version* version = cfd->current();
1641
+ version->Ref();
1642
+ const ReadOptions read_option(Env::IOActivity::kDBOpen);
1643
+ s = BuildTable(
1644
+ dbname_, versions_.get(), immutable_db_options_, tboptions,
1645
+ file_options_for_compaction_, read_option, cfd->table_cache(),
1646
+ iter.get(), std::move(range_del_iters), &meta, &blob_file_additions,
1647
+ snapshot_seqs, earliest_write_conflict_snapshot, kMaxSequenceNumber,
1648
+ snapshot_checker, paranoid_file_checks, cfd->internal_stats(), &io_s,
1649
+ io_tracer_, BlobFileCreationReason::kRecovery,
1650
+ empty_seqno_time_mapping, &event_logger_, job_id, Env::IO_HIGH,
1651
+ nullptr /* table_properties */, write_hint,
1652
+ nullptr /*full_history_ts_low*/, &blob_callback_, version);
1653
+ version->Unref();
1654
+ LogFlush(immutable_db_options_.info_log);
1655
+ ROCKS_LOG_DEBUG(immutable_db_options_.info_log,
1656
+ "[%s] [WriteLevel0TableForRecovery]"
1657
+ " Level-0 table #%" PRIu64 ": %" PRIu64 " bytes %s",
1658
+ cfd->GetName().c_str(), meta.fd.GetNumber(),
1659
+ meta.fd.GetFileSize(), s.ToString().c_str());
1660
+ mutex_.Lock();
1661
+
1662
+ // TODO(AR) is this ok?
1663
+ if (!io_s.ok() && s.ok()) {
1664
+ s = io_s;
1665
+ }
1666
+ }
1667
+ }
1668
+ ReleaseFileNumberFromPendingOutputs(pending_outputs_inserted_elem);
1669
+
1670
+ // Note that if file_size is zero, the file has been deleted and
1671
+ // should not be added to the manifest.
1672
+ const bool has_output = meta.fd.GetFileSize() > 0;
1673
+
1674
+ constexpr int level = 0;
1675
+
1676
+ if (s.ok() && has_output) {
1677
+ edit->AddFile(
1678
+ level, meta.fd.GetNumber(), meta.fd.GetPathId(), meta.fd.GetFileSize(),
1679
+ meta.smallest, meta.largest, meta.fd.smallest_seqno,
1680
+ meta.fd.largest_seqno, meta.marked_for_compaction, meta.temperature,
1681
+ meta.oldest_blob_file_number, meta.oldest_ancester_time,
1682
+ meta.file_creation_time, meta.epoch_number, meta.file_checksum,
1683
+ meta.file_checksum_func_name, meta.unique_id,
1684
+ meta.compensated_range_deletion_size, meta.tail_size);
1685
+
1686
+ for (const auto& blob : blob_file_additions) {
1687
+ edit->AddBlobFile(blob);
1688
+ }
1689
+ }
1690
+
1691
+ InternalStats::CompactionStats stats(CompactionReason::kFlush, 1);
1692
+ stats.micros = immutable_db_options_.clock->NowMicros() - start_micros;
1693
+
1694
+ if (has_output) {
1695
+ stats.bytes_written = meta.fd.GetFileSize();
1696
+ stats.num_output_files = 1;
1697
+ }
1698
+
1699
+ const auto& blobs = edit->GetBlobFileAdditions();
1700
+ for (const auto& blob : blobs) {
1701
+ stats.bytes_written_blob += blob.GetTotalBlobBytes();
1702
+ }
1703
+
1704
+ stats.num_output_files_blob = static_cast<int>(blobs.size());
1705
+
1706
+ cfd->internal_stats()->AddCompactionStats(level, Env::Priority::USER, stats);
1707
+ cfd->internal_stats()->AddCFStats(
1708
+ InternalStats::BYTES_FLUSHED,
1709
+ stats.bytes_written + stats.bytes_written_blob);
1710
+ RecordTick(stats_, COMPACT_WRITE_BYTES, meta.fd.GetFileSize());
1711
+ return s;
1712
+ }
1713
+
1714
+ Status DB::Open(const Options& options, const std::string& dbname, DB** dbptr) {
1715
+ DBOptions db_options(options);
1716
+ ColumnFamilyOptions cf_options(options);
1717
+ std::vector<ColumnFamilyDescriptor> column_families;
1718
+ column_families.push_back(
1719
+ ColumnFamilyDescriptor(kDefaultColumnFamilyName, cf_options));
1720
+ if (db_options.persist_stats_to_disk) {
1721
+ column_families.push_back(
1722
+ ColumnFamilyDescriptor(kPersistentStatsColumnFamilyName, cf_options));
1723
+ }
1724
+ std::vector<ColumnFamilyHandle*> handles;
1725
+ Status s = DB::Open(db_options, dbname, column_families, &handles, dbptr);
1726
+ if (s.ok()) {
1727
+ if (db_options.persist_stats_to_disk) {
1728
+ assert(handles.size() == 2);
1729
+ } else {
1730
+ assert(handles.size() == 1);
1731
+ }
1732
+ // i can delete the handle since DBImpl is always holding a reference to
1733
+ // default column family
1734
+ if (db_options.persist_stats_to_disk && handles[1] != nullptr) {
1735
+ delete handles[1];
1736
+ }
1737
+ delete handles[0];
1738
+ }
1739
+ return s;
1740
+ }
1741
+
1742
+ Status DB::Open(const DBOptions& db_options, const std::string& dbname,
1743
+ const std::vector<ColumnFamilyDescriptor>& column_families,
1744
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
1745
+ const bool kSeqPerBatch = true;
1746
+ const bool kBatchPerTxn = true;
1747
+ ThreadStatusUtil::SetEnableTracking(db_options.enable_thread_tracking);
1748
+ ThreadStatusUtil::SetThreadOperation(ThreadStatus::OperationType::OP_DBOPEN);
1749
+ Status s = DBImpl::Open(db_options, dbname, column_families, handles, dbptr,
1750
+ !kSeqPerBatch, kBatchPerTxn);
1751
+ ThreadStatusUtil::ResetThreadStatus();
1752
+ return s;
1753
+ }
1754
+
1755
+ // TODO: Implement the trimming in flush code path.
1756
+ // TODO: Perform trimming before inserting into memtable during recovery.
1757
+ // TODO: Pick files with max_timestamp > trim_ts by each file's timestamp meta
1758
+ // info, and handle only these files to reduce io.
1759
+ Status DB::OpenAndTrimHistory(
1760
+ const DBOptions& db_options, const std::string& dbname,
1761
+ const std::vector<ColumnFamilyDescriptor>& column_families,
1762
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
1763
+ std::string trim_ts) {
1764
+ assert(dbptr != nullptr);
1765
+ assert(handles != nullptr);
1766
+ auto validate_options = [&db_options] {
1767
+ if (db_options.avoid_flush_during_recovery) {
1768
+ return Status::InvalidArgument(
1769
+ "avoid_flush_during_recovery incompatible with "
1770
+ "OpenAndTrimHistory");
1771
+ }
1772
+ return Status::OK();
1773
+ };
1774
+ auto s = validate_options();
1775
+ if (!s.ok()) {
1776
+ return s;
1777
+ }
1778
+
1779
+ DB* db = nullptr;
1780
+ s = DB::Open(db_options, dbname, column_families, handles, &db);
1781
+ if (!s.ok()) {
1782
+ return s;
1783
+ }
1784
+ assert(db);
1785
+ CompactRangeOptions options;
1786
+ options.bottommost_level_compaction =
1787
+ BottommostLevelCompaction::kForceOptimized;
1788
+ auto db_impl = static_cast_with_check<DBImpl>(db);
1789
+ for (auto handle : *handles) {
1790
+ assert(handle != nullptr);
1791
+ auto cfh = static_cast_with_check<ColumnFamilyHandleImpl>(handle);
1792
+ auto cfd = cfh->cfd();
1793
+ assert(cfd != nullptr);
1794
+ // Only compact column families with timestamp enabled
1795
+ if (cfd->user_comparator() != nullptr &&
1796
+ cfd->user_comparator()->timestamp_size() > 0) {
1797
+ s = db_impl->CompactRangeInternal(options, handle, nullptr, nullptr,
1798
+ trim_ts);
1799
+ if (!s.ok()) {
1800
+ break;
1801
+ }
1802
+ }
1803
+ }
1804
+ auto clean_op = [&handles, &db] {
1805
+ for (auto handle : *handles) {
1806
+ auto temp_s = db->DestroyColumnFamilyHandle(handle);
1807
+ assert(temp_s.ok());
1808
+ }
1809
+ handles->clear();
1810
+ delete db;
1811
+ };
1812
+ if (!s.ok()) {
1813
+ clean_op();
1814
+ return s;
1815
+ }
1816
+
1817
+ *dbptr = db;
1818
+ return s;
1819
+ }
1820
+
1821
+ IOStatus DBImpl::CreateWAL(uint64_t log_file_num, uint64_t recycle_log_number,
1822
+ size_t preallocate_block_size,
1823
+ log::Writer** new_log) {
1824
+ IOStatus io_s;
1825
+ std::unique_ptr<FSWritableFile> lfile;
1826
+
1827
+ DBOptions db_options =
1828
+ BuildDBOptions(immutable_db_options_, mutable_db_options_);
1829
+ FileOptions opt_file_options =
1830
+ fs_->OptimizeForLogWrite(file_options_, db_options);
1831
+ std::string wal_dir = immutable_db_options_.GetWalDir();
1832
+ std::string log_fname = LogFileName(wal_dir, log_file_num);
1833
+
1834
+ if (recycle_log_number) {
1835
+ ROCKS_LOG_INFO(immutable_db_options_.info_log,
1836
+ "reusing log %" PRIu64 " from recycle list\n",
1837
+ recycle_log_number);
1838
+ std::string old_log_fname = LogFileName(wal_dir, recycle_log_number);
1839
+ TEST_SYNC_POINT("DBImpl::CreateWAL:BeforeReuseWritableFile1");
1840
+ TEST_SYNC_POINT("DBImpl::CreateWAL:BeforeReuseWritableFile2");
1841
+ io_s = fs_->ReuseWritableFile(log_fname, old_log_fname, opt_file_options,
1842
+ &lfile, /*dbg=*/nullptr);
1843
+ } else {
1844
+ io_s = NewWritableFile(fs_.get(), log_fname, &lfile, opt_file_options);
1845
+ }
1846
+
1847
+ if (io_s.ok()) {
1848
+ lfile->SetWriteLifeTimeHint(CalculateWALWriteHint());
1849
+ lfile->SetPreallocationBlockSize(preallocate_block_size);
1850
+
1851
+ const auto& listeners = immutable_db_options_.listeners;
1852
+ FileTypeSet tmp_set = immutable_db_options_.checksum_handoff_file_types;
1853
+ std::unique_ptr<WritableFileWriter> file_writer(new WritableFileWriter(
1854
+ std::move(lfile), log_fname, opt_file_options,
1855
+ immutable_db_options_.clock, io_tracer_, nullptr /* stats */, listeners,
1856
+ nullptr, tmp_set.Contains(FileType::kWalFile),
1857
+ tmp_set.Contains(FileType::kWalFile)));
1858
+ *new_log = new log::Writer(std::move(file_writer), log_file_num,
1859
+ immutable_db_options_.recycle_log_file_num > 0,
1860
+ immutable_db_options_.manual_wal_flush,
1861
+ immutable_db_options_.wal_compression);
1862
+ io_s = (*new_log)->AddCompressionTypeRecord();
1863
+ }
1864
+ return io_s;
1865
+ }
1866
+
1867
+ Status DBImpl::Open(const DBOptions& db_options, const std::string& dbname,
1868
+ const std::vector<ColumnFamilyDescriptor>& column_families,
1869
+ std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
1870
+ const bool seq_per_batch, const bool batch_per_txn) {
1871
+ Status s = ValidateOptionsByTable(db_options, column_families);
1872
+ if (!s.ok()) {
1873
+ return s;
1874
+ }
1875
+
1876
+ s = ValidateOptions(db_options, column_families);
1877
+ if (!s.ok()) {
1878
+ return s;
1879
+ }
1880
+
1881
+ *dbptr = nullptr;
1882
+ assert(handles);
1883
+ handles->clear();
1884
+
1885
+ size_t max_write_buffer_size = 0;
1886
+ for (auto cf : column_families) {
1887
+ max_write_buffer_size =
1888
+ std::max(max_write_buffer_size, cf.options.write_buffer_size);
1889
+ }
1890
+
1891
+ DBImpl* impl = new DBImpl(db_options, dbname, seq_per_batch, batch_per_txn);
1892
+ if (!impl->immutable_db_options_.info_log) {
1893
+ s = impl->init_logger_creation_s_;
1894
+ delete impl;
1895
+ return s;
1896
+ } else {
1897
+ assert(impl->init_logger_creation_s_.ok());
1898
+ }
1899
+ s = impl->env_->CreateDirIfMissing(impl->immutable_db_options_.GetWalDir());
1900
+ if (s.ok()) {
1901
+ std::vector<std::string> paths;
1902
+ for (auto& db_path : impl->immutable_db_options_.db_paths) {
1903
+ paths.emplace_back(db_path.path);
1904
+ }
1905
+ for (auto& cf : column_families) {
1906
+ for (auto& cf_path : cf.options.cf_paths) {
1907
+ paths.emplace_back(cf_path.path);
1908
+ }
1909
+ }
1910
+ for (auto& path : paths) {
1911
+ s = impl->env_->CreateDirIfMissing(path);
1912
+ if (!s.ok()) {
1913
+ break;
1914
+ }
1915
+ }
1916
+
1917
+ // For recovery from NoSpace() error, we can only handle
1918
+ // the case where the database is stored in a single path
1919
+ if (paths.size() <= 1) {
1920
+ impl->error_handler_.EnableAutoRecovery();
1921
+ }
1922
+ }
1923
+ if (s.ok()) {
1924
+ s = impl->CreateArchivalDirectory();
1925
+ }
1926
+ if (!s.ok()) {
1927
+ delete impl;
1928
+ return s;
1929
+ }
1930
+
1931
+ impl->wal_in_db_path_ = impl->immutable_db_options_.IsWalDirSameAsDBPath();
1932
+ RecoveryContext recovery_ctx;
1933
+ impl->mutex_.Lock();
1934
+
1935
+ // Handles create_if_missing, error_if_exists
1936
+ uint64_t recovered_seq(kMaxSequenceNumber);
1937
+ s = impl->Recover(column_families, false /* read_only */,
1938
+ false /* error_if_wal_file_exists */,
1939
+ false /* error_if_data_exists_in_wals */, &recovered_seq,
1940
+ &recovery_ctx);
1941
+ if (s.ok()) {
1942
+ uint64_t new_log_number = impl->versions_->NewFileNumber();
1943
+ log::Writer* new_log = nullptr;
1944
+ const size_t preallocate_block_size =
1945
+ impl->GetWalPreallocateBlockSize(max_write_buffer_size);
1946
+ s = impl->CreateWAL(new_log_number, 0 /*recycle_log_number*/,
1947
+ preallocate_block_size, &new_log);
1948
+ if (s.ok()) {
1949
+ InstrumentedMutexLock wl(&impl->log_write_mutex_);
1950
+ impl->logfile_number_ = new_log_number;
1951
+ assert(new_log != nullptr);
1952
+ assert(impl->logs_.empty());
1953
+ impl->logs_.emplace_back(new_log_number, new_log);
1954
+ }
1955
+
1956
+ if (s.ok()) {
1957
+ impl->alive_log_files_.push_back(
1958
+ DBImpl::LogFileNumberSize(impl->logfile_number_));
1959
+ // In WritePrepared there could be gap in sequence numbers. This breaks
1960
+ // the trick we use in kPointInTimeRecovery which assumes the first seq in
1961
+ // the log right after the corrupted log is one larger than the last seq
1962
+ // we read from the wals. To let this trick keep working, we add a dummy
1963
+ // entry with the expected sequence to the first log right after recovery.
1964
+ // In non-WritePrepared case also the new log after recovery could be
1965
+ // empty, and thus missing the consecutive seq hint to distinguish
1966
+ // middle-log corruption to corrupted-log-remained-after-recovery. This
1967
+ // case also will be addressed by a dummy write.
1968
+ if (recovered_seq != kMaxSequenceNumber) {
1969
+ WriteBatch empty_batch;
1970
+ WriteBatchInternal::SetSequence(&empty_batch, recovered_seq);
1971
+ WriteOptions write_options;
1972
+ uint64_t log_used, log_size;
1973
+ log::Writer* log_writer = impl->logs_.back().writer;
1974
+ LogFileNumberSize& log_file_number_size = impl->alive_log_files_.back();
1975
+
1976
+ assert(log_writer->get_log_number() == log_file_number_size.number);
1977
+ impl->mutex_.AssertHeld();
1978
+ s = impl->WriteToWAL(empty_batch, log_writer, &log_used, &log_size,
1979
+ Env::IO_TOTAL, log_file_number_size);
1980
+ if (s.ok()) {
1981
+ // Need to fsync, otherwise it might get lost after a power reset.
1982
+ s = impl->FlushWAL(false);
1983
+ TEST_SYNC_POINT_CALLBACK("DBImpl::Open::BeforeSyncWAL", /*arg=*/&s);
1984
+ if (s.ok()) {
1985
+ s = log_writer->file()->Sync(impl->immutable_db_options_.use_fsync);
1986
+ }
1987
+ }
1988
+ }
1989
+ }
1990
+ }
1991
+ if (s.ok()) {
1992
+ s = impl->LogAndApplyForRecovery(recovery_ctx);
1993
+ }
1994
+
1995
+ if (s.ok() && impl->immutable_db_options_.persist_stats_to_disk) {
1996
+ impl->mutex_.AssertHeld();
1997
+ s = impl->InitPersistStatsColumnFamily();
1998
+ }
1999
+
2000
+ if (s.ok()) {
2001
+ // set column family handles
2002
+ for (auto cf : column_families) {
2003
+ auto cfd =
2004
+ impl->versions_->GetColumnFamilySet()->GetColumnFamily(cf.name);
2005
+ if (cfd != nullptr) {
2006
+ handles->push_back(
2007
+ new ColumnFamilyHandleImpl(cfd, impl, &impl->mutex_));
2008
+ impl->NewThreadStatusCfInfo(cfd);
2009
+ } else {
2010
+ if (db_options.create_missing_column_families) {
2011
+ // missing column family, create it
2012
+ ColumnFamilyHandle* handle = nullptr;
2013
+ impl->mutex_.Unlock();
2014
+ s = impl->CreateColumnFamily(cf.options, cf.name, &handle);
2015
+ impl->mutex_.Lock();
2016
+ if (s.ok()) {
2017
+ handles->push_back(handle);
2018
+ } else {
2019
+ break;
2020
+ }
2021
+ } else {
2022
+ s = Status::InvalidArgument("Column family not found", cf.name);
2023
+ break;
2024
+ }
2025
+ }
2026
+ }
2027
+ }
2028
+
2029
+ if (s.ok()) {
2030
+ SuperVersionContext sv_context(/* create_superversion */ true);
2031
+ for (auto cfd : *impl->versions_->GetColumnFamilySet()) {
2032
+ impl->InstallSuperVersionAndScheduleWork(
2033
+ cfd, &sv_context, *cfd->GetLatestMutableCFOptions());
2034
+ }
2035
+ sv_context.Clean();
2036
+ }
2037
+
2038
+ if (s.ok() && impl->immutable_db_options_.persist_stats_to_disk) {
2039
+ // try to read format version
2040
+ s = impl->PersistentStatsProcessFormatVersion();
2041
+ }
2042
+
2043
+ if (s.ok()) {
2044
+ for (auto cfd : *impl->versions_->GetColumnFamilySet()) {
2045
+ if (!cfd->mem()->IsSnapshotSupported()) {
2046
+ impl->is_snapshot_supported_ = false;
2047
+ }
2048
+ if (cfd->ioptions()->merge_operator != nullptr &&
2049
+ !cfd->mem()->IsMergeOperatorSupported()) {
2050
+ s = Status::InvalidArgument(
2051
+ "The memtable of column family %s does not support merge operator "
2052
+ "its options.merge_operator is non-null",
2053
+ cfd->GetName().c_str());
2054
+ }
2055
+ if (!s.ok()) {
2056
+ break;
2057
+ }
2058
+ }
2059
+ }
2060
+ TEST_SYNC_POINT("DBImpl::Open:Opened");
2061
+ Status persist_options_status;
2062
+ if (s.ok()) {
2063
+ // Persist RocksDB Options before scheduling the compaction.
2064
+ // The WriteOptionsFile() will release and lock the mutex internally.
2065
+ persist_options_status = impl->WriteOptionsFile(
2066
+ false /*need_mutex_lock*/, false /*need_enter_write_thread*/);
2067
+
2068
+ *dbptr = impl;
2069
+ impl->opened_successfully_ = true;
2070
+ impl->DeleteObsoleteFiles();
2071
+ TEST_SYNC_POINT("DBImpl::Open:AfterDeleteFiles");
2072
+ impl->MaybeScheduleFlushOrCompaction();
2073
+ } else {
2074
+ persist_options_status.PermitUncheckedError();
2075
+ }
2076
+ impl->mutex_.Unlock();
2077
+
2078
+ auto sfm = static_cast<SstFileManagerImpl*>(
2079
+ impl->immutable_db_options_.sst_file_manager.get());
2080
+ if (s.ok() && sfm) {
2081
+ // Set Statistics ptr for SstFileManager to dump the stats of
2082
+ // DeleteScheduler.
2083
+ sfm->SetStatisticsPtr(impl->immutable_db_options_.statistics);
2084
+ ROCKS_LOG_INFO(impl->immutable_db_options_.info_log,
2085
+ "SstFileManager instance %p", sfm);
2086
+
2087
+ // Notify SstFileManager about all sst files that already exist in
2088
+ // db_paths[0] and cf_paths[0] when the DB is opened.
2089
+
2090
+ // SstFileManagerImpl needs to know sizes of the files. For files whose size
2091
+ // we already know (sst files that appear in manifest - typically that's the
2092
+ // vast majority of all files), we'll pass the size to SstFileManager.
2093
+ // For all other files SstFileManager will query the size from filesystem.
2094
+
2095
+ std::vector<ColumnFamilyMetaData> metadata;
2096
+ impl->GetAllColumnFamilyMetaData(&metadata);
2097
+
2098
+ std::unordered_map<std::string, uint64_t> known_file_sizes;
2099
+ for (const auto& md : metadata) {
2100
+ for (const auto& lmd : md.levels) {
2101
+ for (const auto& fmd : lmd.files) {
2102
+ known_file_sizes[fmd.relative_filename] = fmd.size;
2103
+ }
2104
+ }
2105
+ for (const auto& bmd : md.blob_files) {
2106
+ std::string name = bmd.blob_file_name;
2107
+ // The BlobMetaData.blob_file_name may start with "/".
2108
+ if (!name.empty() && name[0] == '/') {
2109
+ name = name.substr(1);
2110
+ }
2111
+ known_file_sizes[name] = bmd.blob_file_size;
2112
+ }
2113
+ }
2114
+
2115
+ std::vector<std::string> paths;
2116
+ paths.emplace_back(impl->immutable_db_options_.db_paths[0].path);
2117
+ for (auto& cf : column_families) {
2118
+ if (!cf.options.cf_paths.empty()) {
2119
+ paths.emplace_back(cf.options.cf_paths[0].path);
2120
+ }
2121
+ }
2122
+ // Remove duplicate paths.
2123
+ std::sort(paths.begin(), paths.end());
2124
+ paths.erase(std::unique(paths.begin(), paths.end()), paths.end());
2125
+ IOOptions io_opts;
2126
+ io_opts.do_not_recurse = true;
2127
+ for (auto& path : paths) {
2128
+ std::vector<std::string> existing_files;
2129
+ impl->immutable_db_options_.fs
2130
+ ->GetChildren(path, io_opts, &existing_files,
2131
+ /*IODebugContext*=*/nullptr)
2132
+ .PermitUncheckedError(); //**TODO: What do to on error?
2133
+ for (auto& file_name : existing_files) {
2134
+ uint64_t file_number;
2135
+ FileType file_type;
2136
+ std::string file_path = path + "/" + file_name;
2137
+ if (ParseFileName(file_name, &file_number, &file_type) &&
2138
+ (file_type == kTableFile || file_type == kBlobFile)) {
2139
+ // TODO: Check for errors from OnAddFile?
2140
+ if (known_file_sizes.count(file_name)) {
2141
+ // We're assuming that each sst file name exists in at most one of
2142
+ // the paths.
2143
+ sfm->OnAddFile(file_path, known_file_sizes.at(file_name))
2144
+ .PermitUncheckedError();
2145
+ } else {
2146
+ sfm->OnAddFile(file_path).PermitUncheckedError();
2147
+ }
2148
+ }
2149
+ }
2150
+ }
2151
+
2152
+ // Reserve some disk buffer space. This is a heuristic - when we run out
2153
+ // of disk space, this ensures that there is atleast write_buffer_size
2154
+ // amount of free space before we resume DB writes. In low disk space
2155
+ // conditions, we want to avoid a lot of small L0 files due to frequent
2156
+ // WAL write failures and resultant forced flushes
2157
+ sfm->ReserveDiskBuffer(max_write_buffer_size,
2158
+ impl->immutable_db_options_.db_paths[0].path);
2159
+ }
2160
+
2161
+
2162
+ if (s.ok()) {
2163
+ ROCKS_LOG_HEADER(impl->immutable_db_options_.info_log, "DB pointer %p",
2164
+ impl);
2165
+ LogFlush(impl->immutable_db_options_.info_log);
2166
+ if (!impl->WALBufferIsEmpty()) {
2167
+ s = impl->FlushWAL(false);
2168
+ if (s.ok()) {
2169
+ // Sync is needed otherwise WAL buffered data might get lost after a
2170
+ // power reset.
2171
+ log::Writer* log_writer = impl->logs_.back().writer;
2172
+ s = log_writer->file()->Sync(impl->immutable_db_options_.use_fsync);
2173
+ }
2174
+ }
2175
+ if (s.ok() && !persist_options_status.ok()) {
2176
+ s = Status::IOError(
2177
+ "DB::Open() failed --- Unable to persist Options file",
2178
+ persist_options_status.ToString());
2179
+ }
2180
+ }
2181
+ if (!s.ok()) {
2182
+ ROCKS_LOG_WARN(impl->immutable_db_options_.info_log,
2183
+ "DB::Open() failed: %s", s.ToString().c_str());
2184
+ }
2185
+ if (s.ok()) {
2186
+ s = impl->StartPeriodicTaskScheduler();
2187
+ }
2188
+
2189
+ if (s.ok()) {
2190
+ s = impl->RegisterRecordSeqnoTimeWorker();
2191
+ }
2192
+ if (!s.ok()) {
2193
+ for (auto* h : *handles) {
2194
+ delete h;
2195
+ }
2196
+ handles->clear();
2197
+ delete impl;
2198
+ *dbptr = nullptr;
2199
+ }
2200
+ return s;
2201
+ }
2202
+ } // namespace ROCKSDB_NAMESPACE