@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,1497 @@
1
+ // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2
+ // vim: ts=8 sw=2 smarttab
3
+ // Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
4
+ #include "rocksdb/utilities/env_librados.h"
5
+ #include "util/random.h"
6
+ #include <mutex>
7
+ #include <cstdlib>
8
+
9
+ namespace ROCKSDB_NAMESPACE {
10
+ /* GLOBAL DIFINE */
11
+ // #define DEBUG
12
+ #ifdef DEBUG
13
+ #include <cstdio>
14
+ #include <sys/syscall.h>
15
+ #include <unistd.h>
16
+ #define LOG_DEBUG(...) do{\
17
+ printf("[%ld:%s:%i:%s]", syscall(SYS_gettid), __FILE__, __LINE__, __FUNCTION__);\
18
+ printf(__VA_ARGS__);\
19
+ }while(0)
20
+ #else
21
+ #define LOG_DEBUG(...)
22
+ #endif
23
+
24
+ /* GLOBAL CONSTANT */
25
+ const char *default_db_name = "default_envlibrados_db";
26
+ const char *default_pool_name = "default_envlibrados_pool";
27
+ const char *default_config_path = "CEPH_CONFIG_PATH"; // the env variable name of ceph configure file
28
+ // maximum dir/file that can store in the fs
29
+ const int MAX_ITEMS_IN_FS = 1 << 30;
30
+ // root dir tag
31
+ const std::string ROOT_DIR_KEY = "/";
32
+ const std::string DIR_ID_VALUE = "<DIR>";
33
+
34
+ /**
35
+ * @brief convert error code to status
36
+ * @details Convert internal linux error code to Status
37
+ *
38
+ * @param r [description]
39
+ * @return [description]
40
+ */
41
+ Status err_to_status(int r)
42
+ {
43
+ switch (r) {
44
+ case 0:
45
+ return Status::OK();
46
+ case -ENOENT:
47
+ return Status::IOError();
48
+ case -ENODATA:
49
+ case -ENOTDIR:
50
+ return Status::NotFound(Status::kNone);
51
+ case -EINVAL:
52
+ return Status::InvalidArgument(Status::kNone);
53
+ case -EIO:
54
+ return Status::IOError(Status::kNone);
55
+ default:
56
+ // FIXME :(
57
+ assert(0 == "unrecognized error code");
58
+ return Status::NotSupported(Status::kNone);
59
+ }
60
+ }
61
+
62
+ /**
63
+ * @brief split file path into dir path and file name
64
+ * @details
65
+ * Because rocksdb only need a 2-level structure (dir/file), all input path will be shortened to dir/file format
66
+ * For example:
67
+ * b/c => dir '/b', file 'c'
68
+ * /a/b/c => dir '/b', file 'c'
69
+ *
70
+ * @param fn [description]
71
+ * @param dir [description]
72
+ * @param file [description]
73
+ */
74
+ void split(const std::string &fn, std::string *dir, std::string *file) {
75
+ LOG_DEBUG("[IN]%s\n", fn.c_str());
76
+ int pos = fn.size() - 1;
77
+ while ('/' == fn[pos]) --pos;
78
+ size_t fstart = fn.rfind('/', pos);
79
+ *file = fn.substr(fstart + 1, pos - fstart);
80
+
81
+ pos = fstart;
82
+ while (pos >= 0 && '/' == fn[pos]) --pos;
83
+
84
+ if (pos < 0) {
85
+ *dir = "/";
86
+ } else {
87
+ size_t dstart = fn.rfind('/', pos);
88
+ *dir = fn.substr(dstart + 1, pos - dstart);
89
+ *dir = std::string("/") + *dir;
90
+ }
91
+
92
+ LOG_DEBUG("[OUT]%s | %s\n", dir->c_str(), file->c_str());
93
+ }
94
+
95
+ // A file abstraction for reading sequentially through a file
96
+ class LibradosSequentialFile : public SequentialFile {
97
+ librados::IoCtx * _io_ctx;
98
+ std::string _fid;
99
+ std::string _hint;
100
+ int _offset;
101
+ public:
102
+ LibradosSequentialFile(librados::IoCtx * io_ctx, std::string fid, std::string hint):
103
+ _io_ctx(io_ctx), _fid(fid), _hint(hint), _offset(0) {}
104
+
105
+ ~LibradosSequentialFile() {}
106
+
107
+ /**
108
+ * @brief read file
109
+ * @details
110
+ * Read up to "n" bytes from the file. "scratch[0..n-1]" may be
111
+ * written by this routine. Sets "*result" to the data that was
112
+ * read (including if fewer than "n" bytes were successfully read).
113
+ * May set "*result" to point at data in "scratch[0..n-1]", so
114
+ * "scratch[0..n-1]" must be live when "*result" is used.
115
+ * If an error was encountered, returns a non-OK status.
116
+ *
117
+ * REQUIRES: External synchronization
118
+ *
119
+ * @param n [description]
120
+ * @param result [description]
121
+ * @param scratch [description]
122
+ * @return [description]
123
+ */
124
+ Status Read(size_t n, Slice* result, char* scratch) {
125
+ LOG_DEBUG("[IN]%i\n", (int)n);
126
+ librados::bufferlist buffer;
127
+ Status s;
128
+ int r = _io_ctx->read(_fid, buffer, n, _offset);
129
+ if (r >= 0) {
130
+ buffer.begin().copy(r, scratch);
131
+ *result = Slice(scratch, r);
132
+ _offset += r;
133
+ s = Status::OK();
134
+ } else {
135
+ s = err_to_status(r);
136
+ if (s == Status::IOError()) {
137
+ *result = Slice();
138
+ s = Status::OK();
139
+ }
140
+ }
141
+ LOG_DEBUG("[OUT]%s, %i, %s\n", s.ToString().c_str(), (int)r, buffer.c_str());
142
+ return s;
143
+ }
144
+
145
+ /**
146
+ * @brief skip "n" bytes from the file
147
+ * @details
148
+ * Skip "n" bytes from the file. This is guaranteed to be no
149
+ * slower that reading the same data, but may be faster.
150
+ *
151
+ * If end of file is reached, skipping will stop at the end of the
152
+ * file, and Skip will return OK.
153
+ *
154
+ * REQUIRES: External synchronization
155
+ *
156
+ * @param n [description]
157
+ * @return [description]
158
+ */
159
+ Status Skip(uint64_t n) {
160
+ _offset += n;
161
+ return Status::OK();
162
+ }
163
+
164
+ /**
165
+ * @brief noop
166
+ * @details
167
+ * rocksdb has it's own caching capabilities that we should be able to use,
168
+ * without relying on a cache here. This can safely be a no-op.
169
+ *
170
+ * @param offset [description]
171
+ * @param length [description]
172
+ *
173
+ * @return [description]
174
+ */
175
+ Status InvalidateCache(size_t offset, size_t length) {
176
+ return Status::OK();
177
+ }
178
+ };
179
+
180
+ // A file abstraction for randomly reading the contents of a file.
181
+ class LibradosRandomAccessFile : public RandomAccessFile {
182
+ librados::IoCtx * _io_ctx;
183
+ std::string _fid;
184
+ std::string _hint;
185
+ public:
186
+ LibradosRandomAccessFile(librados::IoCtx * io_ctx, std::string fid, std::string hint):
187
+ _io_ctx(io_ctx), _fid(fid), _hint(hint) {}
188
+
189
+ ~LibradosRandomAccessFile() {}
190
+
191
+ /**
192
+ * @brief read file
193
+ * @details similar to LibradosSequentialFile::Read
194
+ *
195
+ * @param offset [description]
196
+ * @param n [description]
197
+ * @param result [description]
198
+ * @param scratch [description]
199
+ * @return [description]
200
+ */
201
+ Status Read(uint64_t offset, size_t n, Slice* result,
202
+ char* scratch) const {
203
+ LOG_DEBUG("[IN]%i\n", (int)n);
204
+ librados::bufferlist buffer;
205
+ Status s;
206
+ int r = _io_ctx->read(_fid, buffer, n, offset);
207
+ if (r >= 0) {
208
+ buffer.begin().copy(r, scratch);
209
+ *result = Slice(scratch, r);
210
+ s = Status::OK();
211
+ } else {
212
+ s = err_to_status(r);
213
+ if (s == Status::IOError()) {
214
+ *result = Slice();
215
+ s = Status::OK();
216
+ }
217
+ }
218
+ LOG_DEBUG("[OUT]%s, %i, %s\n", s.ToString().c_str(), (int)r, buffer.c_str());
219
+ return s;
220
+ }
221
+
222
+ /**
223
+ * @brief [brief description]
224
+ * @details Get unique id for each file and guarantee this id is different for each file
225
+ *
226
+ * @param id [description]
227
+ * @param max_size max size of id, it shoud be larger than 16
228
+ *
229
+ * @return [description]
230
+ */
231
+ size_t GetUniqueId(char* id, size_t max_size) const {
232
+ // All fid has the same db_id prefix, so we need to ignore db_id prefix
233
+ size_t s = std::min(max_size, _fid.size());
234
+ strncpy(id, _fid.c_str() + (_fid.size() - s), s);
235
+ id[s - 1] = '\0';
236
+ return s;
237
+ };
238
+
239
+ //enum AccessPattern { NORMAL, RANDOM, SEQUENTIAL, WILLNEED, DONTNEED };
240
+ void Hint(AccessPattern pattern) {
241
+ /* Do nothing */
242
+ }
243
+
244
+ /**
245
+ * @brief noop
246
+ * @details [long description]
247
+ *
248
+ * @param offset [description]
249
+ * @param length [description]
250
+ *
251
+ * @return [description]
252
+ */
253
+ Status InvalidateCache(size_t offset, size_t length) {
254
+ return Status::OK();
255
+ }
256
+ };
257
+
258
+
259
+ // A file abstraction for sequential writing. The implementation
260
+ // must provide buffering since callers may append small fragments
261
+ // at a time to the file.
262
+ class LibradosWritableFile : public WritableFile {
263
+ librados::IoCtx * _io_ctx;
264
+ std::string _fid;
265
+ std::string _hint;
266
+ const EnvLibrados * const _env;
267
+
268
+ std::mutex _mutex; // used to protect modification of all following variables
269
+ librados::bufferlist _buffer; // write buffer
270
+ uint64_t _buffer_size; // write buffer size
271
+ uint64_t _file_size; // this file size doesn't include buffer size
272
+
273
+ /**
274
+ * @brief assuming caller holds lock
275
+ * @details [long description]
276
+ * @return [description]
277
+ */
278
+ int _SyncLocked() {
279
+ // 1. sync append data to RADOS
280
+ int r = _io_ctx->append(_fid, _buffer, _buffer_size);
281
+ assert(r >= 0);
282
+
283
+ // 2. update local variables
284
+ if (0 == r) {
285
+ _buffer.clear();
286
+ _file_size += _buffer_size;
287
+ _buffer_size = 0;
288
+ }
289
+
290
+ return r;
291
+ }
292
+
293
+ public:
294
+ LibradosWritableFile(librados::IoCtx* io_ctx, std::string fid,
295
+ std::string hint, const EnvLibrados* const env,
296
+ const EnvOptions& options)
297
+ : WritableFile(options),
298
+ _io_ctx(io_ctx),
299
+ _fid(fid),
300
+ _hint(hint),
301
+ _env(env),
302
+ _buffer(),
303
+ _buffer_size(0),
304
+ _file_size(0) {
305
+ int ret = _io_ctx->stat(_fid, &_file_size, nullptr);
306
+
307
+ // if file not exist
308
+ if (ret < 0) {
309
+ _file_size = 0;
310
+ }
311
+ }
312
+
313
+ ~LibradosWritableFile() {
314
+ // sync before closeing writable file
315
+ Sync();
316
+ }
317
+
318
+ /**
319
+ * @brief append data to file
320
+ * @details
321
+ * Append will save all written data in buffer util buffer size
322
+ * reaches buffer max size. Then, it will write buffer into rados
323
+ *
324
+ * @param data [description]
325
+ * @return [description]
326
+ */
327
+ Status Append(const Slice& data) {
328
+ // append buffer
329
+ LOG_DEBUG("[IN] %i | %s\n", (int)data.size(), data.data());
330
+ int r = 0;
331
+
332
+ std::lock_guard<std::mutex> lock(_mutex);
333
+ _buffer.append(data.data(), data.size());
334
+ _buffer_size += data.size();
335
+
336
+ if (_buffer_size > _env->_write_buffer_size) {
337
+ r = _SyncLocked();
338
+ }
339
+
340
+ LOG_DEBUG("[OUT] %i\n", r);
341
+ return err_to_status(r);
342
+ }
343
+
344
+ /**
345
+ * @brief not supported
346
+ * @details [long description]
347
+ * @return [description]
348
+ */
349
+ Status PositionedAppend(
350
+ const Slice& /* data */,
351
+ uint64_t /* offset */) {
352
+ return Status::NotSupported();
353
+ }
354
+
355
+ /**
356
+ * @brief truncate file to assigned size
357
+ * @details [long description]
358
+ *
359
+ * @param size [description]
360
+ * @return [description]
361
+ */
362
+ Status Truncate(uint64_t size) {
363
+ LOG_DEBUG("[IN]%lld|%lld|%lld\n", (long long)size, (long long)_file_size, (long long)_buffer_size);
364
+ int r = 0;
365
+
366
+ std::lock_guard<std::mutex> lock(_mutex);
367
+ if (_file_size > size) {
368
+ r = _io_ctx->trunc(_fid, size);
369
+
370
+ if (r == 0) {
371
+ _buffer.clear();
372
+ _buffer_size = 0;
373
+ _file_size = size;
374
+ }
375
+ } else if (_file_size == size) {
376
+ _buffer.clear();
377
+ _buffer_size = 0;
378
+ } else {
379
+ librados::bufferlist tmp;
380
+ tmp.claim(_buffer);
381
+ _buffer.substr_of(tmp, 0, size - _file_size);
382
+ _buffer_size = size - _file_size;
383
+ }
384
+
385
+ LOG_DEBUG("[OUT] %i\n", r);
386
+ return err_to_status(r);
387
+ }
388
+
389
+ /**
390
+ * @brief close file
391
+ * @details [long description]
392
+ * @return [description]
393
+ */
394
+ Status Close() {
395
+ LOG_DEBUG("%s | %lld | %lld\n", _hint.c_str(), (long long)_buffer_size, (long long)_file_size);
396
+ return Sync();
397
+ }
398
+
399
+ /**
400
+ * @brief flush file,
401
+ * @details initiate an aio write and not wait
402
+ *
403
+ * @return [description]
404
+ */
405
+ Status Flush() {
406
+ librados::AioCompletion *write_completion = librados::Rados::aio_create_completion();
407
+ int r = 0;
408
+
409
+ std::lock_guard<std::mutex> lock(_mutex);
410
+ r = _io_ctx->aio_append(_fid, write_completion, _buffer, _buffer_size);
411
+
412
+ if (0 == r) {
413
+ _file_size += _buffer_size;
414
+ _buffer.clear();
415
+ _buffer_size = 0;
416
+ }
417
+
418
+ write_completion->release();
419
+
420
+ return err_to_status(r);
421
+ }
422
+
423
+ /**
424
+ * @brief write buffer data to rados
425
+ * @details initiate an aio write and wait for result
426
+ * @return [description]
427
+ */
428
+ Status Sync() { // sync data
429
+ int r = 0;
430
+
431
+ std::lock_guard<std::mutex> lock(_mutex);
432
+ if (_buffer_size > 0) {
433
+ r = _SyncLocked();
434
+ }
435
+
436
+ return err_to_status(r);
437
+ }
438
+
439
+ /**
440
+ * @brief [brief description]
441
+ * @details [long description]
442
+ * @return true if Sync() and Fsync() are safe to call concurrently with Append()and Flush().
443
+ */
444
+ bool IsSyncThreadSafe() const {
445
+ return true;
446
+ }
447
+
448
+ /**
449
+ * @brief Indicates the upper layers if the current WritableFile implementation uses direct IO.
450
+ * @details [long description]
451
+ * @return [description]
452
+ */
453
+ bool use_direct_io() const {
454
+ return false;
455
+ }
456
+
457
+ /**
458
+ * @brief Get file size
459
+ * @details
460
+ * This API will use cached file_size.
461
+ * @return [description]
462
+ */
463
+ uint64_t GetFileSize() {
464
+ LOG_DEBUG("%lld|%lld\n", (long long)_buffer_size, (long long)_file_size);
465
+
466
+ std::lock_guard<std::mutex> lock(_mutex);
467
+ int file_size = _file_size + _buffer_size;
468
+
469
+ return file_size;
470
+ }
471
+
472
+ /**
473
+ * @brief For documentation, refer to RandomAccessFile::GetUniqueId()
474
+ * @details [long description]
475
+ *
476
+ * @param id [description]
477
+ * @param max_size [description]
478
+ *
479
+ * @return [description]
480
+ */
481
+ size_t GetUniqueId(char* id, size_t max_size) const {
482
+ // All fid has the same db_id prefix, so we need to ignore db_id prefix
483
+ size_t s = std::min(max_size, _fid.size());
484
+ strncpy(id, _fid.c_str() + (_fid.size() - s), s);
485
+ id[s - 1] = '\0';
486
+ return s;
487
+ }
488
+
489
+ /**
490
+ * @brief noop
491
+ * @details [long description]
492
+ *
493
+ * @param offset [description]
494
+ * @param length [description]
495
+ *
496
+ * @return [description]
497
+ */
498
+ Status InvalidateCache(size_t offset, size_t length) {
499
+ return Status::OK();
500
+ }
501
+
502
+ using WritableFile::RangeSync;
503
+ /**
504
+ * @brief No RangeSync support, just call Sync()
505
+ * @details [long description]
506
+ *
507
+ * @param offset [description]
508
+ * @param nbytes [description]
509
+ *
510
+ * @return [description]
511
+ */
512
+ Status RangeSync(off_t offset, off_t nbytes) {
513
+ return Sync();
514
+ }
515
+
516
+ protected:
517
+ using WritableFile::Allocate;
518
+ /**
519
+ * @brief noop
520
+ * @details [long description]
521
+ *
522
+ * @param offset [description]
523
+ * @param len [description]
524
+ *
525
+ * @return [description]
526
+ */
527
+ Status Allocate(off_t offset, off_t len) {
528
+ return Status::OK();
529
+ }
530
+ };
531
+
532
+
533
+ // Directory object represents collection of files and implements
534
+ // filesystem operations that can be executed on directories.
535
+ class LibradosDirectory : public Directory {
536
+ librados::IoCtx * _io_ctx;
537
+ std::string _fid;
538
+ public:
539
+ explicit LibradosDirectory(librados::IoCtx * io_ctx, std::string fid):
540
+ _io_ctx(io_ctx), _fid(fid) {}
541
+
542
+ // Fsync directory. Can be called concurrently from multiple threads.
543
+ Status Fsync() {
544
+ return Status::OK();
545
+ }
546
+ };
547
+
548
+ // Identifies a locked file.
549
+ // This is exclusive lock and can't nested lock by same thread
550
+ class LibradosFileLock : public FileLock {
551
+ librados::IoCtx * _io_ctx;
552
+ const std::string _obj_name;
553
+ const std::string _lock_name;
554
+ const std::string _cookie;
555
+ int lock_state;
556
+ public:
557
+ LibradosFileLock(
558
+ librados::IoCtx * io_ctx,
559
+ const std::string obj_name):
560
+ _io_ctx(io_ctx),
561
+ _obj_name(obj_name),
562
+ _lock_name("lock_name"),
563
+ _cookie("cookie") {
564
+
565
+ // TODO: the lock will never expire. It may cause problem if the process crash or abnormally exit.
566
+ while (!_io_ctx->lock_exclusive(
567
+ _obj_name,
568
+ _lock_name,
569
+ _cookie,
570
+ "description", nullptr, 0));
571
+ }
572
+
573
+ ~LibradosFileLock() {
574
+ _io_ctx->unlock(_obj_name, _lock_name, _cookie);
575
+ }
576
+ };
577
+
578
+
579
+ // --------------------
580
+ // --- EnvLibrados ----
581
+ // --------------------
582
+ /**
583
+ * @brief EnvLibrados ctor
584
+ * @details [long description]
585
+ *
586
+ * @param db_name unique database name
587
+ * @param config_path the configure file path for rados
588
+ */
589
+ EnvLibrados::EnvLibrados(const std::string& db_name,
590
+ const std::string& config_path,
591
+ const std::string& db_pool)
592
+ : EnvLibrados("client.admin",
593
+ "ceph",
594
+ 0,
595
+ db_name,
596
+ config_path,
597
+ db_pool,
598
+ "/wal",
599
+ db_pool,
600
+ 1 << 20) {}
601
+
602
+ /**
603
+ * @brief EnvLibrados ctor
604
+ * @details [long description]
605
+ *
606
+ * @param client_name first 3 parameters is for RADOS client init
607
+ * @param cluster_name
608
+ * @param flags
609
+ * @param db_name unique database name, used as db_id key
610
+ * @param config_path the configure file path for rados
611
+ * @param db_pool the pool for db data
612
+ * @param wal_pool the pool for WAL data
613
+ * @param write_buffer_size WritableFile buffer max size
614
+ */
615
+ EnvLibrados::EnvLibrados(const std::string& client_name,
616
+ const std::string& cluster_name,
617
+ const uint64_t flags,
618
+ const std::string& db_name,
619
+ const std::string& config_path,
620
+ const std::string& db_pool,
621
+ const std::string& wal_dir,
622
+ const std::string& wal_pool,
623
+ const uint64_t write_buffer_size)
624
+ : EnvWrapper(Env::Default()),
625
+ _client_name(client_name),
626
+ _cluster_name(cluster_name),
627
+ _flags(flags),
628
+ _db_name(db_name),
629
+ _config_path(config_path),
630
+ _db_pool_name(db_pool),
631
+ _wal_dir(wal_dir),
632
+ _wal_pool_name(wal_pool),
633
+ _write_buffer_size(write_buffer_size) {
634
+ int ret = 0;
635
+
636
+ // 1. create a Rados object and initialize it
637
+ ret = _rados.init2(_client_name.c_str(), _cluster_name.c_str(), _flags); // just use the client.admin keyring
638
+ if (ret < 0) { // let's handle any error that might have come back
639
+ std::cerr << "couldn't initialize rados! error " << ret << std::endl;
640
+ ret = EXIT_FAILURE;
641
+ goto out;
642
+ }
643
+
644
+ // 2. read configure file
645
+ ret = _rados.conf_read_file(_config_path.c_str());
646
+ if (ret < 0) {
647
+ // This could fail if the config file is malformed, but it'd be hard.
648
+ std::cerr << "failed to parse config file " << _config_path
649
+ << "! error" << ret << std::endl;
650
+ ret = EXIT_FAILURE;
651
+ goto out;
652
+ }
653
+
654
+ // 3. we actually connect to the cluster
655
+ ret = _rados.connect();
656
+ if (ret < 0) {
657
+ std::cerr << "couldn't connect to cluster! error " << ret << std::endl;
658
+ ret = EXIT_FAILURE;
659
+ goto out;
660
+ }
661
+
662
+ // 4. create db_pool if not exist
663
+ ret = _rados.pool_create(_db_pool_name.c_str());
664
+ if (ret < 0 && ret != -EEXIST && ret != -EPERM) {
665
+ std::cerr << "couldn't create pool! error " << ret << std::endl;
666
+ goto out;
667
+ }
668
+
669
+ // 5. create db_pool_ioctx
670
+ ret = _rados.ioctx_create(_db_pool_name.c_str(), _db_pool_ioctx);
671
+ if (ret < 0) {
672
+ std::cerr << "couldn't set up ioctx! error " << ret << std::endl;
673
+ ret = EXIT_FAILURE;
674
+ goto out;
675
+ }
676
+
677
+ // 6. create wal_pool if not exist
678
+ ret = _rados.pool_create(_wal_pool_name.c_str());
679
+ if (ret < 0 && ret != -EEXIST && ret != -EPERM) {
680
+ std::cerr << "couldn't create pool! error " << ret << std::endl;
681
+ goto out;
682
+ }
683
+
684
+ // 7. create wal_pool_ioctx
685
+ ret = _rados.ioctx_create(_wal_pool_name.c_str(), _wal_pool_ioctx);
686
+ if (ret < 0) {
687
+ std::cerr << "couldn't set up ioctx! error " << ret << std::endl;
688
+ ret = EXIT_FAILURE;
689
+ goto out;
690
+ }
691
+
692
+ // 8. add root dir
693
+ _AddFid(ROOT_DIR_KEY, DIR_ID_VALUE);
694
+
695
+ out:
696
+ LOG_DEBUG("rados connect result code : %i\n", ret);
697
+ }
698
+
699
+ /****************************************************
700
+ private functions to handle fid operation.
701
+ Dir also have fid, but the value is DIR_ID_VALUE
702
+ ****************************************************/
703
+
704
+ /**
705
+ * @brief generate a new fid
706
+ * @details [long description]
707
+ * @return [description]
708
+ */
709
+ std::string EnvLibrados::_CreateFid() {
710
+ return _db_name + "." + GenerateUniqueId();
711
+ }
712
+
713
+ /**
714
+ * @brief get fid
715
+ * @details [long description]
716
+ *
717
+ * @param fname [description]
718
+ * @param fid [description]
719
+ *
720
+ * @return
721
+ * Status::OK()
722
+ * Status::NotFound()
723
+ */
724
+ Status EnvLibrados::_GetFid(
725
+ const std::string &fname,
726
+ std::string& fid) {
727
+ std::set<std::string> keys;
728
+ std::map<std::string, librados::bufferlist> kvs;
729
+ keys.insert(fname);
730
+ int r = _db_pool_ioctx.omap_get_vals_by_keys(_db_name, keys, &kvs);
731
+
732
+ if (0 == r && 0 == kvs.size()) {
733
+ return Status::NotFound();
734
+ } else if (0 == r && 0 != kvs.size()) {
735
+ fid.assign(kvs[fname].c_str(), kvs[fname].length());
736
+ return Status::OK();
737
+ } else {
738
+ return err_to_status(r);
739
+ }
740
+ }
741
+
742
+ /**
743
+ * @brief rename fid
744
+ * @details Only modify object in rados once,
745
+ * so this rename operation is atomic in term of rados
746
+ *
747
+ * @param old_fname [description]
748
+ * @param new_fname [description]
749
+ *
750
+ * @return [description]
751
+ */
752
+ Status EnvLibrados::_RenameFid(const std::string& old_fname,
753
+ const std::string& new_fname) {
754
+ std::string fid;
755
+ Status s = _GetFid(old_fname, fid);
756
+
757
+ if (Status::OK() != s) {
758
+ return s;
759
+ }
760
+
761
+ librados::bufferlist bl;
762
+ std::set<std::string> keys;
763
+ std::map<std::string, librados::bufferlist> kvs;
764
+ librados::ObjectWriteOperation o;
765
+ bl.append(fid);
766
+ keys.insert(old_fname);
767
+ kvs[new_fname] = bl;
768
+ o.omap_rm_keys(keys);
769
+ o.omap_set(kvs);
770
+ int r = _db_pool_ioctx.operate(_db_name, &o);
771
+ return err_to_status(r);
772
+ }
773
+
774
+ /**
775
+ * @brief add <file path, fid> to metadata object. It may overwrite exist key.
776
+ * @details [long description]
777
+ *
778
+ * @param fname [description]
779
+ * @param fid [description]
780
+ *
781
+ * @return [description]
782
+ */
783
+ Status EnvLibrados::_AddFid(
784
+ const std::string& fname,
785
+ const std::string& fid) {
786
+ std::map<std::string, librados::bufferlist> kvs;
787
+ librados::bufferlist value;
788
+ value.append(fid);
789
+ kvs[fname] = value;
790
+ int r = _db_pool_ioctx.omap_set(_db_name, kvs);
791
+ return err_to_status(r);
792
+ }
793
+
794
+ /**
795
+ * @brief return subfile names of dir.
796
+ * @details
797
+ * RocksDB has a 2-level structure, so all keys
798
+ * that have dir as prefix are subfiles of dir.
799
+ * So we can just return these files' name.
800
+ *
801
+ * @param dir [description]
802
+ * @param result [description]
803
+ *
804
+ * @return [description]
805
+ */
806
+ Status EnvLibrados::_GetSubFnames(
807
+ const std::string& dir,
808
+ std::vector<std::string> * result
809
+ ) {
810
+ std::string start_after(dir);
811
+ std::string filter_prefix(dir);
812
+ std::map<std::string, librados::bufferlist> kvs;
813
+ _db_pool_ioctx.omap_get_vals(_db_name,
814
+ start_after, filter_prefix,
815
+ MAX_ITEMS_IN_FS, &kvs);
816
+
817
+ result->clear();
818
+ for (auto i = kvs.begin(); i != kvs.end(); i++) {
819
+ result->push_back(i->first.substr(dir.size() + 1));
820
+ }
821
+ return Status::OK();
822
+ }
823
+
824
+ /**
825
+ * @brief delete key fname from metadata object
826
+ * @details [long description]
827
+ *
828
+ * @param fname [description]
829
+ * @return [description]
830
+ */
831
+ Status EnvLibrados::_DelFid(
832
+ const std::string& fname) {
833
+ std::set<std::string> keys;
834
+ keys.insert(fname);
835
+ int r = _db_pool_ioctx.omap_rm_keys(_db_name, keys);
836
+ return err_to_status(r);
837
+ }
838
+
839
+ /**
840
+ * @brief get match IoCtx from _prefix_pool_map
841
+ * @details [long description]
842
+ *
843
+ * @param prefix [description]
844
+ * @return [description]
845
+ *
846
+ */
847
+ librados::IoCtx* EnvLibrados::_GetIoctx(const std::string& fpath) {
848
+ auto is_prefix = [](const std::string & s1, const std::string & s2) {
849
+ auto it1 = s1.begin(), it2 = s2.begin();
850
+ while (it1 != s1.end() && it2 != s2.end() && *it1 == *it2) ++it1, ++it2;
851
+ return it1 == s1.end();
852
+ };
853
+
854
+ if (is_prefix(_wal_dir, fpath)) {
855
+ return &_wal_pool_ioctx;
856
+ } else {
857
+ return &_db_pool_ioctx;
858
+ }
859
+ }
860
+
861
+ /************************************************************
862
+ public functions
863
+ ************************************************************/
864
+ /**
865
+ * @brief generate unique id
866
+ * @details Combine system time and random number.
867
+ * @return [description]
868
+ */
869
+ std::string EnvLibrados::GenerateUniqueId() {
870
+ Random64 r(time(nullptr));
871
+ uint64_t random_uuid_portion =
872
+ r.Uniform(std::numeric_limits<uint64_t>::max());
873
+ uint64_t nanos_uuid_portion = NowNanos();
874
+ char uuid2[200];
875
+ snprintf(uuid2,
876
+ 200,
877
+ "%16lx-%16lx",
878
+ (unsigned long)nanos_uuid_portion,
879
+ (unsigned long)random_uuid_portion);
880
+ return uuid2;
881
+ }
882
+
883
+ /**
884
+ * @brief create a new sequential read file handler
885
+ * @details it will check the existence of fname
886
+ *
887
+ * @param fname [description]
888
+ * @param result [description]
889
+ * @param options [description]
890
+ * @return [description]
891
+ */
892
+ Status EnvLibrados::NewSequentialFile(
893
+ const std::string& fname,
894
+ std::unique_ptr<SequentialFile>* result,
895
+ const EnvOptions& options)
896
+ {
897
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
898
+ std::string dir, file, fid;
899
+ split(fname, &dir, &file);
900
+ Status s;
901
+ std::string fpath = dir + "/" + file;
902
+ do {
903
+ s = _GetFid(dir, fid);
904
+
905
+ if (!s.ok() || fid != DIR_ID_VALUE) {
906
+ if (fid != DIR_ID_VALUE) s = Status::IOError();
907
+ break;
908
+ }
909
+
910
+ s = _GetFid(fpath, fid);
911
+
912
+ if (Status::NotFound() == s) {
913
+ s = Status::IOError();
914
+ errno = ENOENT;
915
+ break;
916
+ }
917
+
918
+ result->reset(new LibradosSequentialFile(_GetIoctx(fpath), fid, fpath));
919
+ s = Status::OK();
920
+ } while (0);
921
+
922
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
923
+ return s;
924
+ }
925
+
926
+ /**
927
+ * @brief create a new random access file handler
928
+ * @details it will check the existence of fname
929
+ *
930
+ * @param fname [description]
931
+ * @param result [description]
932
+ * @param options [description]
933
+ * @return [description]
934
+ */
935
+ Status EnvLibrados::NewRandomAccessFile(
936
+ const std::string& fname,
937
+ std::unique_ptr<RandomAccessFile>* result,
938
+ const EnvOptions& options)
939
+ {
940
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
941
+ std::string dir, file, fid;
942
+ split(fname, &dir, &file);
943
+ Status s;
944
+ std::string fpath = dir + "/" + file;
945
+ do {
946
+ s = _GetFid(dir, fid);
947
+
948
+ if (!s.ok() || fid != DIR_ID_VALUE) {
949
+ s = Status::IOError();
950
+ break;
951
+ }
952
+
953
+ s = _GetFid(fpath, fid);
954
+
955
+ if (Status::NotFound() == s) {
956
+ s = Status::IOError();
957
+ errno = ENOENT;
958
+ break;
959
+ }
960
+
961
+ result->reset(new LibradosRandomAccessFile(_GetIoctx(fpath), fid, fpath));
962
+ s = Status::OK();
963
+ } while (0);
964
+
965
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
966
+ return s;
967
+ }
968
+
969
+ /**
970
+ * @brief create a new write file handler
971
+ * @details it will check the existence of fname
972
+ *
973
+ * @param fname [description]
974
+ * @param result [description]
975
+ * @param options [description]
976
+ * @return [description]
977
+ */
978
+ Status EnvLibrados::NewWritableFile(
979
+ const std::string& fname,
980
+ std::unique_ptr<WritableFile>* result,
981
+ const EnvOptions& options)
982
+ {
983
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
984
+ std::string dir, file, fid;
985
+ split(fname, &dir, &file);
986
+ Status s;
987
+ std::string fpath = dir + "/" + file;
988
+
989
+ do {
990
+ // 1. check if dir exist
991
+ s = _GetFid(dir, fid);
992
+ if (!s.ok()) {
993
+ break;
994
+ }
995
+
996
+ if (fid != DIR_ID_VALUE) {
997
+ s = Status::IOError();
998
+ break;
999
+ }
1000
+
1001
+ // 2. check if file exist.
1002
+ // 2.1 exist, use it
1003
+ // 2.2 not exist, create it
1004
+ s = _GetFid(fpath, fid);
1005
+ if (Status::NotFound() == s) {
1006
+ fid = _CreateFid();
1007
+ _AddFid(fpath, fid);
1008
+ }
1009
+
1010
+ result->reset(
1011
+ new LibradosWritableFile(_GetIoctx(fpath), fid, fpath, this, options));
1012
+ s = Status::OK();
1013
+ } while (0);
1014
+
1015
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1016
+ return s;
1017
+ }
1018
+
1019
+ /**
1020
+ * @brief reuse write file handler
1021
+ * @details
1022
+ * This function will rename old_fname to new_fname,
1023
+ * then return the handler of new_fname
1024
+ *
1025
+ * @param new_fname [description]
1026
+ * @param old_fname [description]
1027
+ * @param result [description]
1028
+ * @param options [description]
1029
+ * @return [description]
1030
+ */
1031
+ Status EnvLibrados::ReuseWritableFile(
1032
+ const std::string& new_fname,
1033
+ const std::string& old_fname,
1034
+ std::unique_ptr<WritableFile>* result,
1035
+ const EnvOptions& options)
1036
+ {
1037
+ LOG_DEBUG("[IN]%s => %s\n", old_fname.c_str(), new_fname.c_str());
1038
+ std::string src_fid, tmp_fid, src_dir, src_file, dst_dir, dst_file;
1039
+ split(old_fname, &src_dir, &src_file);
1040
+ split(new_fname, &dst_dir, &dst_file);
1041
+
1042
+ std::string src_fpath = src_dir + "/" + src_file;
1043
+ std::string dst_fpath = dst_dir + "/" + dst_file;
1044
+ Status r = Status::OK();
1045
+ do {
1046
+ r = _RenameFid(src_fpath,
1047
+ dst_fpath);
1048
+ if (!r.ok()) {
1049
+ break;
1050
+ }
1051
+
1052
+ result->reset(new LibradosWritableFile(_GetIoctx(dst_fpath), src_fid,
1053
+ dst_fpath, this, options));
1054
+ } while (0);
1055
+
1056
+ LOG_DEBUG("[OUT]%s\n", r.ToString().c_str());
1057
+ return r;
1058
+ }
1059
+
1060
+ /**
1061
+ * @brief create a new directory handler
1062
+ * @details [long description]
1063
+ *
1064
+ * @param name [description]
1065
+ * @param result [description]
1066
+ *
1067
+ * @return [description]
1068
+ */
1069
+ Status EnvLibrados::NewDirectory(
1070
+ const std::string& name,
1071
+ std::unique_ptr<Directory>* result)
1072
+ {
1073
+ LOG_DEBUG("[IN]%s\n", name.c_str());
1074
+ std::string fid, dir, file;
1075
+ /* just want to get dir name */
1076
+ split(name + "/tmp", &dir, &file);
1077
+ Status s;
1078
+
1079
+ do {
1080
+ s = _GetFid(dir, fid);
1081
+
1082
+ if (!s.ok() || DIR_ID_VALUE != fid) {
1083
+ s = Status::IOError(name, strerror(-ENOENT));
1084
+ break;
1085
+ }
1086
+
1087
+ if (Status::NotFound() == s) {
1088
+ s = _AddFid(dir, DIR_ID_VALUE);
1089
+ if (!s.ok()) break;
1090
+ } else if (!s.ok()) {
1091
+ break;
1092
+ }
1093
+
1094
+ result->reset(new LibradosDirectory(_GetIoctx(dir), dir));
1095
+ s = Status::OK();
1096
+ } while (0);
1097
+
1098
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1099
+ return s;
1100
+ }
1101
+
1102
+ /**
1103
+ * @brief check if fname is exist
1104
+ * @details [long description]
1105
+ *
1106
+ * @param fname [description]
1107
+ * @return [description]
1108
+ */
1109
+ Status EnvLibrados::FileExists(const std::string& fname)
1110
+ {
1111
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
1112
+ std::string fid, dir, file;
1113
+ split(fname, &dir, &file);
1114
+ Status s = _GetFid(dir + "/" + file, fid);
1115
+
1116
+ if (s.ok() && fid != DIR_ID_VALUE) {
1117
+ s = Status::OK();
1118
+ }
1119
+
1120
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1121
+ return s;
1122
+ }
1123
+
1124
+ /**
1125
+ * @brief get subfile name of dir_in
1126
+ * @details [long description]
1127
+ *
1128
+ * @param dir_in [description]
1129
+ * @param result [description]
1130
+ *
1131
+ * @return [description]
1132
+ */
1133
+ Status EnvLibrados::GetChildren(
1134
+ const std::string& dir_in,
1135
+ std::vector<std::string>* result)
1136
+ {
1137
+ LOG_DEBUG("[IN]%s\n", dir_in.c_str());
1138
+ std::string fid, dir, file;
1139
+ split(dir_in + "/temp", &dir, &file);
1140
+ Status s;
1141
+
1142
+ do {
1143
+ s = _GetFid(dir, fid);
1144
+ if (!s.ok()) {
1145
+ break;
1146
+ }
1147
+
1148
+ if (fid != DIR_ID_VALUE) {
1149
+ s = Status::IOError();
1150
+ break;
1151
+ }
1152
+
1153
+ s = _GetSubFnames(dir, result);
1154
+ } while (0);
1155
+
1156
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1157
+ return s;
1158
+ }
1159
+
1160
+ /**
1161
+ * @brief delete fname
1162
+ * @details [long description]
1163
+ *
1164
+ * @param fname [description]
1165
+ * @return [description]
1166
+ */
1167
+ Status EnvLibrados::DeleteFile(const std::string& fname)
1168
+ {
1169
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
1170
+ std::string fid, dir, file;
1171
+ split(fname, &dir, &file);
1172
+ Status s = _GetFid(dir + "/" + file, fid);
1173
+
1174
+ if (s.ok() && DIR_ID_VALUE != fid) {
1175
+ s = _DelFid(dir + "/" + file);
1176
+ } else {
1177
+ s = Status::NotFound();
1178
+ }
1179
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1180
+ return s;
1181
+ }
1182
+
1183
+ /**
1184
+ * @brief create new dir
1185
+ * @details [long description]
1186
+ *
1187
+ * @param dirname [description]
1188
+ * @return [description]
1189
+ */
1190
+ Status EnvLibrados::CreateDir(const std::string& dirname)
1191
+ {
1192
+ LOG_DEBUG("[IN]%s\n", dirname.c_str());
1193
+ std::string fid, dir, file;
1194
+ split(dirname + "/temp", &dir, &file);
1195
+ Status s = _GetFid(dir + "/" + file, fid);
1196
+
1197
+ do {
1198
+ if (Status::NotFound() != s && fid != DIR_ID_VALUE) {
1199
+ break;
1200
+ } else if (Status::OK() == s && fid == DIR_ID_VALUE) {
1201
+ break;
1202
+ }
1203
+
1204
+ s = _AddFid(dir, DIR_ID_VALUE);
1205
+ } while (0);
1206
+
1207
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1208
+ return s;
1209
+ }
1210
+
1211
+ /**
1212
+ * @brief create dir if missing
1213
+ * @details [long description]
1214
+ *
1215
+ * @param dirname [description]
1216
+ * @return [description]
1217
+ */
1218
+ Status EnvLibrados::CreateDirIfMissing(const std::string& dirname)
1219
+ {
1220
+ LOG_DEBUG("[IN]%s\n", dirname.c_str());
1221
+ std::string fid, dir, file;
1222
+ split(dirname + "/temp", &dir, &file);
1223
+ Status s = Status::OK();
1224
+
1225
+ do {
1226
+ s = _GetFid(dir, fid);
1227
+ if (Status::NotFound() != s) {
1228
+ break;
1229
+ }
1230
+
1231
+ s = _AddFid(dir, DIR_ID_VALUE);
1232
+ } while (0);
1233
+
1234
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1235
+ return s;
1236
+ }
1237
+
1238
+ /**
1239
+ * @brief delete dir
1240
+ * @details
1241
+ *
1242
+ * @param dirname [description]
1243
+ * @return [description]
1244
+ */
1245
+ Status EnvLibrados::DeleteDir(const std::string& dirname)
1246
+ {
1247
+ LOG_DEBUG("[IN]%s\n", dirname.c_str());
1248
+ std::string fid, dir, file;
1249
+ split(dirname + "/temp", &dir, &file);
1250
+ Status s = Status::OK();
1251
+
1252
+ s = _GetFid(dir, fid);
1253
+
1254
+ if (s.ok() && DIR_ID_VALUE == fid) {
1255
+ std::vector<std::string> subs;
1256
+ s = _GetSubFnames(dir, &subs);
1257
+ // if subfiles exist, can't delete dir
1258
+ if (subs.size() > 0) {
1259
+ s = Status::IOError();
1260
+ } else {
1261
+ s = _DelFid(dir);
1262
+ }
1263
+ } else {
1264
+ s = Status::NotFound();
1265
+ }
1266
+
1267
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1268
+ return s;
1269
+ }
1270
+
1271
+ /**
1272
+ * @brief return file size
1273
+ * @details [long description]
1274
+ *
1275
+ * @param fname [description]
1276
+ * @param file_size [description]
1277
+ *
1278
+ * @return [description]
1279
+ */
1280
+ Status EnvLibrados::GetFileSize(
1281
+ const std::string& fname,
1282
+ uint64_t* file_size)
1283
+ {
1284
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
1285
+ std::string fid, dir, file;
1286
+ split(fname, &dir, &file);
1287
+ time_t mtime;
1288
+ Status s;
1289
+
1290
+ do {
1291
+ std::string fpath = dir + "/" + file;
1292
+ s = _GetFid(fpath, fid);
1293
+
1294
+ if (!s.ok()) {
1295
+ break;
1296
+ }
1297
+
1298
+ int ret = _GetIoctx(fpath)->stat(fid, file_size, &mtime);
1299
+ if (ret < 0) {
1300
+ LOG_DEBUG("%i\n", ret);
1301
+ if (-ENOENT == ret) {
1302
+ *file_size = 0;
1303
+ s = Status::OK();
1304
+ } else {
1305
+ s = err_to_status(ret);
1306
+ }
1307
+ } else {
1308
+ s = Status::OK();
1309
+ }
1310
+ } while (0);
1311
+
1312
+ LOG_DEBUG("[OUT]%s|%lld\n", s.ToString().c_str(), (long long)*file_size);
1313
+ return s;
1314
+ }
1315
+
1316
+ /**
1317
+ * @brief get file modification time
1318
+ * @details [long description]
1319
+ *
1320
+ * @param fname [description]
1321
+ * @param file_mtime [description]
1322
+ *
1323
+ * @return [description]
1324
+ */
1325
+ Status EnvLibrados::GetFileModificationTime(const std::string& fname,
1326
+ uint64_t* file_mtime)
1327
+ {
1328
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
1329
+ std::string fid, dir, file;
1330
+ split(fname, &dir, &file);
1331
+ time_t mtime;
1332
+ uint64_t file_size;
1333
+ Status s = Status::OK();
1334
+ do {
1335
+ std::string fpath = dir + "/" + file;
1336
+ s = _GetFid(dir + "/" + file, fid);
1337
+
1338
+ if (!s.ok()) {
1339
+ break;
1340
+ }
1341
+
1342
+ int ret = _GetIoctx(fpath)->stat(fid, &file_size, &mtime);
1343
+ if (ret < 0) {
1344
+ if (Status::NotFound() == err_to_status(ret)) {
1345
+ *file_mtime = static_cast<uint64_t>(mtime);
1346
+ s = Status::OK();
1347
+ } else {
1348
+ s = err_to_status(ret);
1349
+ }
1350
+ } else {
1351
+ s = Status::OK();
1352
+ }
1353
+ } while (0);
1354
+
1355
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1356
+ return s;
1357
+ }
1358
+
1359
+ /**
1360
+ * @brief rename file
1361
+ * @details
1362
+ *
1363
+ * @param src [description]
1364
+ * @param target_in [description]
1365
+ *
1366
+ * @return [description]
1367
+ */
1368
+ Status EnvLibrados::RenameFile(
1369
+ const std::string& src,
1370
+ const std::string& target_in)
1371
+ {
1372
+ LOG_DEBUG("[IN]%s => %s\n", src.c_str(), target_in.c_str());
1373
+ std::string src_fid, tmp_fid, src_dir, src_file, dst_dir, dst_file;
1374
+ split(src, &src_dir, &src_file);
1375
+ split(target_in, &dst_dir, &dst_file);
1376
+
1377
+ auto s = _RenameFid(src_dir + "/" + src_file,
1378
+ dst_dir + "/" + dst_file);
1379
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1380
+ return s;
1381
+ }
1382
+
1383
+ /**
1384
+ * @brief not support
1385
+ * @details [long description]
1386
+ *
1387
+ * @param src [description]
1388
+ * @param target_in [description]
1389
+ *
1390
+ * @return [description]
1391
+ */
1392
+ Status EnvLibrados::LinkFile(
1393
+ const std::string& src,
1394
+ const std::string& target_in)
1395
+ {
1396
+ LOG_DEBUG("[IO]%s => %s\n", src.c_str(), target_in.c_str());
1397
+ return Status::NotSupported();
1398
+ }
1399
+
1400
+ /**
1401
+ * @brief lock file. create if missing.
1402
+ * @details [long description]
1403
+ *
1404
+ * It seems that LockFile is used for preventing other instance of RocksDB
1405
+ * from opening up the database at the same time. From RocksDB source code,
1406
+ * the invokes of LockFile are at following locations:
1407
+ *
1408
+ * ./db/db_impl.cc:1159: s = env_->LockFile(LockFileName(dbname_), &db_lock_); // DBImpl::Recover
1409
+ * ./db/db_impl.cc:5839: Status result = env->LockFile(lockname, &lock); // Status DestroyDB
1410
+ *
1411
+ * When db recovery and db destroy, RocksDB will call LockFile
1412
+ *
1413
+ * @param fname [description]
1414
+ * @param lock [description]
1415
+ *
1416
+ * @return [description]
1417
+ */
1418
+ Status EnvLibrados::LockFile(
1419
+ const std::string& fname,
1420
+ FileLock** lock)
1421
+ {
1422
+ LOG_DEBUG("[IN]%s\n", fname.c_str());
1423
+ std::string fid, dir, file;
1424
+ split(fname, &dir, &file);
1425
+ Status s = Status::OK();
1426
+
1427
+ do {
1428
+ std::string fpath = dir + "/" + file;
1429
+ s = _GetFid(fpath, fid);
1430
+
1431
+ if (Status::OK() != s &&
1432
+ Status::NotFound() != s) {
1433
+ break;
1434
+ } else if (Status::NotFound() == s) {
1435
+ s = _AddFid(fpath, _CreateFid());
1436
+ if (!s.ok()) {
1437
+ break;
1438
+ }
1439
+ } else if (Status::OK() == s && DIR_ID_VALUE == fid) {
1440
+ s = Status::IOError();
1441
+ break;
1442
+ }
1443
+
1444
+ *lock = new LibradosFileLock(_GetIoctx(fpath), fpath);
1445
+ } while (0);
1446
+
1447
+ LOG_DEBUG("[OUT]%s\n", s.ToString().c_str());
1448
+ return s;
1449
+ }
1450
+
1451
+ /**
1452
+ * @brief unlock file
1453
+ * @details [long description]
1454
+ *
1455
+ * @param lock [description]
1456
+ * @return [description]
1457
+ */
1458
+ Status EnvLibrados::UnlockFile(FileLock* lock)
1459
+ {
1460
+ LOG_DEBUG("[IO]%p\n", lock);
1461
+ if (nullptr != lock) {
1462
+ delete lock;
1463
+ }
1464
+ return Status::OK();
1465
+ }
1466
+
1467
+
1468
+ /**
1469
+ * @brief not support
1470
+ * @details [long description]
1471
+ *
1472
+ * @param db_path [description]
1473
+ * @param output_path [description]
1474
+ *
1475
+ * @return [description]
1476
+ */
1477
+ Status EnvLibrados::GetAbsolutePath(
1478
+ const std::string& db_path,
1479
+ std::string* output_path)
1480
+ {
1481
+ LOG_DEBUG("[IO]%s\n", db_path.c_str());
1482
+ return Status::NotSupported();
1483
+ }
1484
+
1485
+ /**
1486
+ * @brief Get default EnvLibrados
1487
+ * @details [long description]
1488
+ * @return [description]
1489
+ */
1490
+ EnvLibrados* EnvLibrados::Default() {
1491
+ static EnvLibrados default_env(default_db_name,
1492
+ std::getenv(default_config_path),
1493
+ default_pool_name);
1494
+ return &default_env;
1495
+ }
1496
+
1497
+ } // namespace ROCKSDB_NAMESPACE