@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,1118 @@
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
+ #include "db/blob/blob_index.h"
7
+ #include "db/db_impl/db_impl.h"
8
+ #include "db/db_test_util.h"
9
+ #include "db/dbformat.h"
10
+ #include "db/version_set.h"
11
+ #include "db/write_batch_internal.h"
12
+ #include "file/filename.h"
13
+ #include "memtable/hash_linklist_rep.h"
14
+ #include "monitoring/statistics.h"
15
+ #include "rocksdb/cache.h"
16
+ #include "rocksdb/compaction_filter.h"
17
+ #include "rocksdb/db.h"
18
+ #include "rocksdb/env.h"
19
+ #include "rocksdb/filter_policy.h"
20
+ #include "rocksdb/options.h"
21
+ #include "rocksdb/perf_context.h"
22
+ #include "rocksdb/slice.h"
23
+ #include "rocksdb/slice_transform.h"
24
+ #include "rocksdb/table.h"
25
+ #include "rocksdb/table_properties.h"
26
+ #include "test_util/sync_point.h"
27
+ #include "test_util/testharness.h"
28
+ #include "test_util/testutil.h"
29
+ #include "util/hash.h"
30
+ #include "util/mutexlock.h"
31
+ #include "util/rate_limiter.h"
32
+ #include "util/string_util.h"
33
+ #include "utilities/merge_operators.h"
34
+
35
+ #ifndef ROCKSDB_LITE
36
+
37
+ namespace ROCKSDB_NAMESPACE {
38
+
39
+ class EventListenerTest : public DBTestBase {
40
+ public:
41
+ EventListenerTest() : DBTestBase("/listener_test", /*env_do_fsync=*/true) {}
42
+
43
+ static std::string BlobStr(uint64_t blob_file_number, uint64_t offset,
44
+ uint64_t size) {
45
+ std::string blob_index;
46
+ BlobIndex::EncodeBlob(&blob_index, blob_file_number, offset, size,
47
+ kNoCompression);
48
+ return blob_index;
49
+ }
50
+
51
+ const size_t k110KB = 110 << 10;
52
+ };
53
+
54
+ struct TestPropertiesCollector
55
+ : public ROCKSDB_NAMESPACE::TablePropertiesCollector {
56
+ ROCKSDB_NAMESPACE::Status AddUserKey(
57
+ const ROCKSDB_NAMESPACE::Slice& /*key*/,
58
+ const ROCKSDB_NAMESPACE::Slice& /*value*/,
59
+ ROCKSDB_NAMESPACE::EntryType /*type*/,
60
+ ROCKSDB_NAMESPACE::SequenceNumber /*seq*/,
61
+ uint64_t /*file_size*/) override {
62
+ return Status::OK();
63
+ }
64
+ ROCKSDB_NAMESPACE::Status Finish(
65
+ ROCKSDB_NAMESPACE::UserCollectedProperties* properties) override {
66
+ properties->insert({"0", "1"});
67
+ return Status::OK();
68
+ }
69
+
70
+ const char* Name() const override { return "TestTablePropertiesCollector"; }
71
+
72
+ ROCKSDB_NAMESPACE::UserCollectedProperties GetReadableProperties()
73
+ const override {
74
+ ROCKSDB_NAMESPACE::UserCollectedProperties ret;
75
+ ret["2"] = "3";
76
+ return ret;
77
+ }
78
+ };
79
+
80
+ class TestPropertiesCollectorFactory : public TablePropertiesCollectorFactory {
81
+ public:
82
+ TablePropertiesCollector* CreateTablePropertiesCollector(
83
+ TablePropertiesCollectorFactory::Context /*context*/) override {
84
+ return new TestPropertiesCollector;
85
+ }
86
+ const char* Name() const override { return "TestTablePropertiesCollector"; }
87
+ };
88
+
89
+ class TestCompactionListener : public EventListener {
90
+ public:
91
+ explicit TestCompactionListener(EventListenerTest* test) : test_(test) {}
92
+
93
+ void OnCompactionCompleted(DB *db, const CompactionJobInfo& ci) override {
94
+ std::lock_guard<std::mutex> lock(mutex_);
95
+ compacted_dbs_.push_back(db);
96
+ ASSERT_GT(ci.input_files.size(), 0U);
97
+ ASSERT_EQ(ci.input_files.size(), ci.input_file_infos.size());
98
+
99
+ for (size_t i = 0; i < ci.input_file_infos.size(); ++i) {
100
+ ASSERT_EQ(ci.input_file_infos[i].level, ci.base_input_level);
101
+ ASSERT_EQ(ci.input_file_infos[i].file_number,
102
+ TableFileNameToNumber(ci.input_files[i]));
103
+ }
104
+
105
+ ASSERT_GT(ci.output_files.size(), 0U);
106
+ ASSERT_EQ(ci.output_files.size(), ci.output_file_infos.size());
107
+
108
+ ASSERT_TRUE(test_);
109
+ ASSERT_EQ(test_->db_, db);
110
+
111
+ std::vector<std::vector<FileMetaData>> files_by_level;
112
+ test_->dbfull()->TEST_GetFilesMetaData(test_->handles_[ci.cf_id],
113
+ &files_by_level);
114
+ ASSERT_GT(files_by_level.size(), ci.output_level);
115
+
116
+ for (size_t i = 0; i < ci.output_file_infos.size(); ++i) {
117
+ ASSERT_EQ(ci.output_file_infos[i].level, ci.output_level);
118
+ ASSERT_EQ(ci.output_file_infos[i].file_number,
119
+ TableFileNameToNumber(ci.output_files[i]));
120
+
121
+ auto it = std::find_if(
122
+ files_by_level[ci.output_level].begin(),
123
+ files_by_level[ci.output_level].end(), [&](const FileMetaData& meta) {
124
+ return meta.fd.GetNumber() == ci.output_file_infos[i].file_number;
125
+ });
126
+ ASSERT_NE(it, files_by_level[ci.output_level].end());
127
+
128
+ ASSERT_EQ(ci.output_file_infos[i].oldest_blob_file_number,
129
+ it->oldest_blob_file_number);
130
+ }
131
+
132
+ ASSERT_EQ(db->GetEnv()->GetThreadID(), ci.thread_id);
133
+ ASSERT_GT(ci.thread_id, 0U);
134
+
135
+ for (auto fl : {ci.input_files, ci.output_files}) {
136
+ for (auto fn : fl) {
137
+ auto it = ci.table_properties.find(fn);
138
+ ASSERT_NE(it, ci.table_properties.end());
139
+ auto tp = it->second;
140
+ ASSERT_TRUE(tp != nullptr);
141
+ ASSERT_EQ(tp->user_collected_properties.find("0")->second, "1");
142
+ }
143
+ }
144
+ }
145
+
146
+ EventListenerTest* test_;
147
+ std::vector<DB*> compacted_dbs_;
148
+ std::mutex mutex_;
149
+ };
150
+
151
+ TEST_F(EventListenerTest, OnSingleDBCompactionTest) {
152
+ const int kTestKeySize = 16;
153
+ const int kTestValueSize = 984;
154
+ const int kEntrySize = kTestKeySize + kTestValueSize;
155
+ const int kEntriesPerBuffer = 100;
156
+ const int kNumL0Files = 4;
157
+
158
+ Options options;
159
+ options.env = CurrentOptions().env;
160
+ options.create_if_missing = true;
161
+ options.write_buffer_size = kEntrySize * kEntriesPerBuffer;
162
+ options.compaction_style = kCompactionStyleLevel;
163
+ options.target_file_size_base = options.write_buffer_size;
164
+ options.max_bytes_for_level_base = options.target_file_size_base * 2;
165
+ options.max_bytes_for_level_multiplier = 2;
166
+ options.compression = kNoCompression;
167
+ #ifdef ROCKSDB_USING_THREAD_STATUS
168
+ options.enable_thread_tracking = true;
169
+ #endif // ROCKSDB_USING_THREAD_STATUS
170
+ options.level0_file_num_compaction_trigger = kNumL0Files;
171
+ options.table_properties_collector_factories.push_back(
172
+ std::make_shared<TestPropertiesCollectorFactory>());
173
+
174
+ TestCompactionListener* listener = new TestCompactionListener(this);
175
+ options.listeners.emplace_back(listener);
176
+ std::vector<std::string> cf_names = {
177
+ "pikachu", "ilya", "muromec", "dobrynia",
178
+ "nikitich", "alyosha", "popovich"};
179
+ CreateAndReopenWithCF(cf_names, options);
180
+ ASSERT_OK(Put(1, "pikachu", std::string(90000, 'p')));
181
+
182
+ WriteBatch batch;
183
+ ASSERT_OK(WriteBatchInternal::PutBlobIndex(&batch, 1, "ditto",
184
+ BlobStr(123, 0, 1 << 10)));
185
+ ASSERT_OK(dbfull()->Write(WriteOptions(), &batch));
186
+
187
+ ASSERT_OK(Put(2, "ilya", std::string(90000, 'i')));
188
+ ASSERT_OK(Put(3, "muromec", std::string(90000, 'm')));
189
+ ASSERT_OK(Put(4, "dobrynia", std::string(90000, 'd')));
190
+ ASSERT_OK(Put(5, "nikitich", std::string(90000, 'n')));
191
+ ASSERT_OK(Put(6, "alyosha", std::string(90000, 'a')));
192
+ ASSERT_OK(Put(7, "popovich", std::string(90000, 'p')));
193
+ for (int i = 1; i < 8; ++i) {
194
+ ASSERT_OK(Flush(i));
195
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
196
+ ASSERT_OK(dbfull()->CompactRange(CompactRangeOptions(), handles_[i],
197
+ nullptr, nullptr));
198
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
199
+ }
200
+
201
+ ASSERT_EQ(listener->compacted_dbs_.size(), cf_names.size());
202
+ for (size_t i = 0; i < cf_names.size(); ++i) {
203
+ ASSERT_EQ(listener->compacted_dbs_[i], db_);
204
+ }
205
+ }
206
+
207
+ // This simple Listener can only handle one flush at a time.
208
+ class TestFlushListener : public EventListener {
209
+ public:
210
+ TestFlushListener(Env* env, EventListenerTest* test)
211
+ : slowdown_count(0), stop_count(0), db_closed(), env_(env), test_(test) {
212
+ db_closed = false;
213
+ }
214
+
215
+ virtual ~TestFlushListener() {
216
+ prev_fc_info_.status.PermitUncheckedError(); // Ignore the status
217
+ }
218
+ void OnTableFileCreated(
219
+ const TableFileCreationInfo& info) override {
220
+ // remember the info for later checking the FlushJobInfo.
221
+ prev_fc_info_ = info;
222
+ ASSERT_GT(info.db_name.size(), 0U);
223
+ ASSERT_GT(info.cf_name.size(), 0U);
224
+ ASSERT_GT(info.file_path.size(), 0U);
225
+ ASSERT_GT(info.job_id, 0);
226
+ ASSERT_GT(info.table_properties.data_size, 0U);
227
+ ASSERT_GT(info.table_properties.raw_key_size, 0U);
228
+ ASSERT_GT(info.table_properties.raw_value_size, 0U);
229
+ ASSERT_GT(info.table_properties.num_data_blocks, 0U);
230
+ ASSERT_GT(info.table_properties.num_entries, 0U);
231
+ ASSERT_EQ(info.file_checksum, kUnknownFileChecksum);
232
+ ASSERT_EQ(info.file_checksum_func_name, kUnknownFileChecksumFuncName);
233
+
234
+ #ifdef ROCKSDB_USING_THREAD_STATUS
235
+ // Verify the id of the current thread that created this table
236
+ // file matches the id of any active flush or compaction thread.
237
+ uint64_t thread_id = env_->GetThreadID();
238
+ std::vector<ThreadStatus> thread_list;
239
+ ASSERT_OK(env_->GetThreadList(&thread_list));
240
+ bool found_match = false;
241
+ for (auto thread_status : thread_list) {
242
+ if (thread_status.operation_type == ThreadStatus::OP_FLUSH ||
243
+ thread_status.operation_type == ThreadStatus::OP_COMPACTION) {
244
+ if (thread_id == thread_status.thread_id) {
245
+ found_match = true;
246
+ break;
247
+ }
248
+ }
249
+ }
250
+ ASSERT_TRUE(found_match);
251
+ #endif // ROCKSDB_USING_THREAD_STATUS
252
+ }
253
+
254
+ void OnFlushCompleted(
255
+ DB* db, const FlushJobInfo& info) override {
256
+ flushed_dbs_.push_back(db);
257
+ flushed_column_family_names_.push_back(info.cf_name);
258
+ if (info.triggered_writes_slowdown) {
259
+ slowdown_count++;
260
+ }
261
+ if (info.triggered_writes_stop) {
262
+ stop_count++;
263
+ }
264
+ // verify whether the previously created file matches the flushed file.
265
+ ASSERT_EQ(prev_fc_info_.db_name, db->GetName());
266
+ ASSERT_EQ(prev_fc_info_.cf_name, info.cf_name);
267
+ ASSERT_EQ(prev_fc_info_.job_id, info.job_id);
268
+ ASSERT_EQ(prev_fc_info_.file_path, info.file_path);
269
+ ASSERT_EQ(TableFileNameToNumber(info.file_path), info.file_number);
270
+
271
+ // Note: the following chunk relies on the notification pertaining to the
272
+ // database pointed to by DBTestBase::db_, and is thus bypassed when
273
+ // that assumption does not hold (see the test case MultiDBMultiListeners
274
+ // below).
275
+ ASSERT_TRUE(test_);
276
+ if (db == test_->db_) {
277
+ std::vector<std::vector<FileMetaData>> files_by_level;
278
+ test_->dbfull()->TEST_GetFilesMetaData(test_->handles_[info.cf_id],
279
+ &files_by_level);
280
+
281
+ ASSERT_FALSE(files_by_level.empty());
282
+ auto it = std::find_if(files_by_level[0].begin(), files_by_level[0].end(),
283
+ [&](const FileMetaData& meta) {
284
+ return meta.fd.GetNumber() == info.file_number;
285
+ });
286
+ ASSERT_NE(it, files_by_level[0].end());
287
+ ASSERT_EQ(info.oldest_blob_file_number, it->oldest_blob_file_number);
288
+ }
289
+
290
+ ASSERT_EQ(db->GetEnv()->GetThreadID(), info.thread_id);
291
+ ASSERT_GT(info.thread_id, 0U);
292
+ ASSERT_EQ(info.table_properties.user_collected_properties.find("0")->second,
293
+ "1");
294
+ }
295
+
296
+ std::vector<std::string> flushed_column_family_names_;
297
+ std::vector<DB*> flushed_dbs_;
298
+ int slowdown_count;
299
+ int stop_count;
300
+ bool db_closing;
301
+ std::atomic_bool db_closed;
302
+ TableFileCreationInfo prev_fc_info_;
303
+
304
+ protected:
305
+ Env* env_;
306
+ EventListenerTest* test_;
307
+ };
308
+
309
+ TEST_F(EventListenerTest, OnSingleDBFlushTest) {
310
+ Options options;
311
+ options.env = CurrentOptions().env;
312
+ options.write_buffer_size = k110KB;
313
+ #ifdef ROCKSDB_USING_THREAD_STATUS
314
+ options.enable_thread_tracking = true;
315
+ #endif // ROCKSDB_USING_THREAD_STATUS
316
+ TestFlushListener* listener = new TestFlushListener(options.env, this);
317
+ options.listeners.emplace_back(listener);
318
+ std::vector<std::string> cf_names = {
319
+ "pikachu", "ilya", "muromec", "dobrynia",
320
+ "nikitich", "alyosha", "popovich"};
321
+ options.table_properties_collector_factories.push_back(
322
+ std::make_shared<TestPropertiesCollectorFactory>());
323
+ CreateAndReopenWithCF(cf_names, options);
324
+
325
+ ASSERT_OK(Put(1, "pikachu", std::string(90000, 'p')));
326
+
327
+ WriteBatch batch;
328
+ ASSERT_OK(WriteBatchInternal::PutBlobIndex(&batch, 1, "ditto",
329
+ BlobStr(456, 0, 1 << 10)));
330
+ ASSERT_OK(dbfull()->Write(WriteOptions(), &batch));
331
+
332
+ ASSERT_OK(Put(2, "ilya", std::string(90000, 'i')));
333
+ ASSERT_OK(Put(3, "muromec", std::string(90000, 'm')));
334
+ ASSERT_OK(Put(4, "dobrynia", std::string(90000, 'd')));
335
+ ASSERT_OK(Put(5, "nikitich", std::string(90000, 'n')));
336
+ ASSERT_OK(Put(6, "alyosha", std::string(90000, 'a')));
337
+ ASSERT_OK(Put(7, "popovich", std::string(90000, 'p')));
338
+ for (int i = 1; i < 8; ++i) {
339
+ ASSERT_OK(Flush(i));
340
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
341
+ ASSERT_EQ(listener->flushed_dbs_.size(), i);
342
+ ASSERT_EQ(listener->flushed_column_family_names_.size(), i);
343
+ }
344
+
345
+ // make sure callback functions are called in the right order
346
+ for (size_t i = 0; i < cf_names.size(); ++i) {
347
+ ASSERT_EQ(listener->flushed_dbs_[i], db_);
348
+ ASSERT_EQ(listener->flushed_column_family_names_[i], cf_names[i]);
349
+ }
350
+ }
351
+
352
+ TEST_F(EventListenerTest, MultiCF) {
353
+ Options options;
354
+ options.env = CurrentOptions().env;
355
+ options.write_buffer_size = k110KB;
356
+ #ifdef ROCKSDB_USING_THREAD_STATUS
357
+ options.enable_thread_tracking = true;
358
+ #endif // ROCKSDB_USING_THREAD_STATUS
359
+ TestFlushListener* listener = new TestFlushListener(options.env, this);
360
+ options.listeners.emplace_back(listener);
361
+ options.table_properties_collector_factories.push_back(
362
+ std::make_shared<TestPropertiesCollectorFactory>());
363
+ std::vector<std::string> cf_names = {
364
+ "pikachu", "ilya", "muromec", "dobrynia",
365
+ "nikitich", "alyosha", "popovich"};
366
+ CreateAndReopenWithCF(cf_names, options);
367
+
368
+ ASSERT_OK(Put(1, "pikachu", std::string(90000, 'p')));
369
+ ASSERT_OK(Put(2, "ilya", std::string(90000, 'i')));
370
+ ASSERT_OK(Put(3, "muromec", std::string(90000, 'm')));
371
+ ASSERT_OK(Put(4, "dobrynia", std::string(90000, 'd')));
372
+ ASSERT_OK(Put(5, "nikitich", std::string(90000, 'n')));
373
+ ASSERT_OK(Put(6, "alyosha", std::string(90000, 'a')));
374
+ ASSERT_OK(Put(7, "popovich", std::string(90000, 'p')));
375
+ for (int i = 1; i < 8; ++i) {
376
+ ASSERT_OK(Flush(i));
377
+ ASSERT_EQ(listener->flushed_dbs_.size(), i);
378
+ ASSERT_EQ(listener->flushed_column_family_names_.size(), i);
379
+ }
380
+
381
+ // make sure callback functions are called in the right order
382
+ for (size_t i = 0; i < cf_names.size(); i++) {
383
+ ASSERT_EQ(listener->flushed_dbs_[i], db_);
384
+ ASSERT_EQ(listener->flushed_column_family_names_[i], cf_names[i]);
385
+ }
386
+ }
387
+
388
+ TEST_F(EventListenerTest, MultiDBMultiListeners) {
389
+ Options options;
390
+ options.env = CurrentOptions().env;
391
+ #ifdef ROCKSDB_USING_THREAD_STATUS
392
+ options.enable_thread_tracking = true;
393
+ #endif // ROCKSDB_USING_THREAD_STATUS
394
+ options.table_properties_collector_factories.push_back(
395
+ std::make_shared<TestPropertiesCollectorFactory>());
396
+ std::vector<TestFlushListener*> listeners;
397
+ const int kNumDBs = 5;
398
+ const int kNumListeners = 10;
399
+ for (int i = 0; i < kNumListeners; ++i) {
400
+ listeners.emplace_back(new TestFlushListener(options.env, this));
401
+ }
402
+
403
+ std::vector<std::string> cf_names = {
404
+ "pikachu", "ilya", "muromec", "dobrynia",
405
+ "nikitich", "alyosha", "popovich"};
406
+
407
+ options.create_if_missing = true;
408
+ for (int i = 0; i < kNumListeners; ++i) {
409
+ options.listeners.emplace_back(listeners[i]);
410
+ }
411
+ DBOptions db_opts(options);
412
+ ColumnFamilyOptions cf_opts(options);
413
+
414
+ std::vector<DB*> dbs;
415
+ std::vector<std::vector<ColumnFamilyHandle *>> vec_handles;
416
+
417
+ for (int d = 0; d < kNumDBs; ++d) {
418
+ ASSERT_OK(DestroyDB(dbname_ + ToString(d), options));
419
+ DB* db;
420
+ std::vector<ColumnFamilyHandle*> handles;
421
+ ASSERT_OK(DB::Open(options, dbname_ + ToString(d), &db));
422
+ for (size_t c = 0; c < cf_names.size(); ++c) {
423
+ ColumnFamilyHandle* handle;
424
+ ASSERT_OK(db->CreateColumnFamily(cf_opts, cf_names[c], &handle));
425
+ handles.push_back(handle);
426
+ }
427
+
428
+ vec_handles.push_back(std::move(handles));
429
+ dbs.push_back(db);
430
+ }
431
+
432
+ for (int d = 0; d < kNumDBs; ++d) {
433
+ for (size_t c = 0; c < cf_names.size(); ++c) {
434
+ ASSERT_OK(dbs[d]->Put(WriteOptions(), vec_handles[d][c],
435
+ cf_names[c], cf_names[c]));
436
+ }
437
+ }
438
+
439
+ for (size_t c = 0; c < cf_names.size(); ++c) {
440
+ for (int d = 0; d < kNumDBs; ++d) {
441
+ ASSERT_OK(dbs[d]->Flush(FlushOptions(), vec_handles[d][c]));
442
+ ASSERT_OK(
443
+ static_cast_with_check<DBImpl>(dbs[d])->TEST_WaitForFlushMemTable());
444
+ }
445
+ }
446
+
447
+ for (auto* listener : listeners) {
448
+ int pos = 0;
449
+ for (size_t c = 0; c < cf_names.size(); ++c) {
450
+ for (int d = 0; d < kNumDBs; ++d) {
451
+ ASSERT_EQ(listener->flushed_dbs_[pos], dbs[d]);
452
+ ASSERT_EQ(listener->flushed_column_family_names_[pos], cf_names[c]);
453
+ pos++;
454
+ }
455
+ }
456
+ }
457
+
458
+
459
+ for (auto handles : vec_handles) {
460
+ for (auto h : handles) {
461
+ delete h;
462
+ }
463
+ handles.clear();
464
+ }
465
+ vec_handles.clear();
466
+
467
+ for (auto db : dbs) {
468
+ delete db;
469
+ }
470
+ }
471
+
472
+ TEST_F(EventListenerTest, DisableBGCompaction) {
473
+ Options options;
474
+ options.env = CurrentOptions().env;
475
+ #ifdef ROCKSDB_USING_THREAD_STATUS
476
+ options.enable_thread_tracking = true;
477
+ #endif // ROCKSDB_USING_THREAD_STATUS
478
+ TestFlushListener* listener = new TestFlushListener(options.env, this);
479
+ const int kCompactionTrigger = 1;
480
+ const int kSlowdownTrigger = 5;
481
+ const int kStopTrigger = 100;
482
+ options.level0_file_num_compaction_trigger = kCompactionTrigger;
483
+ options.level0_slowdown_writes_trigger = kSlowdownTrigger;
484
+ options.level0_stop_writes_trigger = kStopTrigger;
485
+ options.max_write_buffer_number = 10;
486
+ options.listeners.emplace_back(listener);
487
+ // BG compaction is disabled. Number of L0 files will simply keeps
488
+ // increasing in this test.
489
+ options.compaction_style = kCompactionStyleNone;
490
+ options.compression = kNoCompression;
491
+ options.write_buffer_size = 100000; // Small write buffer
492
+ options.table_properties_collector_factories.push_back(
493
+ std::make_shared<TestPropertiesCollectorFactory>());
494
+
495
+ CreateAndReopenWithCF({"pikachu"}, options);
496
+ ColumnFamilyMetaData cf_meta;
497
+ db_->GetColumnFamilyMetaData(handles_[1], &cf_meta);
498
+
499
+ // keep writing until writes are forced to stop.
500
+ for (int i = 0; static_cast<int>(cf_meta.file_count) < kSlowdownTrigger * 10;
501
+ ++i) {
502
+ ASSERT_OK(Put(1, ToString(i), std::string(10000, 'x'), WriteOptions()));
503
+ FlushOptions fo;
504
+ fo.allow_write_stall = true;
505
+ ASSERT_OK(db_->Flush(fo, handles_[1]));
506
+ db_->GetColumnFamilyMetaData(handles_[1], &cf_meta);
507
+ }
508
+ ASSERT_GE(listener->slowdown_count, kSlowdownTrigger * 9);
509
+ }
510
+
511
+ class TestCompactionReasonListener : public EventListener {
512
+ public:
513
+ void OnCompactionCompleted(DB* /*db*/, const CompactionJobInfo& ci) override {
514
+ std::lock_guard<std::mutex> lock(mutex_);
515
+ compaction_reasons_.push_back(ci.compaction_reason);
516
+ }
517
+
518
+ std::vector<CompactionReason> compaction_reasons_;
519
+ std::mutex mutex_;
520
+ };
521
+
522
+ TEST_F(EventListenerTest, CompactionReasonLevel) {
523
+ Options options;
524
+ options.env = CurrentOptions().env;
525
+ options.create_if_missing = true;
526
+ options.memtable_factory.reset(
527
+ new SpecialSkipListFactory(DBTestBase::kNumKeysByGenerateNewRandomFile));
528
+
529
+ TestCompactionReasonListener* listener = new TestCompactionReasonListener();
530
+ options.listeners.emplace_back(listener);
531
+
532
+ options.level0_file_num_compaction_trigger = 4;
533
+ options.compaction_style = kCompactionStyleLevel;
534
+
535
+ DestroyAndReopen(options);
536
+ Random rnd(301);
537
+
538
+ // Write 4 files in L0
539
+ for (int i = 0; i < 4; i++) {
540
+ GenerateNewRandomFile(&rnd);
541
+ }
542
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
543
+
544
+ ASSERT_EQ(listener->compaction_reasons_.size(), 1);
545
+ ASSERT_EQ(listener->compaction_reasons_[0],
546
+ CompactionReason::kLevelL0FilesNum);
547
+
548
+ DestroyAndReopen(options);
549
+
550
+ // Write 3 non-overlapping files in L0
551
+ for (int k = 1; k <= 30; k++) {
552
+ ASSERT_OK(Put(Key(k), Key(k)));
553
+ if (k % 10 == 0) {
554
+ Flush();
555
+ }
556
+ }
557
+
558
+ // Do a trivial move from L0 -> L1
559
+ ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
560
+
561
+ options.max_bytes_for_level_base = 1;
562
+ Close();
563
+ listener->compaction_reasons_.clear();
564
+ Reopen(options);
565
+
566
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
567
+ ASSERT_GT(listener->compaction_reasons_.size(), 1);
568
+
569
+ for (auto compaction_reason : listener->compaction_reasons_) {
570
+ ASSERT_EQ(compaction_reason, CompactionReason::kLevelMaxLevelSize);
571
+ }
572
+
573
+ options.disable_auto_compactions = true;
574
+ Close();
575
+ listener->compaction_reasons_.clear();
576
+ Reopen(options);
577
+
578
+ ASSERT_OK(Put("key", "value"));
579
+ CompactRangeOptions cro;
580
+ cro.bottommost_level_compaction = BottommostLevelCompaction::kForceOptimized;
581
+ ASSERT_OK(db_->CompactRange(cro, nullptr, nullptr));
582
+ ASSERT_GT(listener->compaction_reasons_.size(), 0);
583
+ for (auto compaction_reason : listener->compaction_reasons_) {
584
+ ASSERT_EQ(compaction_reason, CompactionReason::kManualCompaction);
585
+ }
586
+ }
587
+
588
+ TEST_F(EventListenerTest, CompactionReasonUniversal) {
589
+ Options options;
590
+ options.env = CurrentOptions().env;
591
+ options.create_if_missing = true;
592
+ options.memtable_factory.reset(
593
+ new SpecialSkipListFactory(DBTestBase::kNumKeysByGenerateNewRandomFile));
594
+
595
+ TestCompactionReasonListener* listener = new TestCompactionReasonListener();
596
+ options.listeners.emplace_back(listener);
597
+
598
+ options.compaction_style = kCompactionStyleUniversal;
599
+
600
+ Random rnd(301);
601
+
602
+ options.level0_file_num_compaction_trigger = 8;
603
+ options.compaction_options_universal.max_size_amplification_percent = 100000;
604
+ options.compaction_options_universal.size_ratio = 100000;
605
+ DestroyAndReopen(options);
606
+ listener->compaction_reasons_.clear();
607
+
608
+ // Write 8 files in L0
609
+ for (int i = 0; i < 8; i++) {
610
+ GenerateNewRandomFile(&rnd);
611
+ }
612
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
613
+
614
+ ASSERT_GT(listener->compaction_reasons_.size(), 0);
615
+ for (auto compaction_reason : listener->compaction_reasons_) {
616
+ ASSERT_EQ(compaction_reason, CompactionReason::kUniversalSizeRatio);
617
+ }
618
+
619
+ options.level0_file_num_compaction_trigger = 8;
620
+ options.compaction_options_universal.max_size_amplification_percent = 1;
621
+ options.compaction_options_universal.size_ratio = 100000;
622
+
623
+ DestroyAndReopen(options);
624
+ listener->compaction_reasons_.clear();
625
+
626
+ // Write 8 files in L0
627
+ for (int i = 0; i < 8; i++) {
628
+ GenerateNewRandomFile(&rnd);
629
+ }
630
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
631
+
632
+ ASSERT_GT(listener->compaction_reasons_.size(), 0);
633
+ for (auto compaction_reason : listener->compaction_reasons_) {
634
+ ASSERT_EQ(compaction_reason, CompactionReason::kUniversalSizeAmplification);
635
+ }
636
+
637
+ options.disable_auto_compactions = true;
638
+ Close();
639
+ listener->compaction_reasons_.clear();
640
+ Reopen(options);
641
+
642
+ ASSERT_OK(db_->CompactRange(CompactRangeOptions(), nullptr, nullptr));
643
+
644
+ ASSERT_GT(listener->compaction_reasons_.size(), 0);
645
+ for (auto compaction_reason : listener->compaction_reasons_) {
646
+ ASSERT_EQ(compaction_reason, CompactionReason::kManualCompaction);
647
+ }
648
+ }
649
+
650
+ TEST_F(EventListenerTest, CompactionReasonFIFO) {
651
+ Options options;
652
+ options.env = CurrentOptions().env;
653
+ options.create_if_missing = true;
654
+ options.memtable_factory.reset(
655
+ new SpecialSkipListFactory(DBTestBase::kNumKeysByGenerateNewRandomFile));
656
+
657
+ TestCompactionReasonListener* listener = new TestCompactionReasonListener();
658
+ options.listeners.emplace_back(listener);
659
+
660
+ options.level0_file_num_compaction_trigger = 4;
661
+ options.compaction_style = kCompactionStyleFIFO;
662
+ options.compaction_options_fifo.max_table_files_size = 1;
663
+
664
+ DestroyAndReopen(options);
665
+ Random rnd(301);
666
+
667
+ // Write 4 files in L0
668
+ for (int i = 0; i < 4; i++) {
669
+ GenerateNewRandomFile(&rnd);
670
+ }
671
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
672
+
673
+ ASSERT_GT(listener->compaction_reasons_.size(), 0);
674
+ for (auto compaction_reason : listener->compaction_reasons_) {
675
+ ASSERT_EQ(compaction_reason, CompactionReason::kFIFOMaxSize);
676
+ }
677
+ }
678
+
679
+ class TableFileCreationListener : public EventListener {
680
+ public:
681
+ class TestEnv : public EnvWrapper {
682
+ public:
683
+ explicit TestEnv(Env* t) : EnvWrapper(t) {}
684
+
685
+ void SetStatus(Status s) { status_ = s; }
686
+
687
+ Status NewWritableFile(const std::string& fname,
688
+ std::unique_ptr<WritableFile>* result,
689
+ const EnvOptions& options) override {
690
+ if (fname.size() > 4 && fname.substr(fname.size() - 4) == ".sst") {
691
+ if (!status_.ok()) {
692
+ return status_;
693
+ }
694
+ }
695
+ return target()->NewWritableFile(fname, result, options);
696
+ }
697
+
698
+ private:
699
+ Status status_;
700
+ };
701
+
702
+ TableFileCreationListener() {
703
+ for (int i = 0; i < 2; i++) {
704
+ started_[i] = finished_[i] = failure_[i] = 0;
705
+ }
706
+ }
707
+
708
+ int Index(TableFileCreationReason reason) {
709
+ int idx;
710
+ switch (reason) {
711
+ case TableFileCreationReason::kFlush:
712
+ idx = 0;
713
+ break;
714
+ case TableFileCreationReason::kCompaction:
715
+ idx = 1;
716
+ break;
717
+ default:
718
+ idx = -1;
719
+ }
720
+ return idx;
721
+ }
722
+
723
+ void CheckAndResetCounters(int flush_started, int flush_finished,
724
+ int flush_failure, int compaction_started,
725
+ int compaction_finished, int compaction_failure) {
726
+ ASSERT_EQ(started_[0], flush_started);
727
+ ASSERT_EQ(finished_[0], flush_finished);
728
+ ASSERT_EQ(failure_[0], flush_failure);
729
+ ASSERT_EQ(started_[1], compaction_started);
730
+ ASSERT_EQ(finished_[1], compaction_finished);
731
+ ASSERT_EQ(failure_[1], compaction_failure);
732
+ for (int i = 0; i < 2; i++) {
733
+ started_[i] = finished_[i] = failure_[i] = 0;
734
+ }
735
+ }
736
+
737
+ void OnTableFileCreationStarted(
738
+ const TableFileCreationBriefInfo& info) override {
739
+ int idx = Index(info.reason);
740
+ if (idx >= 0) {
741
+ started_[idx]++;
742
+ }
743
+ ASSERT_GT(info.db_name.size(), 0U);
744
+ ASSERT_GT(info.cf_name.size(), 0U);
745
+ ASSERT_GT(info.file_path.size(), 0U);
746
+ ASSERT_GT(info.job_id, 0);
747
+ }
748
+
749
+ void OnTableFileCreated(const TableFileCreationInfo& info) override {
750
+ int idx = Index(info.reason);
751
+ if (idx >= 0) {
752
+ finished_[idx]++;
753
+ }
754
+ ASSERT_GT(info.db_name.size(), 0U);
755
+ ASSERT_GT(info.cf_name.size(), 0U);
756
+ ASSERT_GT(info.file_path.size(), 0U);
757
+ ASSERT_GT(info.job_id, 0);
758
+ ASSERT_EQ(info.file_checksum, kUnknownFileChecksum);
759
+ ASSERT_EQ(info.file_checksum_func_name, kUnknownFileChecksumFuncName);
760
+ if (info.status.ok()) {
761
+ ASSERT_GT(info.table_properties.data_size, 0U);
762
+ ASSERT_GT(info.table_properties.raw_key_size, 0U);
763
+ ASSERT_GT(info.table_properties.raw_value_size, 0U);
764
+ ASSERT_GT(info.table_properties.num_data_blocks, 0U);
765
+ ASSERT_GT(info.table_properties.num_entries, 0U);
766
+ } else {
767
+ if (idx >= 0) {
768
+ failure_[idx]++;
769
+ }
770
+ }
771
+ }
772
+
773
+ int started_[2];
774
+ int finished_[2];
775
+ int failure_[2];
776
+ };
777
+
778
+ TEST_F(EventListenerTest, TableFileCreationListenersTest) {
779
+ auto listener = std::make_shared<TableFileCreationListener>();
780
+ Options options;
781
+ std::unique_ptr<TableFileCreationListener::TestEnv> test_env(
782
+ new TableFileCreationListener::TestEnv(CurrentOptions().env));
783
+ options.create_if_missing = true;
784
+ options.listeners.push_back(listener);
785
+ options.env = test_env.get();
786
+ DestroyAndReopen(options);
787
+
788
+ ASSERT_OK(Put("foo", "aaa"));
789
+ ASSERT_OK(Put("bar", "bbb"));
790
+ ASSERT_OK(Flush());
791
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
792
+ listener->CheckAndResetCounters(1, 1, 0, 0, 0, 0);
793
+ ASSERT_OK(Put("foo", "aaa1"));
794
+ ASSERT_OK(Put("bar", "bbb1"));
795
+ test_env->SetStatus(Status::NotSupported("not supported"));
796
+ ASSERT_NOK(Flush());
797
+ listener->CheckAndResetCounters(1, 1, 1, 0, 0, 0);
798
+ test_env->SetStatus(Status::OK());
799
+
800
+ Reopen(options);
801
+ ASSERT_OK(Put("foo", "aaa2"));
802
+ ASSERT_OK(Put("bar", "bbb2"));
803
+ ASSERT_OK(Flush());
804
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
805
+ listener->CheckAndResetCounters(1, 1, 0, 0, 0, 0);
806
+
807
+ const Slice kRangeStart = "a";
808
+ const Slice kRangeEnd = "z";
809
+ ASSERT_OK(
810
+ dbfull()->CompactRange(CompactRangeOptions(), &kRangeStart, &kRangeEnd));
811
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
812
+ listener->CheckAndResetCounters(0, 0, 0, 1, 1, 0);
813
+
814
+ ASSERT_OK(Put("foo", "aaa3"));
815
+ ASSERT_OK(Put("bar", "bbb3"));
816
+ ASSERT_OK(Flush());
817
+ test_env->SetStatus(Status::NotSupported("not supported"));
818
+ ASSERT_NOK(
819
+ dbfull()->CompactRange(CompactRangeOptions(), &kRangeStart, &kRangeEnd));
820
+ ASSERT_NOK(dbfull()->TEST_WaitForCompact());
821
+ listener->CheckAndResetCounters(1, 1, 0, 1, 1, 1);
822
+ Close();
823
+ }
824
+
825
+ class MemTableSealedListener : public EventListener {
826
+ private:
827
+ SequenceNumber latest_seq_number_;
828
+ public:
829
+ MemTableSealedListener() {}
830
+ void OnMemTableSealed(const MemTableInfo& info) override {
831
+ latest_seq_number_ = info.first_seqno;
832
+ }
833
+
834
+ void OnFlushCompleted(DB* /*db*/,
835
+ const FlushJobInfo& flush_job_info) override {
836
+ ASSERT_LE(flush_job_info.smallest_seqno, latest_seq_number_);
837
+ }
838
+ };
839
+
840
+ TEST_F(EventListenerTest, MemTableSealedListenerTest) {
841
+ auto listener = std::make_shared<MemTableSealedListener>();
842
+ Options options;
843
+ options.env = CurrentOptions().env;
844
+ options.create_if_missing = true;
845
+ options.listeners.push_back(listener);
846
+ DestroyAndReopen(options);
847
+
848
+ for (unsigned int i = 0; i < 10; i++) {
849
+ std::string tag = std::to_string(i);
850
+ ASSERT_OK(Put("foo"+tag, "aaa"));
851
+ ASSERT_OK(Put("bar"+tag, "bbb"));
852
+
853
+ ASSERT_OK(Flush());
854
+ }
855
+ }
856
+
857
+ class ColumnFamilyHandleDeletionStartedListener : public EventListener {
858
+ private:
859
+ std::vector<std::string> cfs_;
860
+ int counter;
861
+
862
+ public:
863
+ explicit ColumnFamilyHandleDeletionStartedListener(
864
+ const std::vector<std::string>& cfs)
865
+ : cfs_(cfs), counter(0) {
866
+ cfs_.insert(cfs_.begin(), kDefaultColumnFamilyName);
867
+ }
868
+ void OnColumnFamilyHandleDeletionStarted(
869
+ ColumnFamilyHandle* handle) override {
870
+ ASSERT_EQ(cfs_[handle->GetID()], handle->GetName());
871
+ counter++;
872
+ }
873
+ int getCounter() { return counter; }
874
+ };
875
+
876
+ TEST_F(EventListenerTest, ColumnFamilyHandleDeletionStartedListenerTest) {
877
+ std::vector<std::string> cfs{"pikachu", "eevee", "Mewtwo"};
878
+ auto listener =
879
+ std::make_shared<ColumnFamilyHandleDeletionStartedListener>(cfs);
880
+ Options options;
881
+ options.env = CurrentOptions().env;
882
+ options.create_if_missing = true;
883
+ options.listeners.push_back(listener);
884
+ CreateAndReopenWithCF(cfs, options);
885
+ ASSERT_EQ(handles_.size(), 4);
886
+ delete handles_[3];
887
+ delete handles_[2];
888
+ delete handles_[1];
889
+ handles_.resize(1);
890
+ ASSERT_EQ(listener->getCounter(), 3);
891
+ }
892
+
893
+ class BackgroundErrorListener : public EventListener {
894
+ private:
895
+ SpecialEnv* env_;
896
+ int counter_;
897
+
898
+ public:
899
+ BackgroundErrorListener(SpecialEnv* env) : env_(env), counter_(0) {}
900
+
901
+ void OnBackgroundError(BackgroundErrorReason /*reason*/,
902
+ Status* bg_error) override {
903
+ if (counter_ == 0) {
904
+ // suppress the first error and disable write-dropping such that a retry
905
+ // can succeed.
906
+ *bg_error = Status::OK();
907
+ env_->drop_writes_.store(false, std::memory_order_release);
908
+ env_->SetMockSleep(false);
909
+ }
910
+ ++counter_;
911
+ }
912
+
913
+ int counter() { return counter_; }
914
+ };
915
+
916
+ TEST_F(EventListenerTest, BackgroundErrorListenerFailedFlushTest) {
917
+ auto listener = std::make_shared<BackgroundErrorListener>(env_);
918
+ Options options;
919
+ options.create_if_missing = true;
920
+ options.env = env_;
921
+ options.listeners.push_back(listener);
922
+ options.memtable_factory.reset(new SpecialSkipListFactory(1));
923
+ options.paranoid_checks = true;
924
+ DestroyAndReopen(options);
925
+
926
+ // the usual TEST_WaitForFlushMemTable() doesn't work for failed flushes, so
927
+ // forge a custom one for the failed flush case.
928
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->LoadDependency(
929
+ {{"DBImpl::BGWorkFlush:done",
930
+ "EventListenerTest:BackgroundErrorListenerFailedFlushTest:1"}});
931
+ ROCKSDB_NAMESPACE::SyncPoint::GetInstance()->EnableProcessing();
932
+
933
+ env_->drop_writes_.store(true, std::memory_order_release);
934
+ env_->SetMockSleep();
935
+
936
+ ASSERT_OK(Put("key0", "val"));
937
+ ASSERT_OK(Put("key1", "val"));
938
+ TEST_SYNC_POINT("EventListenerTest:BackgroundErrorListenerFailedFlushTest:1");
939
+ ASSERT_EQ(1, listener->counter());
940
+ ASSERT_OK(Put("key2", "val"));
941
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
942
+ ASSERT_EQ(1, NumTableFilesAtLevel(0));
943
+ }
944
+
945
+ TEST_F(EventListenerTest, BackgroundErrorListenerFailedCompactionTest) {
946
+ auto listener = std::make_shared<BackgroundErrorListener>(env_);
947
+ Options options;
948
+ options.create_if_missing = true;
949
+ options.disable_auto_compactions = true;
950
+ options.env = env_;
951
+ options.level0_file_num_compaction_trigger = 2;
952
+ options.listeners.push_back(listener);
953
+ options.memtable_factory.reset(new SpecialSkipListFactory(2));
954
+ options.paranoid_checks = true;
955
+ DestroyAndReopen(options);
956
+
957
+ // third iteration triggers the second memtable's flush
958
+ for (int i = 0; i < 3; ++i) {
959
+ ASSERT_OK(Put("key0", "val"));
960
+ if (i > 0) {
961
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
962
+ }
963
+ ASSERT_OK(Put("key1", "val"));
964
+ }
965
+ ASSERT_EQ(2, NumTableFilesAtLevel(0));
966
+
967
+ env_->drop_writes_.store(true, std::memory_order_release);
968
+ env_->SetMockSleep();
969
+ ASSERT_OK(dbfull()->SetOptions({{"disable_auto_compactions", "false"}}));
970
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
971
+ ASSERT_EQ(1, listener->counter());
972
+
973
+ // trigger flush so compaction is triggered again; this time it succeeds
974
+ // The previous failed compaction may get retried automatically, so we may
975
+ // be left with 0 or 1 files in level 1, depending on when the retry gets
976
+ // scheduled
977
+ ASSERT_OK(Put("key0", "val"));
978
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
979
+ ASSERT_OK(dbfull()->TEST_WaitForCompact());
980
+ ASSERT_LE(1, NumTableFilesAtLevel(0));
981
+ }
982
+
983
+ class TestFileOperationListener : public EventListener {
984
+ public:
985
+ TestFileOperationListener() {
986
+ file_reads_.store(0);
987
+ file_reads_success_.store(0);
988
+ file_writes_.store(0);
989
+ file_writes_success_.store(0);
990
+ file_flushes_.store(0);
991
+ file_flushes_success_.store(0);
992
+ file_closes_.store(0);
993
+ file_closes_success_.store(0);
994
+ file_syncs_.store(0);
995
+ file_syncs_success_.store(0);
996
+ file_truncates_.store(0);
997
+ file_truncates_success_.store(0);
998
+ }
999
+
1000
+ void OnFileReadFinish(const FileOperationInfo& info) override {
1001
+ ++file_reads_;
1002
+ if (info.status.ok()) {
1003
+ ++file_reads_success_;
1004
+ }
1005
+ ReportDuration(info);
1006
+ }
1007
+
1008
+ void OnFileWriteFinish(const FileOperationInfo& info) override {
1009
+ ++file_writes_;
1010
+ if (info.status.ok()) {
1011
+ ++file_writes_success_;
1012
+ }
1013
+ ReportDuration(info);
1014
+ }
1015
+
1016
+ void OnFileFlushFinish(const FileOperationInfo& info) override {
1017
+ ++file_flushes_;
1018
+ if (info.status.ok()) {
1019
+ ++file_flushes_success_;
1020
+ }
1021
+ ReportDuration(info);
1022
+ }
1023
+
1024
+ void OnFileCloseFinish(const FileOperationInfo& info) override {
1025
+ ++file_closes_;
1026
+ if (info.status.ok()) {
1027
+ ++file_closes_success_;
1028
+ }
1029
+ ReportDuration(info);
1030
+ }
1031
+
1032
+ void OnFileSyncFinish(const FileOperationInfo& info) override {
1033
+ ++file_syncs_;
1034
+ if (info.status.ok()) {
1035
+ ++file_syncs_success_;
1036
+ }
1037
+ ReportDuration(info);
1038
+ }
1039
+
1040
+ void OnFileTruncateFinish(const FileOperationInfo& info) override {
1041
+ ++file_truncates_;
1042
+ if (info.status.ok()) {
1043
+ ++file_truncates_success_;
1044
+ }
1045
+ ReportDuration(info);
1046
+ }
1047
+
1048
+ bool ShouldBeNotifiedOnFileIO() override { return true; }
1049
+
1050
+ std::atomic<size_t> file_reads_;
1051
+ std::atomic<size_t> file_reads_success_;
1052
+ std::atomic<size_t> file_writes_;
1053
+ std::atomic<size_t> file_writes_success_;
1054
+ std::atomic<size_t> file_flushes_;
1055
+ std::atomic<size_t> file_flushes_success_;
1056
+ std::atomic<size_t> file_closes_;
1057
+ std::atomic<size_t> file_closes_success_;
1058
+ std::atomic<size_t> file_syncs_;
1059
+ std::atomic<size_t> file_syncs_success_;
1060
+ std::atomic<size_t> file_truncates_;
1061
+ std::atomic<size_t> file_truncates_success_;
1062
+
1063
+ private:
1064
+ void ReportDuration(const FileOperationInfo& info) const {
1065
+ ASSERT_GT(info.duration.count(), 0);
1066
+ }
1067
+ };
1068
+
1069
+ TEST_F(EventListenerTest, OnFileOperationTest) {
1070
+ Options options;
1071
+ options.env = CurrentOptions().env;
1072
+ options.create_if_missing = true;
1073
+
1074
+ TestFileOperationListener* listener = new TestFileOperationListener();
1075
+ options.listeners.emplace_back(listener);
1076
+
1077
+ options.use_direct_io_for_flush_and_compaction = false;
1078
+ Status s = TryReopen(options);
1079
+ if (s.IsInvalidArgument()) {
1080
+ options.use_direct_io_for_flush_and_compaction = false;
1081
+ } else {
1082
+ ASSERT_OK(s);
1083
+ }
1084
+ DestroyAndReopen(options);
1085
+ ASSERT_OK(Put("foo", "aaa"));
1086
+ ASSERT_OK(dbfull()->Flush(FlushOptions()));
1087
+ ASSERT_OK(dbfull()->TEST_WaitForFlushMemTable());
1088
+ ASSERT_GE(listener->file_writes_.load(),
1089
+ listener->file_writes_success_.load());
1090
+ ASSERT_GT(listener->file_writes_.load(), 0);
1091
+ ASSERT_GE(listener->file_flushes_.load(),
1092
+ listener->file_flushes_success_.load());
1093
+ ASSERT_GT(listener->file_flushes_.load(), 0);
1094
+ Close();
1095
+
1096
+ Reopen(options);
1097
+ ASSERT_GE(listener->file_reads_.load(), listener->file_reads_success_.load());
1098
+ ASSERT_GT(listener->file_reads_.load(), 0);
1099
+ ASSERT_GE(listener->file_closes_.load(),
1100
+ listener->file_closes_success_.load());
1101
+ ASSERT_GT(listener->file_closes_.load(), 0);
1102
+ ASSERT_GE(listener->file_syncs_.load(), listener->file_syncs_success_.load());
1103
+ ASSERT_GT(listener->file_syncs_.load(), 0);
1104
+ if (true == options.use_direct_io_for_flush_and_compaction) {
1105
+ ASSERT_GE(listener->file_truncates_.load(),
1106
+ listener->file_truncates_success_.load());
1107
+ ASSERT_GT(listener->file_truncates_.load(), 0);
1108
+ }
1109
+ }
1110
+
1111
+ } // namespace ROCKSDB_NAMESPACE
1112
+
1113
+ #endif // ROCKSDB_LITE
1114
+
1115
+ int main(int argc, char** argv) {
1116
+ ::testing::InitGoogleTest(&argc, argv);
1117
+ return RUN_ALL_TESTS();
1118
+ }