@nxtedition/rocksdb 1.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 (1088) hide show
  1. package/CHANGELOG.md +294 -0
  2. package/LICENSE +21 -0
  3. package/README.md +102 -0
  4. package/UPGRADING.md +91 -0
  5. package/binding.cc +1276 -0
  6. package/binding.gyp +73 -0
  7. package/binding.js +1 -0
  8. package/chained-batch.js +44 -0
  9. package/deps/rocksdb/build_version.cc +4 -0
  10. package/deps/rocksdb/rocksdb/CMakeLists.txt +1356 -0
  11. package/deps/rocksdb/rocksdb/COPYING +339 -0
  12. package/deps/rocksdb/rocksdb/LICENSE.Apache +202 -0
  13. package/deps/rocksdb/rocksdb/LICENSE.leveldb +29 -0
  14. package/deps/rocksdb/rocksdb/Makefile +2521 -0
  15. package/deps/rocksdb/rocksdb/TARGETS +2100 -0
  16. package/deps/rocksdb/rocksdb/cache/cache.cc +63 -0
  17. package/deps/rocksdb/rocksdb/cache/cache_bench.cc +381 -0
  18. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +114 -0
  19. package/deps/rocksdb/rocksdb/cache/cache_test.cc +775 -0
  20. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +769 -0
  21. package/deps/rocksdb/rocksdb/cache/clock_cache.h +16 -0
  22. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +574 -0
  23. package/deps/rocksdb/rocksdb/cache/lru_cache.h +339 -0
  24. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +199 -0
  25. package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +162 -0
  26. package/deps/rocksdb/rocksdb/cache/sharded_cache.h +111 -0
  27. package/deps/rocksdb/rocksdb/cmake/RocksDBConfig.cmake.in +54 -0
  28. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  29. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  30. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  31. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  32. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  33. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  34. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  35. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  36. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  37. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +108 -0
  38. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +115 -0
  39. package/deps/rocksdb/rocksdb/db/blob/blob_constants.h +16 -0
  40. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.cc +154 -0
  41. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition.h +67 -0
  42. package/deps/rocksdb/rocksdb/db/blob/blob_file_addition_test.cc +206 -0
  43. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +316 -0
  44. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.h +91 -0
  45. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +660 -0
  46. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.cc +99 -0
  47. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache.h +49 -0
  48. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +268 -0
  49. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.cc +134 -0
  50. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage.h +57 -0
  51. package/deps/rocksdb/rocksdb/db/blob/blob_file_garbage_test.cc +173 -0
  52. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.cc +55 -0
  53. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +164 -0
  54. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +423 -0
  55. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +81 -0
  56. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +771 -0
  57. package/deps/rocksdb/rocksdb/db/blob/blob_index.h +184 -0
  58. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.cc +145 -0
  59. package/deps/rocksdb/rocksdb/db/blob/blob_log_format.h +148 -0
  60. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.cc +132 -0
  61. package/deps/rocksdb/rocksdb/db/blob/blob_log_sequential_reader.h +76 -0
  62. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.cc +168 -0
  63. package/deps/rocksdb/rocksdb/db/blob/blob_log_writer.h +83 -0
  64. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +307 -0
  65. package/deps/rocksdb/rocksdb/db/blob/db_blob_index_test.cc +464 -0
  66. package/deps/rocksdb/rocksdb/db/builder.cc +358 -0
  67. package/deps/rocksdb/rocksdb/db/builder.h +95 -0
  68. package/deps/rocksdb/rocksdb/db/c.cc +5281 -0
  69. package/deps/rocksdb/rocksdb/db/c_test.c +2883 -0
  70. package/deps/rocksdb/rocksdb/db/column_family.cc +1602 -0
  71. package/deps/rocksdb/rocksdb/db/column_family.h +787 -0
  72. package/deps/rocksdb/rocksdb/db/column_family_test.cc +3427 -0
  73. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +425 -0
  74. package/deps/rocksdb/rocksdb/db/compacted_db_impl.cc +169 -0
  75. package/deps/rocksdb/rocksdb/db/compacted_db_impl.h +118 -0
  76. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +591 -0
  77. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +389 -0
  78. package/deps/rocksdb/rocksdb/db/compaction/compaction_iteration_stats.h +37 -0
  79. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +1023 -0
  80. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +353 -0
  81. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +1254 -0
  82. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +1917 -0
  83. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +208 -0
  84. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +1037 -0
  85. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +1224 -0
  86. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +1135 -0
  87. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +318 -0
  88. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +255 -0
  89. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +57 -0
  90. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +510 -0
  91. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +33 -0
  92. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +2190 -0
  93. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +1103 -0
  94. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +32 -0
  95. package/deps/rocksdb/rocksdb/db/compaction/sst_partitioner.cc +44 -0
  96. package/deps/rocksdb/rocksdb/db/comparator_db_test.cc +660 -0
  97. package/deps/rocksdb/rocksdb/db/convenience.cc +78 -0
  98. package/deps/rocksdb/rocksdb/db/corruption_test.cc +921 -0
  99. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +359 -0
  100. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3820 -0
  101. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +1058 -0
  102. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +2128 -0
  103. package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +851 -0
  104. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +6292 -0
  105. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +509 -0
  106. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +130 -0
  107. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +137 -0
  108. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +1119 -0
  109. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +5057 -0
  110. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +2274 -0
  111. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +3421 -0
  112. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +298 -0
  113. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +151 -0
  114. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +967 -0
  115. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1806 -0
  116. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +270 -0
  117. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +146 -0
  118. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +683 -0
  119. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +333 -0
  120. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2024 -0
  121. package/deps/rocksdb/rocksdb/db/db_impl/db_secondary_test.cc +932 -0
  122. package/deps/rocksdb/rocksdb/db/db_info_dumper.cc +137 -0
  123. package/deps/rocksdb/rocksdb/db/db_info_dumper.h +15 -0
  124. package/deps/rocksdb/rocksdb/db/db_inplace_update_test.cc +178 -0
  125. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +592 -0
  126. package/deps/rocksdb/rocksdb/db/db_iter.cc +1493 -0
  127. package/deps/rocksdb/rocksdb/db/db_iter.h +390 -0
  128. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +657 -0
  129. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +3268 -0
  130. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +3197 -0
  131. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +299 -0
  132. package/deps/rocksdb/rocksdb/db/db_logical_block_size_cache_test.cc +513 -0
  133. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +329 -0
  134. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +241 -0
  135. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +671 -0
  136. package/deps/rocksdb/rocksdb/db/db_options_test.cc +1022 -0
  137. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1723 -0
  138. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +1694 -0
  139. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +1261 -0
  140. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +164 -0
  141. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +488 -0
  142. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +567 -0
  143. package/deps/rocksdb/rocksdb/db/db_test.cc +6736 -0
  144. package/deps/rocksdb/rocksdb/db/db_test2.cc +5408 -0
  145. package/deps/rocksdb/rocksdb/db/db_test_util.cc +1633 -0
  146. package/deps/rocksdb/rocksdb/db/db_test_util.h +1194 -0
  147. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +2235 -0
  148. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +1780 -0
  149. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +2520 -0
  150. package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +119 -0
  151. package/deps/rocksdb/rocksdb/db/db_write_test.cc +465 -0
  152. package/deps/rocksdb/rocksdb/db/dbformat.cc +222 -0
  153. package/deps/rocksdb/rocksdb/db/dbformat.h +786 -0
  154. package/deps/rocksdb/rocksdb/db/dbformat_test.cc +206 -0
  155. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +580 -0
  156. package/deps/rocksdb/rocksdb/db/error_handler.cc +726 -0
  157. package/deps/rocksdb/rocksdb/db/error_handler.h +117 -0
  158. package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +2598 -0
  159. package/deps/rocksdb/rocksdb/db/event_helpers.cc +233 -0
  160. package/deps/rocksdb/rocksdb/db/event_helpers.h +57 -0
  161. package/deps/rocksdb/rocksdb/db/experimental.cc +50 -0
  162. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +1559 -0
  163. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +910 -0
  164. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +195 -0
  165. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +2936 -0
  166. package/deps/rocksdb/rocksdb/db/fault_injection_test.cc +556 -0
  167. package/deps/rocksdb/rocksdb/db/file_indexer.cc +216 -0
  168. package/deps/rocksdb/rocksdb/db/file_indexer.h +142 -0
  169. package/deps/rocksdb/rocksdb/db/file_indexer_test.cc +350 -0
  170. package/deps/rocksdb/rocksdb/db/filename_test.cc +179 -0
  171. package/deps/rocksdb/rocksdb/db/flush_job.cc +514 -0
  172. package/deps/rocksdb/rocksdb/db/flush_job.h +169 -0
  173. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +647 -0
  174. package/deps/rocksdb/rocksdb/db/flush_scheduler.cc +86 -0
  175. package/deps/rocksdb/rocksdb/db/flush_scheduler.h +54 -0
  176. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1023 -0
  177. package/deps/rocksdb/rocksdb/db/forward_iterator.h +163 -0
  178. package/deps/rocksdb/rocksdb/db/forward_iterator_bench.cc +377 -0
  179. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +282 -0
  180. package/deps/rocksdb/rocksdb/db/import_column_family_job.h +75 -0
  181. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +632 -0
  182. package/deps/rocksdb/rocksdb/db/internal_stats.cc +1461 -0
  183. package/deps/rocksdb/rocksdb/db/internal_stats.h +712 -0
  184. package/deps/rocksdb/rocksdb/db/job_context.h +226 -0
  185. package/deps/rocksdb/rocksdb/db/listener_test.cc +1118 -0
  186. package/deps/rocksdb/rocksdb/db/log_format.h +48 -0
  187. package/deps/rocksdb/rocksdb/db/log_reader.cc +654 -0
  188. package/deps/rocksdb/rocksdb/db/log_reader.h +192 -0
  189. package/deps/rocksdb/rocksdb/db/log_test.cc +901 -0
  190. package/deps/rocksdb/rocksdb/db/log_writer.cc +164 -0
  191. package/deps/rocksdb/rocksdb/db/log_writer.h +115 -0
  192. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.cc +67 -0
  193. package/deps/rocksdb/rocksdb/db/logs_with_prep_tracker.h +63 -0
  194. package/deps/rocksdb/rocksdb/db/lookup_key.h +66 -0
  195. package/deps/rocksdb/rocksdb/db/malloc_stats.cc +54 -0
  196. package/deps/rocksdb/rocksdb/db/malloc_stats.h +24 -0
  197. package/deps/rocksdb/rocksdb/db/manual_compaction_test.cc +296 -0
  198. package/deps/rocksdb/rocksdb/db/memtable.cc +1169 -0
  199. package/deps/rocksdb/rocksdb/db/memtable.h +554 -0
  200. package/deps/rocksdb/rocksdb/db/memtable_list.cc +888 -0
  201. package/deps/rocksdb/rocksdb/db/memtable_list.h +438 -0
  202. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +935 -0
  203. package/deps/rocksdb/rocksdb/db/merge_context.h +134 -0
  204. package/deps/rocksdb/rocksdb/db/merge_helper.cc +421 -0
  205. package/deps/rocksdb/rocksdb/db/merge_helper.h +197 -0
  206. package/deps/rocksdb/rocksdb/db/merge_helper_test.cc +290 -0
  207. package/deps/rocksdb/rocksdb/db/merge_operator.cc +86 -0
  208. package/deps/rocksdb/rocksdb/db/merge_test.cc +608 -0
  209. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +338 -0
  210. package/deps/rocksdb/rocksdb/db/options_file_test.cc +119 -0
  211. package/deps/rocksdb/rocksdb/db/output_validator.cc +30 -0
  212. package/deps/rocksdb/rocksdb/db/output_validator.h +47 -0
  213. package/deps/rocksdb/rocksdb/db/perf_context_test.cc +993 -0
  214. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +113 -0
  215. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +76 -0
  216. package/deps/rocksdb/rocksdb/db/periodic_work_scheduler_test.cc +231 -0
  217. package/deps/rocksdb/rocksdb/db/pinned_iterators_manager.h +87 -0
  218. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +1374 -0
  219. package/deps/rocksdb/rocksdb/db/pre_release_callback.h +38 -0
  220. package/deps/rocksdb/rocksdb/db/prefix_test.cc +910 -0
  221. package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +489 -0
  222. package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +446 -0
  223. package/deps/rocksdb/rocksdb/db/range_del_aggregator_bench.cc +260 -0
  224. package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +709 -0
  225. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +439 -0
  226. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +256 -0
  227. package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter_test.cc +552 -0
  228. package/deps/rocksdb/rocksdb/db/read_callback.h +53 -0
  229. package/deps/rocksdb/rocksdb/db/repair.cc +722 -0
  230. package/deps/rocksdb/rocksdb/db/repair_test.cc +390 -0
  231. package/deps/rocksdb/rocksdb/db/snapshot_checker.h +61 -0
  232. package/deps/rocksdb/rocksdb/db/snapshot_impl.cc +26 -0
  233. package/deps/rocksdb/rocksdb/db/snapshot_impl.h +167 -0
  234. package/deps/rocksdb/rocksdb/db/table_cache.cc +704 -0
  235. package/deps/rocksdb/rocksdb/db/table_cache.h +233 -0
  236. package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +75 -0
  237. package/deps/rocksdb/rocksdb/db/table_properties_collector.h +107 -0
  238. package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +517 -0
  239. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +318 -0
  240. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +128 -0
  241. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.cc +54 -0
  242. package/deps/rocksdb/rocksdb/db/trim_history_scheduler.h +44 -0
  243. package/deps/rocksdb/rocksdb/db/version_builder.cc +1078 -0
  244. package/deps/rocksdb/rocksdb/db/version_builder.h +69 -0
  245. package/deps/rocksdb/rocksdb/db/version_builder_test.cc +1551 -0
  246. package/deps/rocksdb/rocksdb/db/version_edit.cc +955 -0
  247. package/deps/rocksdb/rocksdb/db/version_edit.h +609 -0
  248. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +699 -0
  249. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +252 -0
  250. package/deps/rocksdb/rocksdb/db/version_edit_test.cc +597 -0
  251. package/deps/rocksdb/rocksdb/db/version_set.cc +6333 -0
  252. package/deps/rocksdb/rocksdb/db/version_set.h +1485 -0
  253. package/deps/rocksdb/rocksdb/db/version_set_test.cc +3035 -0
  254. package/deps/rocksdb/rocksdb/db/wal_edit.cc +204 -0
  255. package/deps/rocksdb/rocksdb/db/wal_edit.h +166 -0
  256. package/deps/rocksdb/rocksdb/db/wal_edit_test.cc +214 -0
  257. package/deps/rocksdb/rocksdb/db/wal_manager.cc +517 -0
  258. package/deps/rocksdb/rocksdb/db/wal_manager.h +119 -0
  259. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +340 -0
  260. package/deps/rocksdb/rocksdb/db/write_batch.cc +2174 -0
  261. package/deps/rocksdb/rocksdb/db/write_batch_base.cc +94 -0
  262. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +250 -0
  263. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +907 -0
  264. package/deps/rocksdb/rocksdb/db/write_callback.h +27 -0
  265. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +457 -0
  266. package/deps/rocksdb/rocksdb/db/write_controller.cc +128 -0
  267. package/deps/rocksdb/rocksdb/db/write_controller.h +144 -0
  268. package/deps/rocksdb/rocksdb/db/write_controller_test.cc +135 -0
  269. package/deps/rocksdb/rocksdb/db/write_thread.cc +796 -0
  270. package/deps/rocksdb/rocksdb/db/write_thread.h +433 -0
  271. package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +14 -0
  272. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +341 -0
  273. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +520 -0
  274. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +23 -0
  275. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +337 -0
  276. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +554 -0
  277. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_filter.h +79 -0
  278. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +173 -0
  279. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.h +17 -0
  280. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_env_wrapper.h +38 -0
  281. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +763 -0
  282. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +222 -0
  283. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.cc +27 -0
  284. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +428 -0
  285. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +218 -0
  286. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +64 -0
  287. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +2430 -0
  288. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +237 -0
  289. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +343 -0
  290. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +800 -0
  291. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +920 -0
  292. package/deps/rocksdb/rocksdb/env/env.cc +733 -0
  293. package/deps/rocksdb/rocksdb/env/env_basic_test.cc +352 -0
  294. package/deps/rocksdb/rocksdb/env/env_chroot.cc +346 -0
  295. package/deps/rocksdb/rocksdb/env/env_chroot.h +22 -0
  296. package/deps/rocksdb/rocksdb/env/env_encryption.cc +1148 -0
  297. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +137 -0
  298. package/deps/rocksdb/rocksdb/env/env_hdfs.cc +648 -0
  299. package/deps/rocksdb/rocksdb/env/env_posix.cc +514 -0
  300. package/deps/rocksdb/rocksdb/env/env_test.cc +2230 -0
  301. package/deps/rocksdb/rocksdb/env/file_system.cc +132 -0
  302. package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +448 -0
  303. package/deps/rocksdb/rocksdb/env/file_system_tracer.h +415 -0
  304. package/deps/rocksdb/rocksdb/env/fs_posix.cc +1086 -0
  305. package/deps/rocksdb/rocksdb/env/io_posix.cc +1499 -0
  306. package/deps/rocksdb/rocksdb/env/io_posix.h +402 -0
  307. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +140 -0
  308. package/deps/rocksdb/rocksdb/env/mock_env.cc +1066 -0
  309. package/deps/rocksdb/rocksdb/env/mock_env.h +41 -0
  310. package/deps/rocksdb/rocksdb/env/mock_env_test.cc +85 -0
  311. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +402 -0
  312. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +150 -0
  313. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +717 -0
  314. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +156 -0
  315. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +99 -0
  316. package/deps/rocksdb/rocksdb/file/file_util.cc +268 -0
  317. package/deps/rocksdb/rocksdb/file/file_util.h +96 -0
  318. package/deps/rocksdb/rocksdb/file/filename.cc +473 -0
  319. package/deps/rocksdb/rocksdb/file/filename.h +182 -0
  320. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +188 -0
  321. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +315 -0
  322. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +142 -0
  323. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +482 -0
  324. package/deps/rocksdb/rocksdb/file/read_write_util.cc +67 -0
  325. package/deps/rocksdb/rocksdb/file/read_write_util.h +34 -0
  326. package/deps/rocksdb/rocksdb/file/readahead_raf.cc +169 -0
  327. package/deps/rocksdb/rocksdb/file/readahead_raf.h +29 -0
  328. package/deps/rocksdb/rocksdb/file/sequence_file_reader.cc +237 -0
  329. package/deps/rocksdb/rocksdb/file/sequence_file_reader.h +63 -0
  330. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +552 -0
  331. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +203 -0
  332. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +523 -0
  333. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +251 -0
  334. package/deps/rocksdb/rocksdb/hdfs/env_hdfs.h +386 -0
  335. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +839 -0
  336. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +2218 -0
  337. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +294 -0
  338. package/deps/rocksdb/rocksdb/include/rocksdb/cleanable.h +71 -0
  339. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +214 -0
  340. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +98 -0
  341. package/deps/rocksdb/rocksdb/include/rocksdb/comparator.h +137 -0
  342. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +40 -0
  343. package/deps/rocksdb/rocksdb/include/rocksdb/concurrent_task_limiter.h +46 -0
  344. package/deps/rocksdb/rocksdb/include/rocksdb/configurable.h +359 -0
  345. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +499 -0
  346. package/deps/rocksdb/rocksdb/include/rocksdb/customizable.h +138 -0
  347. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +1697 -0
  348. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +11 -0
  349. package/deps/rocksdb/rocksdb/include/rocksdb/db_dump_tool.h +45 -0
  350. package/deps/rocksdb/rocksdb/include/rocksdb/db_stress_tool.h +11 -0
  351. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1671 -0
  352. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +405 -0
  353. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +29 -0
  354. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +129 -0
  355. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +1472 -0
  356. package/deps/rocksdb/rocksdb/include/rocksdb/filter_policy.h +238 -0
  357. package/deps/rocksdb/rocksdb/include/rocksdb/flush_block_policy.h +61 -0
  358. package/deps/rocksdb/rocksdb/include/rocksdb/io_status.h +269 -0
  359. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +56 -0
  360. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +128 -0
  361. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +43 -0
  362. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +556 -0
  363. package/deps/rocksdb/rocksdb/include/rocksdb/memory_allocator.h +77 -0
  364. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +385 -0
  365. package/deps/rocksdb/rocksdb/include/rocksdb/merge_operator.h +257 -0
  366. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +155 -0
  367. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +1702 -0
  368. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +237 -0
  369. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +35 -0
  370. package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +73 -0
  371. package/deps/rocksdb/rocksdb/include/rocksdb/rate_limiter.h +139 -0
  372. package/deps/rocksdb/rocksdb/include/rocksdb/rocksdb_namespace.h +10 -0
  373. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +269 -0
  374. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +103 -0
  375. package/deps/rocksdb/rocksdb/include/rocksdb/snapshot.h +48 -0
  376. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +19 -0
  377. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_manager.h +136 -0
  378. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +47 -0
  379. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +145 -0
  380. package/deps/rocksdb/rocksdb/include/rocksdb/sst_partitioner.h +135 -0
  381. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +592 -0
  382. package/deps/rocksdb/rocksdb/include/rocksdb/stats_history.h +69 -0
  383. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +608 -0
  384. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +711 -0
  385. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +280 -0
  386. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +188 -0
  387. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +58 -0
  388. package/deps/rocksdb/rocksdb/include/rocksdb/trace_reader_writer.h +48 -0
  389. package/deps/rocksdb/rocksdb/include/rocksdb/transaction_log.h +121 -0
  390. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +74 -0
  391. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +86 -0
  392. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backupable_db.h +535 -0
  393. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/checkpoint.h +61 -0
  394. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/convenience.h +10 -0
  395. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/db_ttl.h +72 -0
  396. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +49 -0
  397. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_librados.h +175 -0
  398. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +180 -0
  399. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/info_log_finder.h +19 -0
  400. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +288 -0
  401. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +71 -0
  402. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/leveldb_options.h +145 -0
  403. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_custom_library.h +43 -0
  404. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/lua/rocks_lua_util.h +55 -0
  405. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +50 -0
  406. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +205 -0
  407. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/optimistic_transaction_db.h +100 -0
  408. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +19 -0
  409. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_type.h +876 -0
  410. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +128 -0
  411. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/sim_cache.h +94 -0
  412. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +504 -0
  413. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +95 -0
  414. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +626 -0
  415. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +432 -0
  416. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +92 -0
  417. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/utility_db.h +34 -0
  418. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +279 -0
  419. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +16 -0
  420. package/deps/rocksdb/rocksdb/include/rocksdb/wal_filter.h +102 -0
  421. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +377 -0
  422. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +127 -0
  423. package/deps/rocksdb/rocksdb/include/rocksdb/write_buffer_manager.h +106 -0
  424. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +300 -0
  425. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.h +165 -0
  426. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +684 -0
  427. package/deps/rocksdb/rocksdb/logging/env_logger.h +165 -0
  428. package/deps/rocksdb/rocksdb/logging/env_logger_test.cc +162 -0
  429. package/deps/rocksdb/rocksdb/logging/event_logger.cc +70 -0
  430. package/deps/rocksdb/rocksdb/logging/event_logger.h +203 -0
  431. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +43 -0
  432. package/deps/rocksdb/rocksdb/logging/log_buffer.cc +92 -0
  433. package/deps/rocksdb/rocksdb/logging/log_buffer.h +56 -0
  434. package/deps/rocksdb/rocksdb/logging/logging.h +68 -0
  435. package/deps/rocksdb/rocksdb/logging/posix_logger.h +185 -0
  436. package/deps/rocksdb/rocksdb/memory/allocator.h +57 -0
  437. package/deps/rocksdb/rocksdb/memory/arena.cc +233 -0
  438. package/deps/rocksdb/rocksdb/memory/arena.h +141 -0
  439. package/deps/rocksdb/rocksdb/memory/arena_test.cc +204 -0
  440. package/deps/rocksdb/rocksdb/memory/concurrent_arena.cc +47 -0
  441. package/deps/rocksdb/rocksdb/memory/concurrent_arena.h +218 -0
  442. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.cc +206 -0
  443. package/deps/rocksdb/rocksdb/memory/jemalloc_nodump_allocator.h +78 -0
  444. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.cc +33 -0
  445. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator.h +27 -0
  446. package/deps/rocksdb/rocksdb/memory/memkind_kmem_allocator_test.cc +102 -0
  447. package/deps/rocksdb/rocksdb/memory/memory_allocator.h +38 -0
  448. package/deps/rocksdb/rocksdb/memory/memory_usage.h +25 -0
  449. package/deps/rocksdb/rocksdb/memtable/alloc_tracker.cc +62 -0
  450. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +844 -0
  451. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.h +49 -0
  452. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.cc +349 -0
  453. package/deps/rocksdb/rocksdb/memtable/hash_skiplist_rep.h +44 -0
  454. package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +997 -0
  455. package/deps/rocksdb/rocksdb/memtable/inlineskiplist_test.cc +663 -0
  456. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +677 -0
  457. package/deps/rocksdb/rocksdb/memtable/skiplist.h +496 -0
  458. package/deps/rocksdb/rocksdb/memtable/skiplist_test.cc +388 -0
  459. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +280 -0
  460. package/deps/rocksdb/rocksdb/memtable/stl_wrappers.h +33 -0
  461. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +301 -0
  462. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager.cc +148 -0
  463. package/deps/rocksdb/rocksdb/memtable/write_buffer_manager_test.cc +203 -0
  464. package/deps/rocksdb/rocksdb/monitoring/file_read_sample.h +23 -0
  465. package/deps/rocksdb/rocksdb/monitoring/histogram.cc +287 -0
  466. package/deps/rocksdb/rocksdb/monitoring/histogram.h +149 -0
  467. package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +231 -0
  468. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.cc +200 -0
  469. package/deps/rocksdb/rocksdb/monitoring/histogram_windowing.h +84 -0
  470. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.cc +49 -0
  471. package/deps/rocksdb/rocksdb/monitoring/in_memory_stats_history.h +74 -0
  472. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +71 -0
  473. package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +98 -0
  474. package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +62 -0
  475. package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +60 -0
  476. package/deps/rocksdb/rocksdb/monitoring/iostats_context_test.cc +29 -0
  477. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +566 -0
  478. package/deps/rocksdb/rocksdb/monitoring/perf_context_imp.h +97 -0
  479. package/deps/rocksdb/rocksdb/monitoring/perf_level.cc +28 -0
  480. package/deps/rocksdb/rocksdb/monitoring/perf_level_imp.h +18 -0
  481. package/deps/rocksdb/rocksdb/monitoring/perf_step_timer.h +79 -0
  482. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.cc +169 -0
  483. package/deps/rocksdb/rocksdb/monitoring/persistent_stats_history.h +83 -0
  484. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +431 -0
  485. package/deps/rocksdb/rocksdb/monitoring/statistics.h +138 -0
  486. package/deps/rocksdb/rocksdb/monitoring/statistics_test.cc +47 -0
  487. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +652 -0
  488. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +163 -0
  489. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +314 -0
  490. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +233 -0
  491. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +43 -0
  492. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +206 -0
  493. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +134 -0
  494. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +32 -0
  495. package/deps/rocksdb/rocksdb/options/cf_options.cc +1026 -0
  496. package/deps/rocksdb/rocksdb/options/cf_options.h +308 -0
  497. package/deps/rocksdb/rocksdb/options/configurable.cc +681 -0
  498. package/deps/rocksdb/rocksdb/options/configurable_helper.h +251 -0
  499. package/deps/rocksdb/rocksdb/options/configurable_test.cc +757 -0
  500. package/deps/rocksdb/rocksdb/options/configurable_test.h +127 -0
  501. package/deps/rocksdb/rocksdb/options/customizable.cc +77 -0
  502. package/deps/rocksdb/rocksdb/options/customizable_helper.h +216 -0
  503. package/deps/rocksdb/rocksdb/options/customizable_test.cc +625 -0
  504. package/deps/rocksdb/rocksdb/options/db_options.cc +835 -0
  505. package/deps/rocksdb/rocksdb/options/db_options.h +126 -0
  506. package/deps/rocksdb/rocksdb/options/options.cc +664 -0
  507. package/deps/rocksdb/rocksdb/options/options_helper.cc +1391 -0
  508. package/deps/rocksdb/rocksdb/options/options_helper.h +118 -0
  509. package/deps/rocksdb/rocksdb/options/options_parser.cc +721 -0
  510. package/deps/rocksdb/rocksdb/options/options_parser.h +151 -0
  511. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +583 -0
  512. package/deps/rocksdb/rocksdb/options/options_test.cc +3794 -0
  513. package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +106 -0
  514. package/deps/rocksdb/rocksdb/port/lang.h +16 -0
  515. package/deps/rocksdb/rocksdb/port/likely.h +18 -0
  516. package/deps/rocksdb/rocksdb/port/malloc.h +17 -0
  517. package/deps/rocksdb/rocksdb/port/port.h +21 -0
  518. package/deps/rocksdb/rocksdb/port/port_dirent.h +44 -0
  519. package/deps/rocksdb/rocksdb/port/port_example.h +101 -0
  520. package/deps/rocksdb/rocksdb/port/port_posix.cc +266 -0
  521. package/deps/rocksdb/rocksdb/port/port_posix.h +223 -0
  522. package/deps/rocksdb/rocksdb/port/stack_trace.cc +179 -0
  523. package/deps/rocksdb/rocksdb/port/stack_trace.h +28 -0
  524. package/deps/rocksdb/rocksdb/port/sys_time.h +47 -0
  525. package/deps/rocksdb/rocksdb/port/util_logger.h +20 -0
  526. package/deps/rocksdb/rocksdb/port/win/env_default.cc +45 -0
  527. package/deps/rocksdb/rocksdb/port/win/env_win.cc +1449 -0
  528. package/deps/rocksdb/rocksdb/port/win/env_win.h +294 -0
  529. package/deps/rocksdb/rocksdb/port/win/io_win.cc +1084 -0
  530. package/deps/rocksdb/rocksdb/port/win/io_win.h +494 -0
  531. package/deps/rocksdb/rocksdb/port/win/port_win.cc +283 -0
  532. package/deps/rocksdb/rocksdb/port/win/port_win.h +411 -0
  533. package/deps/rocksdb/rocksdb/port/win/win_jemalloc.cc +79 -0
  534. package/deps/rocksdb/rocksdb/port/win/win_logger.cc +194 -0
  535. package/deps/rocksdb/rocksdb/port/win/win_logger.h +67 -0
  536. package/deps/rocksdb/rocksdb/port/win/win_thread.cc +183 -0
  537. package/deps/rocksdb/rocksdb/port/win/win_thread.h +122 -0
  538. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +221 -0
  539. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +26 -0
  540. package/deps/rocksdb/rocksdb/port/xpress.h +17 -0
  541. package/deps/rocksdb/rocksdb/src.mk +631 -0
  542. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.cc +126 -0
  543. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +57 -0
  544. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.cc +73 -0
  545. package/deps/rocksdb/rocksdb/table/block_based/binary_search_index_reader.h +48 -0
  546. package/deps/rocksdb/rocksdb/table/block_based/block.cc +1049 -0
  547. package/deps/rocksdb/rocksdb/table/block_based/block.h +720 -0
  548. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +348 -0
  549. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +119 -0
  550. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +434 -0
  551. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1835 -0
  552. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +193 -0
  553. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +839 -0
  554. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +95 -0
  555. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +383 -0
  556. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +251 -0
  557. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +3563 -0
  558. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +681 -0
  559. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +190 -0
  560. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +347 -0
  561. package/deps/rocksdb/rocksdb/table/block_based/block_builder.cc +201 -0
  562. package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +78 -0
  563. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +66 -0
  564. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +32 -0
  565. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.cc +232 -0
  566. package/deps/rocksdb/rocksdb/table/block_based/block_prefix_index.h +66 -0
  567. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +623 -0
  568. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +30 -0
  569. package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +220 -0
  570. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.cc +59 -0
  571. package/deps/rocksdb/rocksdb/table/block_based/data_block_footer.h +25 -0
  572. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.cc +93 -0
  573. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index.h +136 -0
  574. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +717 -0
  575. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +180 -0
  576. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +102 -0
  577. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.h +55 -0
  578. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1407 -0
  579. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +168 -0
  580. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +88 -0
  581. package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.h +41 -0
  582. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +344 -0
  583. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +139 -0
  584. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +333 -0
  585. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +147 -0
  586. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.h +49 -0
  587. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +248 -0
  588. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +444 -0
  589. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +54 -0
  590. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.h +85 -0
  591. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +56 -0
  592. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.cc +22 -0
  593. package/deps/rocksdb/rocksdb/table/block_based/parsed_full_filter_block.h +40 -0
  594. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +521 -0
  595. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +144 -0
  596. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +424 -0
  597. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +163 -0
  598. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.h +142 -0
  599. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +186 -0
  600. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.h +51 -0
  601. package/deps/rocksdb/rocksdb/table/block_based/reader_common.cc +64 -0
  602. package/deps/rocksdb/rocksdb/table/block_based/reader_common.h +38 -0
  603. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +120 -0
  604. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +59 -0
  605. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +324 -0
  606. package/deps/rocksdb/rocksdb/table/block_fetcher.h +129 -0
  607. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +534 -0
  608. package/deps/rocksdb/rocksdb/table/cleanable_test.cc +277 -0
  609. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.cc +543 -0
  610. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +136 -0
  611. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +663 -0
  612. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.cc +107 -0
  613. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_factory.h +81 -0
  614. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.cc +404 -0
  615. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader.h +101 -0
  616. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +585 -0
  617. package/deps/rocksdb/rocksdb/table/format.cc +422 -0
  618. package/deps/rocksdb/rocksdb/table/format.h +348 -0
  619. package/deps/rocksdb/rocksdb/table/get_context.cc +408 -0
  620. package/deps/rocksdb/rocksdb/table/get_context.h +212 -0
  621. package/deps/rocksdb/rocksdb/table/internal_iterator.h +205 -0
  622. package/deps/rocksdb/rocksdb/table/iter_heap.h +42 -0
  623. package/deps/rocksdb/rocksdb/table/iterator.cc +210 -0
  624. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +180 -0
  625. package/deps/rocksdb/rocksdb/table/merger_test.cc +180 -0
  626. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +481 -0
  627. package/deps/rocksdb/rocksdb/table/merging_iterator.h +64 -0
  628. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +541 -0
  629. package/deps/rocksdb/rocksdb/table/meta_blocks.h +154 -0
  630. package/deps/rocksdb/rocksdb/table/mock_table.cc +328 -0
  631. package/deps/rocksdb/rocksdb/table/mock_table.h +89 -0
  632. package/deps/rocksdb/rocksdb/table/multiget_context.h +282 -0
  633. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +116 -0
  634. package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +44 -0
  635. package/deps/rocksdb/rocksdb/table/persistent_cache_options.h +34 -0
  636. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.cc +78 -0
  637. package/deps/rocksdb/rocksdb/table/plain/plain_table_bloom.h +135 -0
  638. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +332 -0
  639. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.h +153 -0
  640. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.cc +263 -0
  641. package/deps/rocksdb/rocksdb/table/plain/plain_table_factory.h +182 -0
  642. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +211 -0
  643. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +249 -0
  644. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.cc +506 -0
  645. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +201 -0
  646. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +781 -0
  647. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.h +247 -0
  648. package/deps/rocksdb/rocksdb/table/scoped_arena_iterator.h +61 -0
  649. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +502 -0
  650. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +96 -0
  651. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +98 -0
  652. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +228 -0
  653. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +340 -0
  654. package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +94 -0
  655. package/deps/rocksdb/rocksdb/table/table_builder.h +203 -0
  656. package/deps/rocksdb/rocksdb/table/table_factory.cc +38 -0
  657. package/deps/rocksdb/rocksdb/table/table_properties.cc +300 -0
  658. package/deps/rocksdb/rocksdb/table/table_properties_internal.h +30 -0
  659. package/deps/rocksdb/rocksdb/table/table_reader.h +147 -0
  660. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +347 -0
  661. package/deps/rocksdb/rocksdb/table/table_reader_caller.h +39 -0
  662. package/deps/rocksdb/rocksdb/table/table_test.cc +4769 -0
  663. package/deps/rocksdb/rocksdb/table/two_level_iterator.cc +215 -0
  664. package/deps/rocksdb/rocksdb/table/two_level_iterator.h +43 -0
  665. package/deps/rocksdb/rocksdb/test_util/mock_time_env.cc +38 -0
  666. package/deps/rocksdb/rocksdb/test_util/mock_time_env.h +74 -0
  667. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +93 -0
  668. package/deps/rocksdb/rocksdb/test_util/sync_point.h +161 -0
  669. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.cc +129 -0
  670. package/deps/rocksdb/rocksdb/test_util/sync_point_impl.h +74 -0
  671. package/deps/rocksdb/rocksdb/test_util/testharness.cc +56 -0
  672. package/deps/rocksdb/rocksdb/test_util/testharness.h +53 -0
  673. package/deps/rocksdb/rocksdb/test_util/testutil.cc +566 -0
  674. package/deps/rocksdb/rocksdb/test_util/testutil.h +887 -0
  675. package/deps/rocksdb/rocksdb/test_util/testutil_test.cc +43 -0
  676. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +388 -0
  677. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +132 -0
  678. package/deps/rocksdb/rocksdb/third-party/folly/folly/CPortability.h +27 -0
  679. package/deps/rocksdb/rocksdb/third-party/folly/folly/ConstexprMath.h +45 -0
  680. package/deps/rocksdb/rocksdb/third-party/folly/folly/Indestructible.h +166 -0
  681. package/deps/rocksdb/rocksdb/third-party/folly/folly/Optional.h +570 -0
  682. package/deps/rocksdb/rocksdb/third-party/folly/folly/Portability.h +92 -0
  683. package/deps/rocksdb/rocksdb/third-party/folly/folly/ScopeGuard.h +54 -0
  684. package/deps/rocksdb/rocksdb/third-party/folly/folly/Traits.h +152 -0
  685. package/deps/rocksdb/rocksdb/third-party/folly/folly/Unit.h +59 -0
  686. package/deps/rocksdb/rocksdb/third-party/folly/folly/Utility.h +141 -0
  687. package/deps/rocksdb/rocksdb/third-party/folly/folly/chrono/Hardware.h +33 -0
  688. package/deps/rocksdb/rocksdb/third-party/folly/folly/container/Array.h +74 -0
  689. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex-inl.h +117 -0
  690. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.cpp +263 -0
  691. package/deps/rocksdb/rocksdb/third-party/folly/folly/detail/Futex.h +96 -0
  692. package/deps/rocksdb/rocksdb/third-party/folly/folly/functional/Invoke.h +40 -0
  693. package/deps/rocksdb/rocksdb/third-party/folly/folly/hash/Hash.h +29 -0
  694. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Align.h +144 -0
  695. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Bits.h +30 -0
  696. package/deps/rocksdb/rocksdb/third-party/folly/folly/lang/Launder.h +51 -0
  697. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/Asm.h +28 -0
  698. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysSyscall.h +10 -0
  699. package/deps/rocksdb/rocksdb/third-party/folly/folly/portability/SysTypes.h +26 -0
  700. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification-inl.h +138 -0
  701. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.cpp +23 -0
  702. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicNotification.h +57 -0
  703. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil-inl.h +260 -0
  704. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/AtomicUtil.h +52 -0
  705. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/Baton.h +328 -0
  706. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex-inl.h +1703 -0
  707. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.cpp +16 -0
  708. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutex.h +304 -0
  709. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/DistributedMutexSpecializations.h +39 -0
  710. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.cpp +26 -0
  711. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/ParkingLot.h +318 -0
  712. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.cpp +12 -0
  713. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/WaitOptions.h +57 -0
  714. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/InlineFunctionRef.h +219 -0
  715. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable-inl.h +207 -0
  716. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/ProxyLockable.h +164 -0
  717. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Sleeper.h +57 -0
  718. package/deps/rocksdb/rocksdb/third-party/folly/folly/synchronization/detail/Spin.h +77 -0
  719. package/deps/rocksdb/rocksdb/third-party/gcc/ppc-asm.h +390 -0
  720. package/deps/rocksdb/rocksdb/thirdparty.inc +268 -0
  721. package/deps/rocksdb/rocksdb/tools/CMakeLists.txt +30 -0
  722. package/deps/rocksdb/rocksdb/tools/blob_dump.cc +110 -0
  723. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/__init__.py +2 -0
  724. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.py +2000 -0
  725. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim.sh +156 -0
  726. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +734 -0
  727. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.cc +2307 -0
  728. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer.h +395 -0
  729. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +721 -0
  730. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_test.cc +719 -0
  731. package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_tool.cc +25 -0
  732. package/deps/rocksdb/rocksdb/tools/db_bench.cc +21 -0
  733. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +7416 -0
  734. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +328 -0
  735. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +130 -0
  736. package/deps/rocksdb/rocksdb/tools/db_sanity_test.cc +297 -0
  737. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +259 -0
  738. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_dump.cc +63 -0
  739. package/deps/rocksdb/rocksdb/tools/dump/rocksdb_undump.cc +62 -0
  740. package/deps/rocksdb/rocksdb/tools/io_tracer_parser.cc +25 -0
  741. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_test.cc +187 -0
  742. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.cc +120 -0
  743. package/deps/rocksdb/rocksdb/tools/io_tracer_parser_tool.h +40 -0
  744. package/deps/rocksdb/rocksdb/tools/ldb.cc +21 -0
  745. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3609 -0
  746. package/deps/rocksdb/rocksdb/tools/ldb_cmd_impl.h +665 -0
  747. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +746 -0
  748. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +159 -0
  749. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +221 -0
  750. package/deps/rocksdb/rocksdb/tools/sst_dump.cc +20 -0
  751. package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +427 -0
  752. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +541 -0
  753. package/deps/rocksdb/rocksdb/tools/trace_analyzer.cc +25 -0
  754. package/deps/rocksdb/rocksdb/tools/trace_analyzer_test.cc +752 -0
  755. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +2001 -0
  756. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +292 -0
  757. package/deps/rocksdb/rocksdb/tools/write_stress.cc +305 -0
  758. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.cc +496 -0
  759. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer.h +294 -0
  760. package/deps/rocksdb/rocksdb/trace_replay/block_cache_tracer_test.cc +379 -0
  761. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +229 -0
  762. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.h +174 -0
  763. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +215 -0
  764. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +491 -0
  765. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.h +195 -0
  766. package/deps/rocksdb/rocksdb/util/aligned_buffer.h +255 -0
  767. package/deps/rocksdb/rocksdb/util/autovector.h +367 -0
  768. package/deps/rocksdb/rocksdb/util/autovector_test.cc +330 -0
  769. package/deps/rocksdb/rocksdb/util/bloom_impl.h +485 -0
  770. package/deps/rocksdb/rocksdb/util/bloom_test.cc +1191 -0
  771. package/deps/rocksdb/rocksdb/util/build_version.cc.in +5 -0
  772. package/deps/rocksdb/rocksdb/util/build_version.h +15 -0
  773. package/deps/rocksdb/rocksdb/util/cast_util.h +20 -0
  774. package/deps/rocksdb/rocksdb/util/channel.h +67 -0
  775. package/deps/rocksdb/rocksdb/util/coding.cc +89 -0
  776. package/deps/rocksdb/rocksdb/util/coding.h +419 -0
  777. package/deps/rocksdb/rocksdb/util/coding_lean.h +101 -0
  778. package/deps/rocksdb/rocksdb/util/coding_test.cc +217 -0
  779. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +92 -0
  780. package/deps/rocksdb/rocksdb/util/comparator.cc +219 -0
  781. package/deps/rocksdb/rocksdb/util/compression.h +1529 -0
  782. package/deps/rocksdb/rocksdb/util/compression_context_cache.cc +108 -0
  783. package/deps/rocksdb/rocksdb/util/compression_context_cache.h +47 -0
  784. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.cc +67 -0
  785. package/deps/rocksdb/rocksdb/util/concurrent_task_limiter_impl.h +67 -0
  786. package/deps/rocksdb/rocksdb/util/core_local.h +83 -0
  787. package/deps/rocksdb/rocksdb/util/crc32c.cc +1283 -0
  788. package/deps/rocksdb/rocksdb/util/crc32c.h +51 -0
  789. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +169 -0
  790. package/deps/rocksdb/rocksdb/util/crc32c_arm64.h +50 -0
  791. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +94 -0
  792. package/deps/rocksdb/rocksdb/util/crc32c_ppc.h +19 -0
  793. package/deps/rocksdb/rocksdb/util/crc32c_ppc_asm.S +756 -0
  794. package/deps/rocksdb/rocksdb/util/crc32c_ppc_constants.h +900 -0
  795. package/deps/rocksdb/rocksdb/util/crc32c_test.cc +180 -0
  796. package/deps/rocksdb/rocksdb/util/defer.h +52 -0
  797. package/deps/rocksdb/rocksdb/util/defer_test.cc +39 -0
  798. package/deps/rocksdb/rocksdb/util/duplicate_detector.h +68 -0
  799. package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +70 -0
  800. package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +214 -0
  801. package/deps/rocksdb/rocksdb/util/dynamic_bloom_test.cc +323 -0
  802. package/deps/rocksdb/rocksdb/util/fastrange.h +112 -0
  803. package/deps/rocksdb/rocksdb/util/file_checksum_helper.cc +136 -0
  804. package/deps/rocksdb/rocksdb/util/file_checksum_helper.h +98 -0
  805. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +449 -0
  806. package/deps/rocksdb/rocksdb/util/filelock_test.cc +152 -0
  807. package/deps/rocksdb/rocksdb/util/filter_bench.cc +781 -0
  808. package/deps/rocksdb/rocksdb/util/gflags_compat.h +20 -0
  809. package/deps/rocksdb/rocksdb/util/hash.cc +83 -0
  810. package/deps/rocksdb/rocksdb/util/hash.h +107 -0
  811. package/deps/rocksdb/rocksdb/util/hash_map.h +67 -0
  812. package/deps/rocksdb/rocksdb/util/hash_test.cc +593 -0
  813. package/deps/rocksdb/rocksdb/util/heap.h +166 -0
  814. package/deps/rocksdb/rocksdb/util/heap_test.cc +139 -0
  815. package/deps/rocksdb/rocksdb/util/kv_map.h +33 -0
  816. package/deps/rocksdb/rocksdb/util/log_write_bench.cc +86 -0
  817. package/deps/rocksdb/rocksdb/util/math.h +186 -0
  818. package/deps/rocksdb/rocksdb/util/math128.h +298 -0
  819. package/deps/rocksdb/rocksdb/util/murmurhash.cc +191 -0
  820. package/deps/rocksdb/rocksdb/util/murmurhash.h +42 -0
  821. package/deps/rocksdb/rocksdb/util/mutexlock.h +186 -0
  822. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +27 -0
  823. package/deps/rocksdb/rocksdb/util/random.cc +56 -0
  824. package/deps/rocksdb/rocksdb/util/random.h +186 -0
  825. package/deps/rocksdb/rocksdb/util/random_test.cc +105 -0
  826. package/deps/rocksdb/rocksdb/util/rate_limiter.cc +340 -0
  827. package/deps/rocksdb/rocksdb/util/rate_limiter.h +113 -0
  828. package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +251 -0
  829. package/deps/rocksdb/rocksdb/util/repeatable_thread.h +151 -0
  830. package/deps/rocksdb/rocksdb/util/repeatable_thread_test.cc +107 -0
  831. package/deps/rocksdb/rocksdb/util/ribbon_alg.h +1201 -0
  832. package/deps/rocksdb/rocksdb/util/ribbon_impl.h +1062 -0
  833. package/deps/rocksdb/rocksdb/util/ribbon_test.cc +931 -0
  834. package/deps/rocksdb/rocksdb/util/set_comparator.h +22 -0
  835. package/deps/rocksdb/rocksdb/util/slice.cc +243 -0
  836. package/deps/rocksdb/rocksdb/util/slice_test.cc +163 -0
  837. package/deps/rocksdb/rocksdb/util/slice_transform_test.cc +153 -0
  838. package/deps/rocksdb/rocksdb/util/status.cc +149 -0
  839. package/deps/rocksdb/rocksdb/util/stderr_logger.h +31 -0
  840. package/deps/rocksdb/rocksdb/util/stop_watch.h +118 -0
  841. package/deps/rocksdb/rocksdb/util/string_util.cc +422 -0
  842. package/deps/rocksdb/rocksdb/util/string_util.h +144 -0
  843. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +354 -0
  844. package/deps/rocksdb/rocksdb/util/thread_local.cc +554 -0
  845. package/deps/rocksdb/rocksdb/util/thread_local.h +101 -0
  846. package/deps/rocksdb/rocksdb/util/thread_local_test.cc +583 -0
  847. package/deps/rocksdb/rocksdb/util/thread_operation.h +121 -0
  848. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +506 -0
  849. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +112 -0
  850. package/deps/rocksdb/rocksdb/util/timer.h +331 -0
  851. package/deps/rocksdb/rocksdb/util/timer_queue.h +230 -0
  852. package/deps/rocksdb/rocksdb/util/timer_queue_test.cc +72 -0
  853. package/deps/rocksdb/rocksdb/util/timer_test.cc +399 -0
  854. package/deps/rocksdb/rocksdb/util/user_comparator_wrapper.h +80 -0
  855. package/deps/rocksdb/rocksdb/util/vector_iterator.h +101 -0
  856. package/deps/rocksdb/rocksdb/util/work_queue.h +148 -0
  857. package/deps/rocksdb/rocksdb/util/work_queue_test.cc +268 -0
  858. package/deps/rocksdb/rocksdb/util/xxh3p.h +1392 -0
  859. package/deps/rocksdb/rocksdb/util/xxhash.cc +1158 -0
  860. package/deps/rocksdb/rocksdb/util/xxhash.h +598 -0
  861. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db.cc +2354 -0
  862. package/deps/rocksdb/rocksdb/utilities/backupable/backupable_db_test.cc +2955 -0
  863. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +488 -0
  864. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.h +199 -0
  865. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.cc +112 -0
  866. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +266 -0
  867. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +52 -0
  868. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +2167 -0
  869. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +500 -0
  870. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +113 -0
  871. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_iterator.h +147 -0
  872. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +66 -0
  873. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +2386 -0
  874. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +281 -0
  875. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +58 -0
  876. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.cc +314 -0
  877. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_file.h +244 -0
  878. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.cc +47 -0
  879. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_compaction_filter.h +42 -0
  880. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_format_test.cc +375 -0
  881. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_functional_test.cc +327 -0
  882. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_row_merge_test.cc +114 -0
  883. package/deps/rocksdb/rocksdb/utilities/cassandra/cassandra_serialize_test.cc +187 -0
  884. package/deps/rocksdb/rocksdb/utilities/cassandra/format.cc +390 -0
  885. package/deps/rocksdb/rocksdb/utilities/cassandra/format.h +184 -0
  886. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.cc +67 -0
  887. package/deps/rocksdb/rocksdb/utilities/cassandra/merge_operator.h +44 -0
  888. package/deps/rocksdb/rocksdb/utilities/cassandra/serialize.h +75 -0
  889. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.cc +72 -0
  890. package/deps/rocksdb/rocksdb/utilities/cassandra/test_utils.h +43 -0
  891. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +588 -0
  892. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.h +82 -0
  893. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +821 -0
  894. package/deps/rocksdb/rocksdb/utilities/compaction_filters/layered_compaction_filter_base.h +37 -0
  895. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +29 -0
  896. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +27 -0
  897. package/deps/rocksdb/rocksdb/utilities/convenience/info_log_finder.cc +25 -0
  898. package/deps/rocksdb/rocksdb/utilities/debug.cc +82 -0
  899. package/deps/rocksdb/rocksdb/utilities/env_librados.cc +1497 -0
  900. package/deps/rocksdb/rocksdb/utilities/env_librados_test.cc +1146 -0
  901. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +262 -0
  902. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +223 -0
  903. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +145 -0
  904. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +44 -0
  905. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.cc +490 -0
  906. package/deps/rocksdb/rocksdb/utilities/fault_injection_env.h +242 -0
  907. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +581 -0
  908. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +437 -0
  909. package/deps/rocksdb/rocksdb/utilities/leveldb_options/leveldb_options.cc +56 -0
  910. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +275 -0
  911. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +52 -0
  912. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.cc +59 -0
  913. package/deps/rocksdb/rocksdb/utilities/merge_operators/bytesxor.h +39 -0
  914. package/deps/rocksdb/rocksdb/utilities/merge_operators/max.cc +77 -0
  915. package/deps/rocksdb/rocksdb/utilities/merge_operators/put.cc +83 -0
  916. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.cc +97 -0
  917. package/deps/rocksdb/rocksdb/utilities/merge_operators/sortlist.h +38 -0
  918. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.cc +59 -0
  919. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend.h +31 -0
  920. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.cc +117 -0
  921. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend2.h +49 -0
  922. package/deps/rocksdb/rocksdb/utilities/merge_operators/string_append/stringappend_test.cc +598 -0
  923. package/deps/rocksdb/rocksdb/utilities/merge_operators/uint64add.cc +69 -0
  924. package/deps/rocksdb/rocksdb/utilities/merge_operators.h +55 -0
  925. package/deps/rocksdb/rocksdb/utilities/object_registry.cc +87 -0
  926. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +174 -0
  927. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +168 -0
  928. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +431 -0
  929. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +159 -0
  930. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +655 -0
  931. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +425 -0
  932. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +156 -0
  933. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.cc +609 -0
  934. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +296 -0
  935. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file_buffer.h +127 -0
  936. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +86 -0
  937. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +125 -0
  938. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +238 -0
  939. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_bench.cc +308 -0
  940. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +168 -0
  941. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +160 -0
  942. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +174 -0
  943. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_bench.cc +360 -0
  944. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +456 -0
  945. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +286 -0
  946. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +167 -0
  947. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +339 -0
  948. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_util.h +67 -0
  949. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +140 -0
  950. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +142 -0
  951. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.cc +285 -0
  952. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator.h +231 -0
  953. package/deps/rocksdb/rocksdb/utilities/simulator_cache/cache_simulator_test.cc +494 -0
  954. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache.cc +356 -0
  955. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +224 -0
  956. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +122 -0
  957. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +72 -0
  958. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +244 -0
  959. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.cc +125 -0
  960. package/deps/rocksdb/rocksdb/utilities/trace/file_trace_reader_writer.h +48 -0
  961. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +29 -0
  962. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +82 -0
  963. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_tracker.h +209 -0
  964. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +720 -0
  965. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +223 -0
  966. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +181 -0
  967. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +319 -0
  968. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +270 -0
  969. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.h +99 -0
  970. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_lock_manager.h +30 -0
  971. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +306 -0
  972. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.AGPLv3 +661 -0
  973. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.APACHEv2 +174 -0
  974. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/COPYING.GPLv2 +339 -0
  975. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +76 -0
  976. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/comparator.h +138 -0
  977. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/ft/ft-status.h +102 -0
  978. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.cc +139 -0
  979. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/concurrent_tree.h +174 -0
  980. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.cc +222 -0
  981. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/keyrange.h +141 -0
  982. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.cc +525 -0
  983. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/lock_request.h +253 -0
  984. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.cc +1007 -0
  985. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/locktree.h +560 -0
  986. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/manager.cc +527 -0
  987. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.cc +265 -0
  988. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/range_buffer.h +178 -0
  989. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.cc +520 -0
  990. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/treenode.h +302 -0
  991. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.cc +120 -0
  992. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/txnid_set.h +92 -0
  993. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.cc +213 -0
  994. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/locktree/wfg.h +124 -0
  995. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/memory.h +215 -0
  996. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_assert_subst.h +39 -0
  997. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_atomic.h +130 -0
  998. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_external_pthread.h +82 -0
  999. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_instrumentation.h +286 -0
  1000. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_portability.h +87 -0
  1001. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_pthread.h +520 -0
  1002. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_race_tools.h +179 -0
  1003. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +172 -0
  1004. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/txn_subst.h +27 -0
  1005. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/standalone_port.cc +132 -0
  1006. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +153 -0
  1007. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.h +98 -0
  1008. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/growable_array.h +144 -0
  1009. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.cc +201 -0
  1010. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/memarena.h +141 -0
  1011. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt.h +794 -0
  1012. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/omt_impl.h +1295 -0
  1013. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/partitioned_counter.h +165 -0
  1014. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/status.h +76 -0
  1015. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +479 -0
  1016. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.h +130 -0
  1017. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.cc +156 -0
  1018. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_tracker.h +146 -0
  1019. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +196 -0
  1020. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +101 -0
  1021. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +111 -0
  1022. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.h +87 -0
  1023. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +1418 -0
  1024. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +752 -0
  1025. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +232 -0
  1026. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +628 -0
  1027. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +228 -0
  1028. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +49 -0
  1029. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +678 -0
  1030. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +373 -0
  1031. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +135 -0
  1032. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +26 -0
  1033. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +6350 -0
  1034. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +522 -0
  1035. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +188 -0
  1036. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +80 -0
  1037. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3531 -0
  1038. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +483 -0
  1039. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.h +119 -0
  1040. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +999 -0
  1041. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.h +1109 -0
  1042. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +786 -0
  1043. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1039 -0
  1044. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +341 -0
  1045. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +470 -0
  1046. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.h +108 -0
  1047. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.cc +332 -0
  1048. package/deps/rocksdb/rocksdb/utilities/ttl/db_ttl_impl.h +353 -0
  1049. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +703 -0
  1050. package/deps/rocksdb/rocksdb/utilities/util_merge_operators_test.cc +99 -0
  1051. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +617 -0
  1052. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +345 -0
  1053. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +569 -0
  1054. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +1867 -0
  1055. package/deps/rocksdb/rocksdb.gyp +475 -0
  1056. package/deps/snappy/freebsd/config.h +135 -0
  1057. package/deps/snappy/freebsd/snappy-stubs-public.h +100 -0
  1058. package/deps/snappy/linux/config.h +135 -0
  1059. package/deps/snappy/linux/snappy-stubs-public.h +100 -0
  1060. package/deps/snappy/mac/config.h +137 -0
  1061. package/deps/snappy/mac/snappy-stubs-public.h +100 -0
  1062. package/deps/snappy/openbsd/config.h +135 -0
  1063. package/deps/snappy/openbsd/snappy-stubs-public.h +100 -0
  1064. package/deps/snappy/snappy-1.1.7/COPYING +54 -0
  1065. package/deps/snappy/snappy-1.1.7/cmake/SnappyConfig.cmake +1 -0
  1066. package/deps/snappy/snappy-1.1.7/cmake/config.h.in +62 -0
  1067. package/deps/snappy/snappy-1.1.7/snappy-c.cc +90 -0
  1068. package/deps/snappy/snappy-1.1.7/snappy-c.h +138 -0
  1069. package/deps/snappy/snappy-1.1.7/snappy-internal.h +224 -0
  1070. package/deps/snappy/snappy-1.1.7/snappy-sinksource.cc +104 -0
  1071. package/deps/snappy/snappy-1.1.7/snappy-sinksource.h +182 -0
  1072. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.cc +42 -0
  1073. package/deps/snappy/snappy-1.1.7/snappy-stubs-internal.h +561 -0
  1074. package/deps/snappy/snappy-1.1.7/snappy-stubs-public.h.in +94 -0
  1075. package/deps/snappy/snappy-1.1.7/snappy-test.cc +612 -0
  1076. package/deps/snappy/snappy-1.1.7/snappy-test.h +573 -0
  1077. package/deps/snappy/snappy-1.1.7/snappy.cc +1515 -0
  1078. package/deps/snappy/snappy-1.1.7/snappy.h +203 -0
  1079. package/deps/snappy/snappy-1.1.7/snappy_unittest.cc +1410 -0
  1080. package/deps/snappy/snappy.gyp +90 -0
  1081. package/deps/snappy/solaris/config.h +135 -0
  1082. package/deps/snappy/solaris/snappy-stubs-public.h +100 -0
  1083. package/deps/snappy/win32/config.h +29 -0
  1084. package/deps/snappy/win32/snappy-stubs-public.h +100 -0
  1085. package/iterator.js +55 -0
  1086. package/leveldown.js +113 -0
  1087. package/package-lock.json +23687 -0
  1088. package/package.json +70 -0
@@ -0,0 +1,1103 @@
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
+
10
+ #include "db/compaction/compaction_picker_universal.h"
11
+ #ifndef ROCKSDB_LITE
12
+
13
+ #include <cinttypes>
14
+ #include <limits>
15
+ #include <queue>
16
+ #include <string>
17
+ #include <utility>
18
+ #include "db/column_family.h"
19
+ #include "file/filename.h"
20
+ #include "logging/log_buffer.h"
21
+ #include "monitoring/statistics.h"
22
+ #include "test_util/sync_point.h"
23
+ #include "util/random.h"
24
+ #include "util/string_util.h"
25
+
26
+ namespace ROCKSDB_NAMESPACE {
27
+ namespace {
28
+ // A helper class that form universal compactions. The class is used by
29
+ // UniversalCompactionPicker::PickCompaction().
30
+ // The usage is to create the class, and get the compaction object by calling
31
+ // PickCompaction().
32
+ class UniversalCompactionBuilder {
33
+ public:
34
+ UniversalCompactionBuilder(
35
+ const ImmutableCFOptions& ioptions, const InternalKeyComparator* icmp,
36
+ const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
37
+ const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
38
+ UniversalCompactionPicker* picker, LogBuffer* log_buffer)
39
+ : ioptions_(ioptions),
40
+ icmp_(icmp),
41
+ cf_name_(cf_name),
42
+ mutable_cf_options_(mutable_cf_options),
43
+ mutable_db_options_(mutable_db_options),
44
+ vstorage_(vstorage),
45
+ picker_(picker),
46
+ log_buffer_(log_buffer) {}
47
+
48
+ // Form and return the compaction object. The caller owns return object.
49
+ Compaction* PickCompaction();
50
+
51
+ private:
52
+ struct SortedRun {
53
+ SortedRun(int _level, FileMetaData* _file, uint64_t _size,
54
+ uint64_t _compensated_file_size, bool _being_compacted)
55
+ : level(_level),
56
+ file(_file),
57
+ size(_size),
58
+ compensated_file_size(_compensated_file_size),
59
+ being_compacted(_being_compacted) {
60
+ assert(compensated_file_size > 0);
61
+ assert(level != 0 || file != nullptr);
62
+ }
63
+
64
+ void Dump(char* out_buf, size_t out_buf_size,
65
+ bool print_path = false) const;
66
+
67
+ // sorted_run_count is added into the string to print
68
+ void DumpSizeInfo(char* out_buf, size_t out_buf_size,
69
+ size_t sorted_run_count) const;
70
+
71
+ int level;
72
+ // `file` Will be null for level > 0. For level = 0, the sorted run is
73
+ // for this file.
74
+ FileMetaData* file;
75
+ // For level > 0, `size` and `compensated_file_size` are sum of sizes all
76
+ // files in the level. `being_compacted` should be the same for all files
77
+ // in a non-zero level. Use the value here.
78
+ uint64_t size;
79
+ uint64_t compensated_file_size;
80
+ bool being_compacted;
81
+ };
82
+
83
+ // Pick Universal compaction to limit read amplification
84
+ Compaction* PickCompactionToReduceSortedRuns(
85
+ unsigned int ratio, unsigned int max_number_of_files_to_compact);
86
+
87
+ // Pick Universal compaction to limit space amplification.
88
+ Compaction* PickCompactionToReduceSizeAmp();
89
+
90
+ Compaction* PickDeleteTriggeredCompaction();
91
+
92
+ // Form a compaction from the sorted run indicated by start_index to the
93
+ // oldest sorted run.
94
+ // The caller is responsible for making sure that those files are not in
95
+ // compaction.
96
+ Compaction* PickCompactionToOldest(size_t start_index,
97
+ CompactionReason compaction_reason);
98
+
99
+ // Try to pick periodic compaction. The caller should only call it
100
+ // if there is at least one file marked for periodic compaction.
101
+ // null will be returned if no such a compaction can be formed
102
+ // because some files are being compacted.
103
+ Compaction* PickPeriodicCompaction();
104
+
105
+ // Used in universal compaction when the enabled_trivial_move
106
+ // option is set. Checks whether there are any overlapping files
107
+ // in the input. Returns true if the input files are non
108
+ // overlapping.
109
+ bool IsInputFilesNonOverlapping(Compaction* c);
110
+
111
+ const ImmutableCFOptions& ioptions_;
112
+ const InternalKeyComparator* icmp_;
113
+ double score_;
114
+ std::vector<SortedRun> sorted_runs_;
115
+ const std::string& cf_name_;
116
+ const MutableCFOptions& mutable_cf_options_;
117
+ const MutableDBOptions& mutable_db_options_;
118
+ VersionStorageInfo* vstorage_;
119
+ UniversalCompactionPicker* picker_;
120
+ LogBuffer* log_buffer_;
121
+
122
+ static std::vector<SortedRun> CalculateSortedRuns(
123
+ const VersionStorageInfo& vstorage);
124
+
125
+ // Pick a path ID to place a newly generated file, with its estimated file
126
+ // size.
127
+ static uint32_t GetPathId(const ImmutableCFOptions& ioptions,
128
+ const MutableCFOptions& mutable_cf_options,
129
+ uint64_t file_size);
130
+ };
131
+
132
+ // Used in universal compaction when trivial move is enabled.
133
+ // This structure is used for the construction of min heap
134
+ // that contains the file meta data, the level of the file
135
+ // and the index of the file in that level
136
+
137
+ struct InputFileInfo {
138
+ InputFileInfo() : f(nullptr), level(0), index(0) {}
139
+
140
+ FileMetaData* f;
141
+ size_t level;
142
+ size_t index;
143
+ };
144
+
145
+ // Used in universal compaction when trivial move is enabled.
146
+ // This comparator is used for the construction of min heap
147
+ // based on the smallest key of the file.
148
+ struct SmallestKeyHeapComparator {
149
+ explicit SmallestKeyHeapComparator(const Comparator* ucmp) { ucmp_ = ucmp; }
150
+
151
+ bool operator()(InputFileInfo i1, InputFileInfo i2) const {
152
+ return (ucmp_->Compare(i1.f->smallest.user_key(),
153
+ i2.f->smallest.user_key()) > 0);
154
+ }
155
+
156
+ private:
157
+ const Comparator* ucmp_;
158
+ };
159
+
160
+ typedef std::priority_queue<InputFileInfo, std::vector<InputFileInfo>,
161
+ SmallestKeyHeapComparator>
162
+ SmallestKeyHeap;
163
+
164
+ // This function creates the heap that is used to find if the files are
165
+ // overlapping during universal compaction when the allow_trivial_move
166
+ // is set.
167
+ SmallestKeyHeap create_level_heap(Compaction* c, const Comparator* ucmp) {
168
+ SmallestKeyHeap smallest_key_priority_q =
169
+ SmallestKeyHeap(SmallestKeyHeapComparator(ucmp));
170
+
171
+ InputFileInfo input_file;
172
+
173
+ for (size_t l = 0; l < c->num_input_levels(); l++) {
174
+ if (c->num_input_files(l) != 0) {
175
+ if (l == 0 && c->start_level() == 0) {
176
+ for (size_t i = 0; i < c->num_input_files(0); i++) {
177
+ input_file.f = c->input(0, i);
178
+ input_file.level = 0;
179
+ input_file.index = i;
180
+ smallest_key_priority_q.push(std::move(input_file));
181
+ }
182
+ } else {
183
+ input_file.f = c->input(l, 0);
184
+ input_file.level = l;
185
+ input_file.index = 0;
186
+ smallest_key_priority_q.push(std::move(input_file));
187
+ }
188
+ }
189
+ }
190
+ return smallest_key_priority_q;
191
+ }
192
+
193
+ #ifndef NDEBUG
194
+ // smallest_seqno and largest_seqno are set iff. `files` is not empty.
195
+ void GetSmallestLargestSeqno(const std::vector<FileMetaData*>& files,
196
+ SequenceNumber* smallest_seqno,
197
+ SequenceNumber* largest_seqno) {
198
+ bool is_first = true;
199
+ for (FileMetaData* f : files) {
200
+ assert(f->fd.smallest_seqno <= f->fd.largest_seqno);
201
+ if (is_first) {
202
+ is_first = false;
203
+ *smallest_seqno = f->fd.smallest_seqno;
204
+ *largest_seqno = f->fd.largest_seqno;
205
+ } else {
206
+ if (f->fd.smallest_seqno < *smallest_seqno) {
207
+ *smallest_seqno = f->fd.smallest_seqno;
208
+ }
209
+ if (f->fd.largest_seqno > *largest_seqno) {
210
+ *largest_seqno = f->fd.largest_seqno;
211
+ }
212
+ }
213
+ }
214
+ }
215
+ #endif
216
+ } // namespace
217
+
218
+ // Algorithm that checks to see if there are any overlapping
219
+ // files in the input
220
+ bool UniversalCompactionBuilder::IsInputFilesNonOverlapping(Compaction* c) {
221
+ auto comparator = icmp_->user_comparator();
222
+ int first_iter = 1;
223
+
224
+ InputFileInfo prev, curr, next;
225
+
226
+ SmallestKeyHeap smallest_key_priority_q =
227
+ create_level_heap(c, icmp_->user_comparator());
228
+
229
+ while (!smallest_key_priority_q.empty()) {
230
+ curr = smallest_key_priority_q.top();
231
+ smallest_key_priority_q.pop();
232
+
233
+ if (first_iter) {
234
+ prev = curr;
235
+ first_iter = 0;
236
+ } else {
237
+ if (comparator->Compare(prev.f->largest.user_key(),
238
+ curr.f->smallest.user_key()) >= 0) {
239
+ // found overlapping files, return false
240
+ return false;
241
+ }
242
+ assert(comparator->Compare(curr.f->largest.user_key(),
243
+ prev.f->largest.user_key()) > 0);
244
+ prev = curr;
245
+ }
246
+
247
+ next.f = nullptr;
248
+
249
+ if (c->level(curr.level) != 0 &&
250
+ curr.index < c->num_input_files(curr.level) - 1) {
251
+ next.f = c->input(curr.level, curr.index + 1);
252
+ next.level = curr.level;
253
+ next.index = curr.index + 1;
254
+ }
255
+
256
+ if (next.f) {
257
+ smallest_key_priority_q.push(std::move(next));
258
+ }
259
+ }
260
+ return true;
261
+ }
262
+
263
+ bool UniversalCompactionPicker::NeedsCompaction(
264
+ const VersionStorageInfo* vstorage) const {
265
+ const int kLevel0 = 0;
266
+ if (vstorage->CompactionScore(kLevel0) >= 1) {
267
+ return true;
268
+ }
269
+ if (!vstorage->FilesMarkedForPeriodicCompaction().empty()) {
270
+ return true;
271
+ }
272
+ if (!vstorage->FilesMarkedForCompaction().empty()) {
273
+ return true;
274
+ }
275
+ return false;
276
+ }
277
+
278
+ Compaction* UniversalCompactionPicker::PickCompaction(
279
+ const std::string& cf_name, const MutableCFOptions& mutable_cf_options,
280
+ const MutableDBOptions& mutable_db_options, VersionStorageInfo* vstorage,
281
+ LogBuffer* log_buffer, SequenceNumber /* earliest_memtable_seqno */) {
282
+ UniversalCompactionBuilder builder(ioptions_, icmp_, cf_name,
283
+ mutable_cf_options, mutable_db_options,
284
+ vstorage, this, log_buffer);
285
+ return builder.PickCompaction();
286
+ }
287
+
288
+ void UniversalCompactionBuilder::SortedRun::Dump(char* out_buf,
289
+ size_t out_buf_size,
290
+ bool print_path) const {
291
+ if (level == 0) {
292
+ assert(file != nullptr);
293
+ if (file->fd.GetPathId() == 0 || !print_path) {
294
+ snprintf(out_buf, out_buf_size, "file %" PRIu64, file->fd.GetNumber());
295
+ } else {
296
+ snprintf(out_buf, out_buf_size, "file %" PRIu64
297
+ "(path "
298
+ "%" PRIu32 ")",
299
+ file->fd.GetNumber(), file->fd.GetPathId());
300
+ }
301
+ } else {
302
+ snprintf(out_buf, out_buf_size, "level %d", level);
303
+ }
304
+ }
305
+
306
+ void UniversalCompactionBuilder::SortedRun::DumpSizeInfo(
307
+ char* out_buf, size_t out_buf_size, size_t sorted_run_count) const {
308
+ if (level == 0) {
309
+ assert(file != nullptr);
310
+ snprintf(out_buf, out_buf_size,
311
+ "file %" PRIu64 "[%" ROCKSDB_PRIszt
312
+ "] "
313
+ "with size %" PRIu64 " (compensated size %" PRIu64 ")",
314
+ file->fd.GetNumber(), sorted_run_count, file->fd.GetFileSize(),
315
+ file->compensated_file_size);
316
+ } else {
317
+ snprintf(out_buf, out_buf_size,
318
+ "level %d[%" ROCKSDB_PRIszt
319
+ "] "
320
+ "with size %" PRIu64 " (compensated size %" PRIu64 ")",
321
+ level, sorted_run_count, size, compensated_file_size);
322
+ }
323
+ }
324
+
325
+ std::vector<UniversalCompactionBuilder::SortedRun>
326
+ UniversalCompactionBuilder::CalculateSortedRuns(
327
+ const VersionStorageInfo& vstorage) {
328
+ std::vector<UniversalCompactionBuilder::SortedRun> ret;
329
+ for (FileMetaData* f : vstorage.LevelFiles(0)) {
330
+ ret.emplace_back(0, f, f->fd.GetFileSize(), f->compensated_file_size,
331
+ f->being_compacted);
332
+ }
333
+ for (int level = 1; level < vstorage.num_levels(); level++) {
334
+ uint64_t total_compensated_size = 0U;
335
+ uint64_t total_size = 0U;
336
+ bool being_compacted = false;
337
+ for (FileMetaData* f : vstorage.LevelFiles(level)) {
338
+ total_compensated_size += f->compensated_file_size;
339
+ total_size += f->fd.GetFileSize();
340
+ // Size amp, read amp and periodic compactions always include all files
341
+ // for a non-zero level. However, a delete triggered compaction and
342
+ // a trivial move might pick a subset of files in a sorted run. So
343
+ // always check all files in a sorted run and mark the entire run as
344
+ // being compacted if one or more files are being compacted
345
+ if (f->being_compacted) {
346
+ being_compacted = f->being_compacted;
347
+ }
348
+ }
349
+ if (total_compensated_size > 0) {
350
+ ret.emplace_back(level, nullptr, total_size, total_compensated_size,
351
+ being_compacted);
352
+ }
353
+ }
354
+ return ret;
355
+ }
356
+
357
+ // Universal style of compaction. Pick files that are contiguous in
358
+ // time-range to compact.
359
+ Compaction* UniversalCompactionBuilder::PickCompaction() {
360
+ const int kLevel0 = 0;
361
+ score_ = vstorage_->CompactionScore(kLevel0);
362
+ sorted_runs_ = CalculateSortedRuns(*vstorage_);
363
+
364
+ if (sorted_runs_.size() == 0 ||
365
+ (vstorage_->FilesMarkedForPeriodicCompaction().empty() &&
366
+ vstorage_->FilesMarkedForCompaction().empty() &&
367
+ sorted_runs_.size() < (unsigned int)mutable_cf_options_
368
+ .level0_file_num_compaction_trigger)) {
369
+ ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: nothing to do\n",
370
+ cf_name_.c_str());
371
+ TEST_SYNC_POINT_CALLBACK(
372
+ "UniversalCompactionBuilder::PickCompaction:Return", nullptr);
373
+ return nullptr;
374
+ }
375
+ VersionStorageInfo::LevelSummaryStorage tmp;
376
+ ROCKS_LOG_BUFFER_MAX_SZ(
377
+ log_buffer_, 3072,
378
+ "[%s] Universal: sorted runs: %" ROCKSDB_PRIszt " files: %s\n",
379
+ cf_name_.c_str(), sorted_runs_.size(), vstorage_->LevelSummary(&tmp));
380
+
381
+ Compaction* c = nullptr;
382
+ // Periodic compaction has higher priority than other type of compaction
383
+ // because it's a hard requirement.
384
+ if (!vstorage_->FilesMarkedForPeriodicCompaction().empty()) {
385
+ // Always need to do a full compaction for periodic compaction.
386
+ c = PickPeriodicCompaction();
387
+ }
388
+
389
+ // Check for size amplification.
390
+ if (c == nullptr &&
391
+ sorted_runs_.size() >=
392
+ static_cast<size_t>(
393
+ mutable_cf_options_.level0_file_num_compaction_trigger)) {
394
+ if ((c = PickCompactionToReduceSizeAmp()) != nullptr) {
395
+ ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: compacting for size amp\n",
396
+ cf_name_.c_str());
397
+ } else {
398
+ // Size amplification is within limits. Try reducing read
399
+ // amplification while maintaining file size ratios.
400
+ unsigned int ratio =
401
+ mutable_cf_options_.compaction_options_universal.size_ratio;
402
+
403
+ if ((c = PickCompactionToReduceSortedRuns(ratio, UINT_MAX)) != nullptr) {
404
+ ROCKS_LOG_BUFFER(log_buffer_,
405
+ "[%s] Universal: compacting for size ratio\n",
406
+ cf_name_.c_str());
407
+ } else {
408
+ // Size amplification and file size ratios are within configured limits.
409
+ // If max read amplification is exceeding configured limits, then force
410
+ // compaction without looking at filesize ratios and try to reduce
411
+ // the number of files to fewer than level0_file_num_compaction_trigger.
412
+ // This is guaranteed by NeedsCompaction()
413
+ assert(sorted_runs_.size() >=
414
+ static_cast<size_t>(
415
+ mutable_cf_options_.level0_file_num_compaction_trigger));
416
+ // Get the total number of sorted runs that are not being compacted
417
+ int num_sr_not_compacted = 0;
418
+ for (size_t i = 0; i < sorted_runs_.size(); i++) {
419
+ if (sorted_runs_[i].being_compacted == false) {
420
+ num_sr_not_compacted++;
421
+ }
422
+ }
423
+
424
+ // The number of sorted runs that are not being compacted is greater
425
+ // than the maximum allowed number of sorted runs
426
+ if (num_sr_not_compacted >
427
+ mutable_cf_options_.level0_file_num_compaction_trigger) {
428
+ unsigned int num_files =
429
+ num_sr_not_compacted -
430
+ mutable_cf_options_.level0_file_num_compaction_trigger + 1;
431
+ if ((c = PickCompactionToReduceSortedRuns(UINT_MAX, num_files)) !=
432
+ nullptr) {
433
+ ROCKS_LOG_BUFFER(log_buffer_,
434
+ "[%s] Universal: compacting for file num -- %u\n",
435
+ cf_name_.c_str(), num_files);
436
+ }
437
+ }
438
+ }
439
+ }
440
+ }
441
+
442
+ if (c == nullptr) {
443
+ if ((c = PickDeleteTriggeredCompaction()) != nullptr) {
444
+ ROCKS_LOG_BUFFER(log_buffer_,
445
+ "[%s] Universal: delete triggered compaction\n",
446
+ cf_name_.c_str());
447
+ }
448
+ }
449
+
450
+ if (c == nullptr) {
451
+ TEST_SYNC_POINT_CALLBACK(
452
+ "UniversalCompactionBuilder::PickCompaction:Return", nullptr);
453
+ return nullptr;
454
+ }
455
+
456
+ if (mutable_cf_options_.compaction_options_universal.allow_trivial_move ==
457
+ true &&
458
+ c->compaction_reason() != CompactionReason::kPeriodicCompaction) {
459
+ c->set_is_trivial_move(IsInputFilesNonOverlapping(c));
460
+ }
461
+
462
+ // validate that all the chosen files of L0 are non overlapping in time
463
+ #ifndef NDEBUG
464
+ bool is_first = true;
465
+
466
+ size_t level_index = 0U;
467
+ if (c->start_level() == 0) {
468
+ for (auto f : *c->inputs(0)) {
469
+ assert(f->fd.smallest_seqno <= f->fd.largest_seqno);
470
+ if (is_first) {
471
+ is_first = false;
472
+ }
473
+ }
474
+ level_index = 1U;
475
+ }
476
+ for (; level_index < c->num_input_levels(); level_index++) {
477
+ if (c->num_input_files(level_index) != 0) {
478
+ SequenceNumber smallest_seqno = 0U;
479
+ SequenceNumber largest_seqno = 0U;
480
+ GetSmallestLargestSeqno(*(c->inputs(level_index)), &smallest_seqno,
481
+ &largest_seqno);
482
+ if (is_first) {
483
+ is_first = false;
484
+ }
485
+ }
486
+ }
487
+ #endif
488
+ // update statistics
489
+ RecordInHistogram(ioptions_.statistics, NUM_FILES_IN_SINGLE_COMPACTION,
490
+ c->inputs(0)->size());
491
+
492
+ picker_->RegisterCompaction(c);
493
+ vstorage_->ComputeCompactionScore(ioptions_, mutable_cf_options_);
494
+
495
+ TEST_SYNC_POINT_CALLBACK("UniversalCompactionBuilder::PickCompaction:Return",
496
+ c);
497
+ return c;
498
+ }
499
+
500
+ uint32_t UniversalCompactionBuilder::GetPathId(
501
+ const ImmutableCFOptions& ioptions,
502
+ const MutableCFOptions& mutable_cf_options, uint64_t file_size) {
503
+ // Two conditions need to be satisfied:
504
+ // (1) the target path needs to be able to hold the file's size
505
+ // (2) Total size left in this and previous paths need to be not
506
+ // smaller than expected future file size before this new file is
507
+ // compacted, which is estimated based on size_ratio.
508
+ // For example, if now we are compacting files of size (1, 1, 2, 4, 8),
509
+ // we will make sure the target file, probably with size of 16, will be
510
+ // placed in a path so that eventually when new files are generated and
511
+ // compacted to (1, 1, 2, 4, 8, 16), all those files can be stored in or
512
+ // before the path we chose.
513
+ //
514
+ // TODO(sdong): now the case of multiple column families is not
515
+ // considered in this algorithm. So the target size can be violated in
516
+ // that case. We need to improve it.
517
+ uint64_t accumulated_size = 0;
518
+ uint64_t future_size =
519
+ file_size *
520
+ (100 - mutable_cf_options.compaction_options_universal.size_ratio) / 100;
521
+ uint32_t p = 0;
522
+ assert(!ioptions.cf_paths.empty());
523
+ for (; p < ioptions.cf_paths.size() - 1; p++) {
524
+ uint64_t target_size = ioptions.cf_paths[p].target_size;
525
+ if (target_size > file_size &&
526
+ accumulated_size + (target_size - file_size) > future_size) {
527
+ return p;
528
+ }
529
+ accumulated_size += target_size;
530
+ }
531
+ return p;
532
+ }
533
+
534
+ //
535
+ // Consider compaction files based on their size differences with
536
+ // the next file in time order.
537
+ //
538
+ Compaction* UniversalCompactionBuilder::PickCompactionToReduceSortedRuns(
539
+ unsigned int ratio, unsigned int max_number_of_files_to_compact) {
540
+ unsigned int min_merge_width =
541
+ mutable_cf_options_.compaction_options_universal.min_merge_width;
542
+ unsigned int max_merge_width =
543
+ mutable_cf_options_.compaction_options_universal.max_merge_width;
544
+
545
+ const SortedRun* sr = nullptr;
546
+ bool done = false;
547
+ size_t start_index = 0;
548
+ unsigned int candidate_count = 0;
549
+
550
+ unsigned int max_files_to_compact =
551
+ std::min(max_merge_width, max_number_of_files_to_compact);
552
+ min_merge_width = std::max(min_merge_width, 2U);
553
+
554
+ // Caller checks the size before executing this function. This invariant is
555
+ // important because otherwise we may have a possible integer underflow when
556
+ // dealing with unsigned types.
557
+ assert(sorted_runs_.size() > 0);
558
+
559
+ // Considers a candidate file only if it is smaller than the
560
+ // total size accumulated so far.
561
+ for (size_t loop = 0; loop < sorted_runs_.size(); loop++) {
562
+ candidate_count = 0;
563
+
564
+ // Skip files that are already being compacted
565
+ for (sr = nullptr; loop < sorted_runs_.size(); loop++) {
566
+ sr = &sorted_runs_[loop];
567
+
568
+ if (!sr->being_compacted) {
569
+ candidate_count = 1;
570
+ break;
571
+ }
572
+ char file_num_buf[kFormatFileNumberBufSize];
573
+ sr->Dump(file_num_buf, sizeof(file_num_buf));
574
+ ROCKS_LOG_BUFFER(log_buffer_,
575
+ "[%s] Universal: %s"
576
+ "[%d] being compacted, skipping",
577
+ cf_name_.c_str(), file_num_buf, loop);
578
+
579
+ sr = nullptr;
580
+ }
581
+
582
+ // This file is not being compacted. Consider it as the
583
+ // first candidate to be compacted.
584
+ uint64_t candidate_size = sr != nullptr ? sr->compensated_file_size : 0;
585
+ if (sr != nullptr) {
586
+ char file_num_buf[kFormatFileNumberBufSize];
587
+ sr->Dump(file_num_buf, sizeof(file_num_buf), true);
588
+ ROCKS_LOG_BUFFER(log_buffer_,
589
+ "[%s] Universal: Possible candidate %s[%d].",
590
+ cf_name_.c_str(), file_num_buf, loop);
591
+ }
592
+
593
+ // Check if the succeeding files need compaction.
594
+ for (size_t i = loop + 1;
595
+ candidate_count < max_files_to_compact && i < sorted_runs_.size();
596
+ i++) {
597
+ const SortedRun* succeeding_sr = &sorted_runs_[i];
598
+ if (succeeding_sr->being_compacted) {
599
+ break;
600
+ }
601
+ // Pick files if the total/last candidate file size (increased by the
602
+ // specified ratio) is still larger than the next candidate file.
603
+ // candidate_size is the total size of files picked so far with the
604
+ // default kCompactionStopStyleTotalSize; with
605
+ // kCompactionStopStyleSimilarSize, it's simply the size of the last
606
+ // picked file.
607
+ double sz = candidate_size * (100.0 + ratio) / 100.0;
608
+ if (sz < static_cast<double>(succeeding_sr->size)) {
609
+ break;
610
+ }
611
+ if (mutable_cf_options_.compaction_options_universal.stop_style ==
612
+ kCompactionStopStyleSimilarSize) {
613
+ // Similar-size stopping rule: also check the last picked file isn't
614
+ // far larger than the next candidate file.
615
+ sz = (succeeding_sr->size * (100.0 + ratio)) / 100.0;
616
+ if (sz < static_cast<double>(candidate_size)) {
617
+ // If the small file we've encountered begins a run of similar-size
618
+ // files, we'll pick them up on a future iteration of the outer
619
+ // loop. If it's some lonely straggler, it'll eventually get picked
620
+ // by the last-resort read amp strategy which disregards size ratios.
621
+ break;
622
+ }
623
+ candidate_size = succeeding_sr->compensated_file_size;
624
+ } else { // default kCompactionStopStyleTotalSize
625
+ candidate_size += succeeding_sr->compensated_file_size;
626
+ }
627
+ candidate_count++;
628
+ }
629
+
630
+ // Found a series of consecutive files that need compaction.
631
+ if (candidate_count >= (unsigned int)min_merge_width) {
632
+ start_index = loop;
633
+ done = true;
634
+ break;
635
+ } else {
636
+ for (size_t i = loop;
637
+ i < loop + candidate_count && i < sorted_runs_.size(); i++) {
638
+ const SortedRun* skipping_sr = &sorted_runs_[i];
639
+ char file_num_buf[256];
640
+ skipping_sr->DumpSizeInfo(file_num_buf, sizeof(file_num_buf), loop);
641
+ ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: Skipping %s",
642
+ cf_name_.c_str(), file_num_buf);
643
+ }
644
+ }
645
+ }
646
+ if (!done || candidate_count <= 1) {
647
+ return nullptr;
648
+ }
649
+ size_t first_index_after = start_index + candidate_count;
650
+ // Compression is enabled if files compacted earlier already reached
651
+ // size ratio of compression.
652
+ bool enable_compression = true;
653
+ int ratio_to_compress =
654
+ mutable_cf_options_.compaction_options_universal.compression_size_percent;
655
+ if (ratio_to_compress >= 0) {
656
+ uint64_t total_size = 0;
657
+ for (auto& sorted_run : sorted_runs_) {
658
+ total_size += sorted_run.compensated_file_size;
659
+ }
660
+
661
+ uint64_t older_file_size = 0;
662
+ for (size_t i = sorted_runs_.size() - 1; i >= first_index_after; i--) {
663
+ older_file_size += sorted_runs_[i].size;
664
+ if (older_file_size * 100L >= total_size * (long)ratio_to_compress) {
665
+ enable_compression = false;
666
+ break;
667
+ }
668
+ }
669
+ }
670
+
671
+ uint64_t estimated_total_size = 0;
672
+ for (unsigned int i = 0; i < first_index_after; i++) {
673
+ estimated_total_size += sorted_runs_[i].size;
674
+ }
675
+ uint32_t path_id =
676
+ GetPathId(ioptions_, mutable_cf_options_, estimated_total_size);
677
+ int start_level = sorted_runs_[start_index].level;
678
+ int output_level;
679
+ if (first_index_after == sorted_runs_.size()) {
680
+ output_level = vstorage_->num_levels() - 1;
681
+ } else if (sorted_runs_[first_index_after].level == 0) {
682
+ output_level = 0;
683
+ } else {
684
+ output_level = sorted_runs_[first_index_after].level - 1;
685
+ }
686
+
687
+ // last level is reserved for the files ingested behind
688
+ if (ioptions_.allow_ingest_behind &&
689
+ (output_level == vstorage_->num_levels() - 1)) {
690
+ assert(output_level > 1);
691
+ output_level--;
692
+ }
693
+
694
+ std::vector<CompactionInputFiles> inputs(vstorage_->num_levels());
695
+ for (size_t i = 0; i < inputs.size(); ++i) {
696
+ inputs[i].level = start_level + static_cast<int>(i);
697
+ }
698
+ for (size_t i = start_index; i < first_index_after; i++) {
699
+ auto& picking_sr = sorted_runs_[i];
700
+ if (picking_sr.level == 0) {
701
+ FileMetaData* picking_file = picking_sr.file;
702
+ inputs[0].files.push_back(picking_file);
703
+ } else {
704
+ auto& files = inputs[picking_sr.level - start_level].files;
705
+ for (auto* f : vstorage_->LevelFiles(picking_sr.level)) {
706
+ files.push_back(f);
707
+ }
708
+ }
709
+ char file_num_buf[256];
710
+ picking_sr.DumpSizeInfo(file_num_buf, sizeof(file_num_buf), i);
711
+ ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: Picking %s",
712
+ cf_name_.c_str(), file_num_buf);
713
+ }
714
+
715
+ CompactionReason compaction_reason;
716
+ if (max_number_of_files_to_compact == UINT_MAX) {
717
+ compaction_reason = CompactionReason::kUniversalSizeRatio;
718
+ } else {
719
+ compaction_reason = CompactionReason::kUniversalSortedRunNum;
720
+ }
721
+ return new Compaction(
722
+ vstorage_, ioptions_, mutable_cf_options_, mutable_db_options_,
723
+ std::move(inputs), output_level,
724
+ MaxFileSizeForLevel(mutable_cf_options_, output_level,
725
+ kCompactionStyleUniversal),
726
+ LLONG_MAX, path_id,
727
+ GetCompressionType(ioptions_, vstorage_, mutable_cf_options_, start_level,
728
+ 1, enable_compression),
729
+ GetCompressionOptions(mutable_cf_options_, vstorage_, start_level,
730
+ enable_compression),
731
+ /* max_subcompactions */ 0, /* grandparents */ {}, /* is manual */ false,
732
+ score_, false /* deletion_compaction */, compaction_reason);
733
+ }
734
+
735
+ // Look at overall size amplification. If size amplification
736
+ // exceeeds the configured value, then do a compaction
737
+ // of the candidate files all the way upto the earliest
738
+ // base file (overrides configured values of file-size ratios,
739
+ // min_merge_width and max_merge_width).
740
+ //
741
+ Compaction* UniversalCompactionBuilder::PickCompactionToReduceSizeAmp() {
742
+ // percentage flexibility while reducing size amplification
743
+ uint64_t ratio = mutable_cf_options_.compaction_options_universal
744
+ .max_size_amplification_percent;
745
+
746
+ unsigned int candidate_count = 0;
747
+ uint64_t candidate_size = 0;
748
+ size_t start_index = 0;
749
+ const SortedRun* sr = nullptr;
750
+
751
+ assert(!sorted_runs_.empty());
752
+ if (sorted_runs_.back().being_compacted) {
753
+ return nullptr;
754
+ }
755
+
756
+ // Skip files that are already being compacted
757
+ for (size_t loop = 0; loop + 1 < sorted_runs_.size(); loop++) {
758
+ sr = &sorted_runs_[loop];
759
+ if (!sr->being_compacted) {
760
+ start_index = loop; // Consider this as the first candidate.
761
+ break;
762
+ }
763
+ char file_num_buf[kFormatFileNumberBufSize];
764
+ sr->Dump(file_num_buf, sizeof(file_num_buf), true);
765
+ ROCKS_LOG_BUFFER(log_buffer_,
766
+ "[%s] Universal: skipping %s[%d] compacted %s",
767
+ cf_name_.c_str(), file_num_buf, loop,
768
+ " cannot be a candidate to reduce size amp.\n");
769
+ sr = nullptr;
770
+ }
771
+
772
+ if (sr == nullptr) {
773
+ return nullptr; // no candidate files
774
+ }
775
+ {
776
+ char file_num_buf[kFormatFileNumberBufSize];
777
+ sr->Dump(file_num_buf, sizeof(file_num_buf), true);
778
+ ROCKS_LOG_BUFFER(
779
+ log_buffer_,
780
+ "[%s] Universal: First candidate %s[%" ROCKSDB_PRIszt "] %s",
781
+ cf_name_.c_str(), file_num_buf, start_index, " to reduce size amp.\n");
782
+ }
783
+
784
+ // keep adding up all the remaining files
785
+ for (size_t loop = start_index; loop + 1 < sorted_runs_.size(); loop++) {
786
+ sr = &sorted_runs_[loop];
787
+ if (sr->being_compacted) {
788
+ char file_num_buf[kFormatFileNumberBufSize];
789
+ sr->Dump(file_num_buf, sizeof(file_num_buf), true);
790
+ ROCKS_LOG_BUFFER(
791
+ log_buffer_, "[%s] Universal: Possible candidate %s[%d] %s",
792
+ cf_name_.c_str(), file_num_buf, start_index,
793
+ " is already being compacted. No size amp reduction possible.\n");
794
+ return nullptr;
795
+ }
796
+ candidate_size += sr->compensated_file_size;
797
+ candidate_count++;
798
+ }
799
+ if (candidate_count == 0) {
800
+ return nullptr;
801
+ }
802
+
803
+ // size of earliest file
804
+ uint64_t earliest_file_size = sorted_runs_.back().size;
805
+
806
+ // size amplification = percentage of additional size
807
+ if (candidate_size * 100 < ratio * earliest_file_size) {
808
+ ROCKS_LOG_BUFFER(
809
+ log_buffer_,
810
+ "[%s] Universal: size amp not needed. newer-files-total-size %" PRIu64
811
+ " earliest-file-size %" PRIu64,
812
+ cf_name_.c_str(), candidate_size, earliest_file_size);
813
+ return nullptr;
814
+ } else {
815
+ ROCKS_LOG_BUFFER(
816
+ log_buffer_,
817
+ "[%s] Universal: size amp needed. newer-files-total-size %" PRIu64
818
+ " earliest-file-size %" PRIu64,
819
+ cf_name_.c_str(), candidate_size, earliest_file_size);
820
+ }
821
+ return PickCompactionToOldest(start_index,
822
+ CompactionReason::kUniversalSizeAmplification);
823
+ }
824
+
825
+ // Pick files marked for compaction. Typically, files are marked by
826
+ // CompactOnDeleteCollector due to the presence of tombstones.
827
+ Compaction* UniversalCompactionBuilder::PickDeleteTriggeredCompaction() {
828
+ CompactionInputFiles start_level_inputs;
829
+ int output_level;
830
+ std::vector<CompactionInputFiles> inputs;
831
+
832
+ if (vstorage_->num_levels() == 1) {
833
+ // This is single level universal. Since we're basically trying to reclaim
834
+ // space by processing files marked for compaction due to high tombstone
835
+ // density, let's do the same thing as compaction to reduce size amp which
836
+ // has the same goals.
837
+ int start_index = -1;
838
+
839
+ start_level_inputs.level = 0;
840
+ start_level_inputs.files.clear();
841
+ output_level = 0;
842
+ // Find the first file marked for compaction. Ignore the last file
843
+ for (size_t loop = 0; loop + 1 < sorted_runs_.size(); loop++) {
844
+ SortedRun* sr = &sorted_runs_[loop];
845
+ if (sr->being_compacted) {
846
+ continue;
847
+ }
848
+ FileMetaData* f = vstorage_->LevelFiles(0)[loop];
849
+ if (f->marked_for_compaction) {
850
+ start_level_inputs.files.push_back(f);
851
+ start_index =
852
+ static_cast<int>(loop); // Consider this as the first candidate.
853
+ break;
854
+ }
855
+ }
856
+ if (start_index < 0) {
857
+ // Either no file marked, or they're already being compacted
858
+ return nullptr;
859
+ }
860
+
861
+ for (size_t loop = start_index + 1; loop < sorted_runs_.size(); loop++) {
862
+ SortedRun* sr = &sorted_runs_[loop];
863
+ if (sr->being_compacted) {
864
+ break;
865
+ }
866
+
867
+ FileMetaData* f = vstorage_->LevelFiles(0)[loop];
868
+ start_level_inputs.files.push_back(f);
869
+ }
870
+ if (start_level_inputs.size() <= 1) {
871
+ // If only the last file in L0 is marked for compaction, ignore it
872
+ return nullptr;
873
+ }
874
+ inputs.push_back(start_level_inputs);
875
+ } else {
876
+ int start_level;
877
+
878
+ // For multi-level universal, the strategy is to make this look more like
879
+ // leveled. We pick one of the files marked for compaction and compact with
880
+ // overlapping files in the adjacent level.
881
+ picker_->PickFilesMarkedForCompaction(cf_name_, vstorage_, &start_level,
882
+ &output_level, &start_level_inputs);
883
+ if (start_level_inputs.empty()) {
884
+ return nullptr;
885
+ }
886
+
887
+ // Pick the first non-empty level after the start_level
888
+ for (output_level = start_level + 1; output_level < vstorage_->num_levels();
889
+ output_level++) {
890
+ if (vstorage_->NumLevelFiles(output_level) != 0) {
891
+ break;
892
+ }
893
+ }
894
+
895
+ // If all higher levels are empty, pick the highest level as output level
896
+ if (output_level == vstorage_->num_levels()) {
897
+ if (start_level == 0) {
898
+ output_level = vstorage_->num_levels() - 1;
899
+ } else {
900
+ // If start level is non-zero and all higher levels are empty, this
901
+ // compaction will translate into a trivial move. Since the idea is
902
+ // to reclaim space and trivial move doesn't help with that, we
903
+ // skip compaction in this case and return nullptr
904
+ return nullptr;
905
+ }
906
+ }
907
+ if (ioptions_.allow_ingest_behind &&
908
+ output_level == vstorage_->num_levels() - 1) {
909
+ assert(output_level > 1);
910
+ output_level--;
911
+ }
912
+
913
+ if (output_level != 0) {
914
+ if (start_level == 0) {
915
+ if (!picker_->GetOverlappingL0Files(vstorage_, &start_level_inputs,
916
+ output_level, nullptr)) {
917
+ return nullptr;
918
+ }
919
+ }
920
+
921
+ CompactionInputFiles output_level_inputs;
922
+ int parent_index = -1;
923
+
924
+ output_level_inputs.level = output_level;
925
+ if (!picker_->SetupOtherInputs(cf_name_, mutable_cf_options_, vstorage_,
926
+ &start_level_inputs, &output_level_inputs,
927
+ &parent_index, -1)) {
928
+ return nullptr;
929
+ }
930
+ inputs.push_back(start_level_inputs);
931
+ if (!output_level_inputs.empty()) {
932
+ inputs.push_back(output_level_inputs);
933
+ }
934
+ if (picker_->FilesRangeOverlapWithCompaction(inputs, output_level)) {
935
+ return nullptr;
936
+ }
937
+ } else {
938
+ inputs.push_back(start_level_inputs);
939
+ }
940
+ }
941
+
942
+ uint64_t estimated_total_size = 0;
943
+ // Use size of the output level as estimated file size
944
+ for (FileMetaData* f : vstorage_->LevelFiles(output_level)) {
945
+ estimated_total_size += f->fd.GetFileSize();
946
+ }
947
+ uint32_t path_id =
948
+ GetPathId(ioptions_, mutable_cf_options_, estimated_total_size);
949
+ return new Compaction(
950
+ vstorage_, ioptions_, mutable_cf_options_, mutable_db_options_,
951
+ std::move(inputs), output_level,
952
+ MaxFileSizeForLevel(mutable_cf_options_, output_level,
953
+ kCompactionStyleUniversal),
954
+ /* max_grandparent_overlap_bytes */ LLONG_MAX, path_id,
955
+ GetCompressionType(ioptions_, vstorage_, mutable_cf_options_,
956
+ output_level, 1),
957
+ GetCompressionOptions(mutable_cf_options_, vstorage_, output_level),
958
+ /* max_subcompactions */ 0, /* grandparents */ {}, /* is manual */ false,
959
+ score_, false /* deletion_compaction */,
960
+ CompactionReason::kFilesMarkedForCompaction);
961
+ }
962
+
963
+ Compaction* UniversalCompactionBuilder::PickCompactionToOldest(
964
+ size_t start_index, CompactionReason compaction_reason) {
965
+ assert(start_index < sorted_runs_.size());
966
+
967
+ // Estimate total file size
968
+ uint64_t estimated_total_size = 0;
969
+ for (size_t loop = start_index; loop < sorted_runs_.size(); loop++) {
970
+ estimated_total_size += sorted_runs_[loop].size;
971
+ }
972
+ uint32_t path_id =
973
+ GetPathId(ioptions_, mutable_cf_options_, estimated_total_size);
974
+ int start_level = sorted_runs_[start_index].level;
975
+
976
+ std::vector<CompactionInputFiles> inputs(vstorage_->num_levels());
977
+ for (size_t i = 0; i < inputs.size(); ++i) {
978
+ inputs[i].level = start_level + static_cast<int>(i);
979
+ }
980
+ for (size_t loop = start_index; loop < sorted_runs_.size(); loop++) {
981
+ auto& picking_sr = sorted_runs_[loop];
982
+ if (picking_sr.level == 0) {
983
+ FileMetaData* f = picking_sr.file;
984
+ inputs[0].files.push_back(f);
985
+ } else {
986
+ auto& files = inputs[picking_sr.level - start_level].files;
987
+ for (auto* f : vstorage_->LevelFiles(picking_sr.level)) {
988
+ files.push_back(f);
989
+ }
990
+ }
991
+ std::string comp_reason_print_string;
992
+ if (compaction_reason == CompactionReason::kPeriodicCompaction) {
993
+ comp_reason_print_string = "periodic compaction";
994
+ } else if (compaction_reason ==
995
+ CompactionReason::kUniversalSizeAmplification) {
996
+ comp_reason_print_string = "size amp";
997
+ } else {
998
+ assert(false);
999
+ comp_reason_print_string = "unknown: ";
1000
+ comp_reason_print_string.append(
1001
+ std::to_string(static_cast<int>(compaction_reason)));
1002
+ }
1003
+
1004
+ char file_num_buf[256];
1005
+ picking_sr.DumpSizeInfo(file_num_buf, sizeof(file_num_buf), loop);
1006
+ ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: %s picking %s",
1007
+ cf_name_.c_str(), comp_reason_print_string.c_str(),
1008
+ file_num_buf);
1009
+ }
1010
+
1011
+ // output files at the bottom most level, unless it's reserved
1012
+ int output_level = vstorage_->num_levels() - 1;
1013
+ // last level is reserved for the files ingested behind
1014
+ if (ioptions_.allow_ingest_behind) {
1015
+ assert(output_level > 1);
1016
+ output_level--;
1017
+ }
1018
+
1019
+ // We never check size for
1020
+ // compaction_options_universal.compression_size_percent,
1021
+ // because we always compact all the files, so always compress.
1022
+ return new Compaction(
1023
+ vstorage_, ioptions_, mutable_cf_options_, mutable_db_options_,
1024
+ std::move(inputs), output_level,
1025
+ MaxFileSizeForLevel(mutable_cf_options_, output_level,
1026
+ kCompactionStyleUniversal),
1027
+ LLONG_MAX, path_id,
1028
+ GetCompressionType(ioptions_, vstorage_, mutable_cf_options_,
1029
+ output_level, 1, true /* enable_compression */),
1030
+ GetCompressionOptions(mutable_cf_options_, vstorage_, output_level,
1031
+ true /* enable_compression */),
1032
+ /* max_subcompactions */ 0, /* grandparents */ {}, /* is manual */ false,
1033
+ score_, false /* deletion_compaction */, compaction_reason);
1034
+ }
1035
+
1036
+ Compaction* UniversalCompactionBuilder::PickPeriodicCompaction() {
1037
+ ROCKS_LOG_BUFFER(log_buffer_, "[%s] Universal: Periodic Compaction",
1038
+ cf_name_.c_str());
1039
+
1040
+ // In universal compaction, sorted runs contain older data are almost always
1041
+ // generated earlier too. To simplify the problem, we just try to trigger
1042
+ // a full compaction. We start from the oldest sorted run and include
1043
+ // all sorted runs, until we hit a sorted already being compacted.
1044
+ // Since usually the largest (which is usually the oldest) sorted run is
1045
+ // included anyway, doing a full compaction won't increase write
1046
+ // amplification much.
1047
+
1048
+ // Get some information from marked files to check whether a file is
1049
+ // included in the compaction.
1050
+
1051
+ size_t start_index = sorted_runs_.size();
1052
+ while (start_index > 0 && !sorted_runs_[start_index - 1].being_compacted) {
1053
+ start_index--;
1054
+ }
1055
+ if (start_index == sorted_runs_.size()) {
1056
+ return nullptr;
1057
+ }
1058
+
1059
+ // There is a rare corner case where we can't pick up all the files
1060
+ // because some files are being compacted and we end up with picking files
1061
+ // but none of them need periodic compaction. Unless we simply recompact
1062
+ // the last sorted run (either the last level or last L0 file), we would just
1063
+ // execute the compaction, in order to simplify the logic.
1064
+ if (start_index == sorted_runs_.size() - 1) {
1065
+ bool included_file_marked = false;
1066
+ int start_level = sorted_runs_[start_index].level;
1067
+ FileMetaData* start_file = sorted_runs_[start_index].file;
1068
+ for (const std::pair<int, FileMetaData*>& level_file_pair :
1069
+ vstorage_->FilesMarkedForPeriodicCompaction()) {
1070
+ if (start_level != 0) {
1071
+ // Last sorted run is a level
1072
+ if (start_level == level_file_pair.first) {
1073
+ included_file_marked = true;
1074
+ break;
1075
+ }
1076
+ } else {
1077
+ // Last sorted run is a L0 file.
1078
+ if (start_file == level_file_pair.second) {
1079
+ included_file_marked = true;
1080
+ break;
1081
+ }
1082
+ }
1083
+ }
1084
+ if (!included_file_marked) {
1085
+ ROCKS_LOG_BUFFER(log_buffer_,
1086
+ "[%s] Universal: Cannot form a compaction covering file "
1087
+ "marked for periodic compaction",
1088
+ cf_name_.c_str());
1089
+ return nullptr;
1090
+ }
1091
+ }
1092
+
1093
+ Compaction* c = PickCompactionToOldest(start_index,
1094
+ CompactionReason::kPeriodicCompaction);
1095
+
1096
+ TEST_SYNC_POINT_CALLBACK(
1097
+ "UniversalCompactionPicker::PickPeriodicCompaction:Return", c);
1098
+
1099
+ return c;
1100
+ }
1101
+ } // namespace ROCKSDB_NAMESPACE
1102
+
1103
+ #endif // !ROCKSDB_LITE