@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,1449 @@
1
+ // Copyright (c) 2011-present, Facebook, Inc. All rights reserved.
2
+ // This source code is licensed under both the GPLv2 (found in the
3
+ // COPYING file in the root directory) and Apache 2.0 License
4
+ // (found in the LICENSE.Apache file in the root directory).
5
+ //
6
+ // Copyright (c) 2011 The LevelDB Authors. All rights reserved.
7
+ // Use of this source code is governed by a BSD-style license that can be
8
+ // found in the LICENSE file. See the AUTHORS file for names of contributors.
9
+
10
+ #if defined(OS_WIN)
11
+
12
+ #include "port/win/env_win.h"
13
+
14
+ #include <direct.h> // _rmdir, _mkdir, _getcwd
15
+ #include <errno.h>
16
+ #include <io.h> // _access
17
+ #include <rpc.h> // for uuid generation
18
+ #include <shlwapi.h>
19
+ #include <sys/stat.h>
20
+ #include <sys/types.h>
21
+ #include <windows.h>
22
+
23
+ #include <algorithm>
24
+ #include <ctime>
25
+ #include <thread>
26
+
27
+ #include "monitoring/iostats_context_imp.h"
28
+ #include "monitoring/thread_status_updater.h"
29
+ #include "monitoring/thread_status_util.h"
30
+ #include "port/port.h"
31
+ #include "port/port_dirent.h"
32
+ #include "port/win/io_win.h"
33
+ #include "port/win/win_logger.h"
34
+ #include "port/win/win_thread.h"
35
+ #include "rocksdb/env.h"
36
+ #include "rocksdb/slice.h"
37
+ #include "strsafe.h"
38
+
39
+ // Undefine the functions windows might use (again)...
40
+ #undef GetCurrentTime
41
+ #undef DeleteFile
42
+ #undef LoadLibrary
43
+
44
+ namespace ROCKSDB_NAMESPACE {
45
+
46
+ ThreadStatusUpdater* CreateThreadStatusUpdater() {
47
+ return new ThreadStatusUpdater();
48
+ }
49
+
50
+ namespace {
51
+
52
+ // Sector size used when physical sector size cannot be obtained from device.
53
+ static const size_t kSectorSize = 512;
54
+
55
+ // RAII helpers for HANDLEs
56
+ const auto CloseHandleFunc = [](HANDLE h) { ::CloseHandle(h); };
57
+ typedef std::unique_ptr<void, decltype(CloseHandleFunc)> UniqueCloseHandlePtr;
58
+
59
+ const auto FindCloseFunc = [](HANDLE h) { ::FindClose(h); };
60
+ typedef std::unique_ptr<void, decltype(FindCloseFunc)> UniqueFindClosePtr;
61
+
62
+ void WinthreadCall(const char* label, std::error_code result) {
63
+ if (0 != result.value()) {
64
+ fprintf(stderr, "pthread %s: %s\n", label, strerror(result.value()));
65
+ abort();
66
+ }
67
+ }
68
+
69
+ } // namespace
70
+
71
+ namespace port {
72
+ WinClock::WinClock()
73
+ : perf_counter_frequency_(0),
74
+ nano_seconds_per_period_(0),
75
+ GetSystemTimePreciseAsFileTime_(NULL) {
76
+ {
77
+ LARGE_INTEGER qpf;
78
+ BOOL ret __attribute__((__unused__));
79
+ ret = QueryPerformanceFrequency(&qpf);
80
+ assert(ret == TRUE);
81
+ perf_counter_frequency_ = qpf.QuadPart;
82
+
83
+ if (std::nano::den % perf_counter_frequency_ == 0) {
84
+ nano_seconds_per_period_ = std::nano::den / perf_counter_frequency_;
85
+ }
86
+ }
87
+
88
+ HMODULE module = GetModuleHandle("kernel32.dll");
89
+ if (module != NULL) {
90
+ GetSystemTimePreciseAsFileTime_ =
91
+ (FnGetSystemTimePreciseAsFileTime)GetProcAddress(
92
+ module, "GetSystemTimePreciseAsFileTime");
93
+ }
94
+ }
95
+
96
+ const std::shared_ptr<WinClock>& WinClock::Default() {
97
+ static std::shared_ptr<WinClock> clock = std::make_shared<WinClock>();
98
+ return clock;
99
+ }
100
+ void WinClock::SleepForMicroseconds(int micros) {
101
+ std::this_thread::sleep_for(std::chrono::microseconds(micros));
102
+ }
103
+
104
+ std::string WinClock::TimeToString(uint64_t secondsSince1970) {
105
+ std::string result;
106
+
107
+ const time_t seconds = secondsSince1970;
108
+ const int maxsize = 64;
109
+
110
+ struct tm t;
111
+ errno_t ret = localtime_s(&t, &seconds);
112
+
113
+ if (ret) {
114
+ result = std::to_string(seconds);
115
+ } else {
116
+ result.resize(maxsize);
117
+ char* p = &result[0];
118
+
119
+ int len =
120
+ snprintf(p, maxsize, "%04d/%02d/%02d-%02d:%02d:%02d ", t.tm_year + 1900,
121
+ t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec);
122
+ assert(len > 0);
123
+
124
+ result.resize(len);
125
+ }
126
+
127
+ return result;
128
+ }
129
+
130
+ uint64_t WinClock::NowMicros() {
131
+ if (GetSystemTimePreciseAsFileTime_ != NULL) {
132
+ // all std::chrono clocks on windows proved to return
133
+ // values that may repeat that is not good enough for some uses.
134
+ const int64_t c_UnixEpochStartTicks = 116444736000000000LL;
135
+ const int64_t c_FtToMicroSec = 10;
136
+
137
+ // This interface needs to return system time and not
138
+ // just any microseconds because it is often used as an argument
139
+ // to TimedWait() on condition variable
140
+ FILETIME ftSystemTime;
141
+ GetSystemTimePreciseAsFileTime_(&ftSystemTime);
142
+
143
+ LARGE_INTEGER li;
144
+ li.LowPart = ftSystemTime.dwLowDateTime;
145
+ li.HighPart = ftSystemTime.dwHighDateTime;
146
+ // Subtract unix epoch start
147
+ li.QuadPart -= c_UnixEpochStartTicks;
148
+ // Convert to microsecs
149
+ li.QuadPart /= c_FtToMicroSec;
150
+ return li.QuadPart;
151
+ }
152
+ using namespace std::chrono;
153
+ return duration_cast<microseconds>(system_clock::now().time_since_epoch())
154
+ .count();
155
+ }
156
+
157
+ uint64_t WinClock::NowNanos() {
158
+ if (nano_seconds_per_period_ != 0) {
159
+ // all std::chrono clocks on windows have the same resolution that is only
160
+ // good enough for microseconds but not nanoseconds
161
+ // On Windows 8 and Windows 2012 Server
162
+ // GetSystemTimePreciseAsFileTime(&current_time) can be used
163
+ LARGE_INTEGER li;
164
+ QueryPerformanceCounter(&li);
165
+ // Convert performance counter to nanoseconds by precomputed ratio.
166
+ // Directly multiply nano::den with li.QuadPart causes overflow.
167
+ // Only do this when nano::den is divisible by perf_counter_frequency_,
168
+ // which most likely is the case in reality. If it's not, fall back to
169
+ // high_resolution_clock, which may be less precise under old compilers.
170
+ li.QuadPart *= nano_seconds_per_period_;
171
+ return li.QuadPart;
172
+ }
173
+ using namespace std::chrono;
174
+ return duration_cast<nanoseconds>(
175
+ high_resolution_clock::now().time_since_epoch())
176
+ .count();
177
+ }
178
+
179
+ Status WinClock::GetCurrentTime(int64_t* unix_time) {
180
+ time_t time = std::time(nullptr);
181
+ if (time == (time_t)(-1)) {
182
+ return Status::NotSupported("Failed to get time");
183
+ }
184
+
185
+ *unix_time = time;
186
+ return Status::OK();
187
+ }
188
+
189
+ WinFileSystem::WinFileSystem(const std::shared_ptr<WinClock>& clock)
190
+ : clock_(clock), page_size_(4 * 1024), allocation_granularity_(page_size_) {
191
+ SYSTEM_INFO sinfo;
192
+ GetSystemInfo(&sinfo);
193
+
194
+ page_size_ = sinfo.dwPageSize;
195
+ allocation_granularity_ = sinfo.dwAllocationGranularity;
196
+ }
197
+
198
+ const std::shared_ptr<WinFileSystem>& WinFileSystem::Default() {
199
+ static std::shared_ptr<WinFileSystem> fs =
200
+ std::make_shared<WinFileSystem>(WinClock::Default());
201
+ return fs;
202
+ }
203
+
204
+ WinEnvIO::WinEnvIO(Env* hosted_env) : hosted_env_(hosted_env) {}
205
+
206
+ WinEnvIO::~WinEnvIO() {}
207
+
208
+ IOStatus WinFileSystem::DeleteFile(const std::string& fname,
209
+ const IOOptions& /*options*/,
210
+ IODebugContext* /*dbg*/) {
211
+ IOStatus result;
212
+
213
+ BOOL ret = RX_DeleteFile(RX_FN(fname).c_str());
214
+
215
+ if (!ret) {
216
+ auto lastError = GetLastError();
217
+ result = IOErrorFromWindowsError("Failed to delete: " + fname, lastError);
218
+ }
219
+
220
+ return result;
221
+ }
222
+
223
+ IOStatus WinFileSystem::Truncate(const std::string& fname, size_t size,
224
+ const IOOptions& /*options*/,
225
+ IODebugContext* /*dbg*/) {
226
+ IOStatus s;
227
+ int result = ROCKSDB_NAMESPACE::port::Truncate(fname, size);
228
+ if (result != 0) {
229
+ s = IOError("Failed to truncate: " + fname, errno);
230
+ }
231
+ return s;
232
+ }
233
+
234
+ IOStatus WinFileSystem::NewSequentialFile(
235
+ const std::string& fname, const FileOptions& options,
236
+ std::unique_ptr<FSSequentialFile>* result, IODebugContext* /*dbg*/) {
237
+ IOStatus s;
238
+
239
+ result->reset();
240
+
241
+ // Corruption test needs to rename and delete files of these kind
242
+ // while they are still open with another handle. For that reason we
243
+ // allow share_write and delete(allows rename).
244
+ HANDLE hFile = INVALID_HANDLE_VALUE;
245
+
246
+ DWORD fileFlags = FILE_ATTRIBUTE_READONLY;
247
+
248
+ if (options.use_direct_reads && !options.use_mmap_reads) {
249
+ fileFlags |= FILE_FLAG_NO_BUFFERING;
250
+ }
251
+
252
+ {
253
+ IOSTATS_TIMER_GUARD(open_nanos);
254
+ hFile = RX_CreateFile(
255
+ RX_FN(fname).c_str(), GENERIC_READ,
256
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
257
+ OPEN_EXISTING, // Original fopen mode is "rb"
258
+ fileFlags, NULL);
259
+ }
260
+
261
+ if (INVALID_HANDLE_VALUE == hFile) {
262
+ auto lastError = GetLastError();
263
+ s = IOErrorFromWindowsError("Failed to open NewSequentialFile" + fname,
264
+ lastError);
265
+ } else {
266
+ result->reset(new WinSequentialFile(fname, hFile, options));
267
+ }
268
+ return s;
269
+ }
270
+
271
+ IOStatus WinFileSystem::NewRandomAccessFile(
272
+ const std::string& fname, const FileOptions& options,
273
+ std::unique_ptr<FSRandomAccessFile>* result, IODebugContext* dbg) {
274
+ result->reset();
275
+ IOStatus s;
276
+
277
+ // Open the file for read-only random access
278
+ // Random access is to disable read-ahead as the system reads too much data
279
+ DWORD fileFlags = FILE_ATTRIBUTE_READONLY;
280
+
281
+ if (options.use_direct_reads && !options.use_mmap_reads) {
282
+ fileFlags |= FILE_FLAG_NO_BUFFERING;
283
+ } else {
284
+ fileFlags |= FILE_FLAG_RANDOM_ACCESS;
285
+ }
286
+
287
+ /// Shared access is necessary for corruption test to pass
288
+ // almost all tests would work with a possible exception of fault_injection
289
+ HANDLE hFile = 0;
290
+ {
291
+ IOSTATS_TIMER_GUARD(open_nanos);
292
+ hFile =
293
+ RX_CreateFile(RX_FN(fname).c_str(), GENERIC_READ,
294
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
295
+ NULL, OPEN_EXISTING, fileFlags, NULL);
296
+ }
297
+
298
+ if (INVALID_HANDLE_VALUE == hFile) {
299
+ auto lastError = GetLastError();
300
+ return IOErrorFromWindowsError(
301
+ "NewRandomAccessFile failed to Create/Open: " + fname, lastError);
302
+ }
303
+
304
+ UniqueCloseHandlePtr fileGuard(hFile, CloseHandleFunc);
305
+
306
+ // CAUTION! This will map the entire file into the process address space
307
+ if (options.use_mmap_reads && sizeof(void*) >= 8) {
308
+ // Use mmap when virtual address-space is plentiful.
309
+ uint64_t fileSize;
310
+
311
+ s = GetFileSize(fname, IOOptions(), &fileSize, dbg);
312
+
313
+ if (s.ok()) {
314
+ // Will not map empty files
315
+ if (fileSize == 0) {
316
+ return IOError("NewRandomAccessFile failed to map empty file: " + fname,
317
+ EINVAL);
318
+ }
319
+
320
+ HANDLE hMap = RX_CreateFileMapping(hFile, NULL, PAGE_READONLY,
321
+ 0, // At its present length
322
+ 0,
323
+ NULL); // Mapping name
324
+
325
+ if (!hMap) {
326
+ auto lastError = GetLastError();
327
+ return IOErrorFromWindowsError(
328
+ "Failed to create file mapping for NewRandomAccessFile: " + fname,
329
+ lastError);
330
+ }
331
+
332
+ UniqueCloseHandlePtr mapGuard(hMap, CloseHandleFunc);
333
+
334
+ const void* mapped_region =
335
+ MapViewOfFileEx(hMap, FILE_MAP_READ,
336
+ 0, // High DWORD of access start
337
+ 0, // Low DWORD
338
+ static_cast<SIZE_T>(fileSize),
339
+ NULL); // Let the OS choose the mapping
340
+
341
+ if (!mapped_region) {
342
+ auto lastError = GetLastError();
343
+ return IOErrorFromWindowsError(
344
+ "Failed to MapViewOfFile for NewRandomAccessFile: " + fname,
345
+ lastError);
346
+ }
347
+
348
+ result->reset(new WinMmapReadableFile(fname, hFile, hMap, mapped_region,
349
+ static_cast<size_t>(fileSize)));
350
+
351
+ mapGuard.release();
352
+ fileGuard.release();
353
+ }
354
+ } else {
355
+ result->reset(new WinRandomAccessFile(
356
+ fname, hFile, std::max(GetSectorSize(fname), page_size_), options));
357
+ fileGuard.release();
358
+ }
359
+ return s;
360
+ }
361
+
362
+ IOStatus WinFileSystem::OpenWritableFile(
363
+ const std::string& fname, const FileOptions& options,
364
+ std::unique_ptr<FSWritableFile>* result, bool reopen) {
365
+ const size_t c_BufferCapacity = 64 * 1024;
366
+
367
+ EnvOptions local_options(options);
368
+
369
+ result->reset();
370
+ IOStatus s;
371
+
372
+ DWORD fileFlags = FILE_ATTRIBUTE_NORMAL;
373
+
374
+ if (local_options.use_direct_writes && !local_options.use_mmap_writes) {
375
+ fileFlags = FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH;
376
+ }
377
+
378
+ // Desired access. We are want to write only here but if we want to memory
379
+ // map
380
+ // the file then there is no write only mode so we have to create it
381
+ // Read/Write
382
+ // However, MapViewOfFile specifies only Write only
383
+ DWORD desired_access = GENERIC_WRITE;
384
+ DWORD shared_mode = FILE_SHARE_READ;
385
+
386
+ if (local_options.use_mmap_writes) {
387
+ desired_access |= GENERIC_READ;
388
+ } else {
389
+ // Adding this solely for tests to pass (fault_injection_test,
390
+ // wal_manager_test).
391
+ shared_mode |= (FILE_SHARE_WRITE | FILE_SHARE_DELETE);
392
+ }
393
+
394
+ // This will always truncate the file
395
+ DWORD creation_disposition = CREATE_ALWAYS;
396
+ if (reopen) {
397
+ creation_disposition = OPEN_ALWAYS;
398
+ }
399
+
400
+ HANDLE hFile = 0;
401
+ {
402
+ IOSTATS_TIMER_GUARD(open_nanos);
403
+ hFile = RX_CreateFile(
404
+ RX_FN(fname).c_str(),
405
+ desired_access, // Access desired
406
+ shared_mode,
407
+ NULL, // Security attributes
408
+ // Posix env says (reopen) ? (O_CREATE | O_APPEND) : O_CREAT | O_TRUNC
409
+ creation_disposition,
410
+ fileFlags, // Flags
411
+ NULL); // Template File
412
+ }
413
+
414
+ if (INVALID_HANDLE_VALUE == hFile) {
415
+ auto lastError = GetLastError();
416
+ return IOErrorFromWindowsError(
417
+ "Failed to create a NewWriteableFile: " + fname, lastError);
418
+ }
419
+
420
+ // We will start writing at the end, appending
421
+ if (reopen) {
422
+ LARGE_INTEGER zero_move;
423
+ zero_move.QuadPart = 0;
424
+ BOOL ret = SetFilePointerEx(hFile, zero_move, NULL, FILE_END);
425
+ if (!ret) {
426
+ auto lastError = GetLastError();
427
+ return IOErrorFromWindowsError(
428
+ "Failed to create a ReopenWritableFile move to the end: " + fname,
429
+ lastError);
430
+ }
431
+ }
432
+
433
+ if (options.use_mmap_writes) {
434
+ // We usually do not use mmmapping on SSD and thus we pass memory
435
+ // page_size
436
+ result->reset(new WinMmapFile(fname, hFile, page_size_,
437
+ allocation_granularity_, local_options));
438
+ } else {
439
+ // Here we want the buffer allocation to be aligned by the SSD page size
440
+ // and to be a multiple of it
441
+ result->reset(new WinWritableFile(
442
+ fname, hFile, std::max(GetSectorSize(fname), GetPageSize()),
443
+ c_BufferCapacity, local_options));
444
+ }
445
+ return s;
446
+ }
447
+
448
+ IOStatus WinFileSystem::NewWritableFile(const std::string& fname,
449
+ const FileOptions& options,
450
+ std::unique_ptr<FSWritableFile>* result,
451
+ IODebugContext* /*dbg*/) {
452
+ return OpenWritableFile(fname, options, result, false);
453
+ }
454
+
455
+ IOStatus WinFileSystem::ReopenWritableFile(
456
+ const std::string& fname, const FileOptions& options,
457
+ std::unique_ptr<FSWritableFile>* result, IODebugContext* /*dbg*/) {
458
+ return OpenWritableFile(fname, options, result, true);
459
+ }
460
+
461
+ IOStatus WinFileSystem::NewRandomRWFile(const std::string& fname,
462
+ const FileOptions& options,
463
+ std::unique_ptr<FSRandomRWFile>* result,
464
+ IODebugContext* /*dbg*/) {
465
+ IOStatus s;
466
+
467
+ // Open the file for read-only random access
468
+ // Random access is to disable read-ahead as the system reads too much data
469
+ DWORD desired_access = GENERIC_READ | GENERIC_WRITE;
470
+ DWORD shared_mode = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE;
471
+ DWORD creation_disposition = OPEN_EXISTING; // Fail if file does not exist
472
+ DWORD file_flags = FILE_FLAG_RANDOM_ACCESS;
473
+
474
+ if (options.use_direct_reads && options.use_direct_writes) {
475
+ file_flags |= FILE_FLAG_NO_BUFFERING;
476
+ }
477
+
478
+ /// Shared access is necessary for corruption test to pass
479
+ // almost all tests would work with a possible exception of fault_injection
480
+ HANDLE hFile = 0;
481
+ {
482
+ IOSTATS_TIMER_GUARD(open_nanos);
483
+ hFile = RX_CreateFile(RX_FN(fname).c_str(), desired_access, shared_mode,
484
+ NULL, // Security attributes
485
+ creation_disposition, file_flags, NULL);
486
+ }
487
+
488
+ if (INVALID_HANDLE_VALUE == hFile) {
489
+ auto lastError = GetLastError();
490
+ return IOErrorFromWindowsError(
491
+ "NewRandomRWFile failed to Create/Open: " + fname, lastError);
492
+ }
493
+
494
+ UniqueCloseHandlePtr fileGuard(hFile, CloseHandleFunc);
495
+ result->reset(new WinRandomRWFile(
496
+ fname, hFile, std::max(GetSectorSize(fname), GetPageSize()), options));
497
+ fileGuard.release();
498
+
499
+ return s;
500
+ }
501
+
502
+ IOStatus WinFileSystem::NewMemoryMappedFileBuffer(
503
+ const std::string& fname, std::unique_ptr<MemoryMappedFileBuffer>* result) {
504
+ IOStatus s;
505
+ result->reset();
506
+
507
+ DWORD fileFlags = FILE_ATTRIBUTE_READONLY;
508
+
509
+ HANDLE hFile = INVALID_HANDLE_VALUE;
510
+ {
511
+ IOSTATS_TIMER_GUARD(open_nanos);
512
+ hFile = RX_CreateFile(
513
+ RX_FN(fname).c_str(), GENERIC_READ | GENERIC_WRITE,
514
+ FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, NULL,
515
+ OPEN_EXISTING, // Open only if it exists
516
+ fileFlags, NULL);
517
+ }
518
+
519
+ if (INVALID_HANDLE_VALUE == hFile) {
520
+ auto lastError = GetLastError();
521
+ s = IOErrorFromWindowsError(
522
+ "Failed to open NewMemoryMappedFileBuffer: " + fname, lastError);
523
+ return s;
524
+ }
525
+ UniqueCloseHandlePtr fileGuard(hFile, CloseHandleFunc);
526
+
527
+ uint64_t fileSize = 0;
528
+ s = GetFileSize(fname, IOOptions(), &fileSize, nullptr);
529
+ if (!s.ok()) {
530
+ return s;
531
+ }
532
+ // Will not map empty files
533
+ if (fileSize == 0) {
534
+ return IOStatus::NotSupported(
535
+ "NewMemoryMappedFileBuffer can not map zero length files: " + fname);
536
+ }
537
+
538
+ // size_t is 32-bit with 32-bit builds
539
+ if (fileSize > std::numeric_limits<size_t>::max()) {
540
+ return IOStatus::NotSupported(
541
+ "The specified file size does not fit into 32-bit memory addressing: " +
542
+ fname);
543
+ }
544
+
545
+ HANDLE hMap = RX_CreateFileMapping(hFile, NULL, PAGE_READWRITE,
546
+ 0, // Whole file at its present length
547
+ 0,
548
+ NULL); // Mapping name
549
+
550
+ if (!hMap) {
551
+ auto lastError = GetLastError();
552
+ return IOErrorFromWindowsError(
553
+ "Failed to create file mapping for: " + fname, lastError);
554
+ }
555
+ UniqueCloseHandlePtr mapGuard(hMap, CloseHandleFunc);
556
+
557
+ void* base = MapViewOfFileEx(hMap, FILE_MAP_WRITE,
558
+ 0, // High DWORD of access start
559
+ 0, // Low DWORD
560
+ static_cast<SIZE_T>(fileSize),
561
+ NULL); // Let the OS choose the mapping
562
+
563
+ if (!base) {
564
+ auto lastError = GetLastError();
565
+ return IOErrorFromWindowsError(
566
+ "Failed to MapViewOfFile for NewMemoryMappedFileBuffer: " + fname,
567
+ lastError);
568
+ }
569
+
570
+ result->reset(new WinMemoryMappedBuffer(hFile, hMap, base,
571
+ static_cast<size_t>(fileSize)));
572
+
573
+ mapGuard.release();
574
+ fileGuard.release();
575
+
576
+ return s;
577
+ }
578
+
579
+ IOStatus WinFileSystem::NewDirectory(const std::string& name,
580
+ const IOOptions& /*options*/,
581
+ std::unique_ptr<FSDirectory>* result,
582
+ IODebugContext* /*dbg*/) {
583
+ IOStatus s;
584
+ // Must be nullptr on failure
585
+ result->reset();
586
+
587
+ if (!DirExists(name)) {
588
+ s = IOErrorFromWindowsError("open folder: " + name, ERROR_DIRECTORY);
589
+ return s;
590
+ }
591
+
592
+ HANDLE handle = INVALID_HANDLE_VALUE;
593
+ // 0 - for access means read metadata
594
+ {
595
+ IOSTATS_TIMER_GUARD(open_nanos);
596
+ handle = RX_CreateFile(
597
+ RX_FN(name).c_str(), 0,
598
+ FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
599
+ OPEN_EXISTING,
600
+ FILE_FLAG_BACKUP_SEMANTICS, // make opening folders possible
601
+ NULL);
602
+ }
603
+
604
+ if (INVALID_HANDLE_VALUE == handle) {
605
+ auto lastError = GetLastError();
606
+ s = IOErrorFromWindowsError("open folder: " + name, lastError);
607
+ return s;
608
+ }
609
+
610
+ result->reset(new WinDirectory(handle));
611
+
612
+ return s;
613
+ }
614
+
615
+ IOStatus WinFileSystem::FileExists(const std::string& fname,
616
+ const IOOptions& /*opts*/,
617
+ IODebugContext* /*dbg*/) {
618
+ IOStatus s;
619
+ // TODO: This does not follow symbolic links at this point
620
+ // which is consistent with _access() impl on windows
621
+ // but can be added
622
+ WIN32_FILE_ATTRIBUTE_DATA attrs;
623
+ if (FALSE == RX_GetFileAttributesEx(RX_FN(fname).c_str(),
624
+ GetFileExInfoStandard, &attrs)) {
625
+ auto lastError = GetLastError();
626
+ switch (lastError) {
627
+ case ERROR_ACCESS_DENIED:
628
+ case ERROR_NOT_FOUND:
629
+ case ERROR_FILE_NOT_FOUND:
630
+ case ERROR_PATH_NOT_FOUND:
631
+ s = IOStatus::NotFound();
632
+ break;
633
+ default:
634
+ s = IOErrorFromWindowsError("Unexpected error for: " + fname,
635
+ lastError);
636
+ break;
637
+ }
638
+ }
639
+ return s;
640
+ }
641
+
642
+ IOStatus WinFileSystem::GetChildren(const std::string& dir,
643
+ const IOOptions& /*opts*/,
644
+ std::vector<std::string>* result,
645
+ IODebugContext* /*dbg*/) {
646
+ IOStatus status;
647
+ result->clear();
648
+
649
+ RX_WIN32_FIND_DATA data;
650
+ memset(&data, 0, sizeof(data));
651
+ std::string pattern(dir);
652
+ pattern.append("\\").append("*");
653
+
654
+ HANDLE handle =
655
+ RX_FindFirstFileEx(RX_FN(pattern).c_str(),
656
+ // Do not want alternative name
657
+ FindExInfoBasic, &data, FindExSearchNameMatch,
658
+ NULL, // lpSearchFilter
659
+ 0);
660
+
661
+ if (handle == INVALID_HANDLE_VALUE) {
662
+ auto lastError = GetLastError();
663
+ switch (lastError) {
664
+ case ERROR_NOT_FOUND:
665
+ case ERROR_ACCESS_DENIED:
666
+ case ERROR_FILE_NOT_FOUND:
667
+ case ERROR_PATH_NOT_FOUND:
668
+ status = IOStatus::NotFound();
669
+ break;
670
+ default:
671
+ status = IOErrorFromWindowsError("Failed to GetChhildren for: " + dir,
672
+ lastError);
673
+ }
674
+ return status;
675
+ }
676
+
677
+ UniqueFindClosePtr fc(handle, FindCloseFunc);
678
+
679
+ // For safety
680
+ data.cFileName[MAX_PATH - 1] = 0;
681
+
682
+ while (true) {
683
+ // filter out '.' and '..' directory entries
684
+ // which appear only on some platforms
685
+ const bool ignore =
686
+ ((data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0) &&
687
+ (strcmp(data.cFileName, ".") == 0 || strcmp(data.cFileName, "..") == 0);
688
+ if (!ignore) {
689
+ auto x = RX_FILESTRING(data.cFileName, RX_FNLEN(data.cFileName));
690
+ result->push_back(FN_TO_RX(x));
691
+ }
692
+
693
+ BOOL ret = -RX_FindNextFile(handle, &data);
694
+ // If the function fails the return value is zero
695
+ // and non-zero otherwise. Not TRUE or FALSE.
696
+ if (ret == FALSE) {
697
+ // Posix does not care why we stopped
698
+ break;
699
+ }
700
+ data.cFileName[MAX_PATH - 1] = 0;
701
+ }
702
+ return status;
703
+ }
704
+
705
+ IOStatus WinFileSystem::CreateDir(const std::string& name,
706
+ const IOOptions& /*opts*/,
707
+ IODebugContext* /*dbg*/) {
708
+ IOStatus result;
709
+ BOOL ret = RX_CreateDirectory(RX_FN(name).c_str(), NULL);
710
+ if (!ret) {
711
+ auto lastError = GetLastError();
712
+ result = IOErrorFromWindowsError("Failed to create a directory: " + name,
713
+ lastError);
714
+ }
715
+
716
+ return result;
717
+ }
718
+
719
+ IOStatus WinFileSystem::CreateDirIfMissing(const std::string& name,
720
+ const IOOptions& /*opts*/,
721
+ IODebugContext* /*dbg*/) {
722
+ IOStatus result;
723
+
724
+ if (DirExists(name)) {
725
+ return result;
726
+ }
727
+
728
+ BOOL ret = RX_CreateDirectory(RX_FN(name).c_str(), NULL);
729
+ if (!ret) {
730
+ auto lastError = GetLastError();
731
+ if (lastError != ERROR_ALREADY_EXISTS) {
732
+ result = IOErrorFromWindowsError("Failed to create a directory: " + name,
733
+ lastError);
734
+ } else {
735
+ result = IOStatus::IOError(name + ": exists but is not a directory");
736
+ }
737
+ }
738
+ return result;
739
+ }
740
+
741
+ IOStatus WinFileSystem::DeleteDir(const std::string& name,
742
+ const IOOptions& /*options*/,
743
+ IODebugContext* /*dbg*/) {
744
+ IOStatus result;
745
+ BOOL ret = RX_RemoveDirectory(RX_FN(name).c_str());
746
+ if (!ret) {
747
+ auto lastError = GetLastError();
748
+ result =
749
+ IOErrorFromWindowsError("Failed to remove dir: " + name, lastError);
750
+ }
751
+ return result;
752
+ }
753
+
754
+ IOStatus WinFileSystem::GetFileSize(const std::string& fname,
755
+ const IOOptions& /*opts*/, uint64_t* size,
756
+ IODebugContext* /*dbg*/) {
757
+ IOStatus s;
758
+
759
+ WIN32_FILE_ATTRIBUTE_DATA attrs;
760
+ if (RX_GetFileAttributesEx(RX_FN(fname).c_str(), GetFileExInfoStandard,
761
+ &attrs)) {
762
+ ULARGE_INTEGER file_size;
763
+ file_size.HighPart = attrs.nFileSizeHigh;
764
+ file_size.LowPart = attrs.nFileSizeLow;
765
+ *size = file_size.QuadPart;
766
+ } else {
767
+ auto lastError = GetLastError();
768
+ s = IOErrorFromWindowsError("Can not get size for: " + fname, lastError);
769
+ }
770
+ return s;
771
+ }
772
+
773
+ uint64_t WinFileSystem::FileTimeToUnixTime(const FILETIME& ftTime) {
774
+ const uint64_t c_FileTimePerSecond = 10000000U;
775
+ // UNIX epoch starts on 1970-01-01T00:00:00Z
776
+ // Windows FILETIME starts on 1601-01-01T00:00:00Z
777
+ // Therefore, we need to subtract the below number of seconds from
778
+ // the seconds that we obtain from FILETIME with an obvious loss of
779
+ // precision
780
+ const uint64_t c_SecondBeforeUnixEpoch = 11644473600U;
781
+
782
+ ULARGE_INTEGER li;
783
+ li.HighPart = ftTime.dwHighDateTime;
784
+ li.LowPart = ftTime.dwLowDateTime;
785
+
786
+ uint64_t result =
787
+ (li.QuadPart / c_FileTimePerSecond) - c_SecondBeforeUnixEpoch;
788
+ return result;
789
+ }
790
+
791
+ IOStatus WinFileSystem::GetFileModificationTime(const std::string& fname,
792
+ const IOOptions& /*opts*/,
793
+ uint64_t* file_mtime,
794
+ IODebugContext* /*dbg*/) {
795
+ IOStatus s;
796
+
797
+ WIN32_FILE_ATTRIBUTE_DATA attrs;
798
+ if (RX_GetFileAttributesEx(RX_FN(fname).c_str(), GetFileExInfoStandard,
799
+ &attrs)) {
800
+ *file_mtime = FileTimeToUnixTime(attrs.ftLastWriteTime);
801
+ } else {
802
+ auto lastError = GetLastError();
803
+ s = IOErrorFromWindowsError(
804
+ "Can not get file modification time for: " + fname, lastError);
805
+ *file_mtime = 0;
806
+ }
807
+
808
+ return s;
809
+ }
810
+
811
+ IOStatus WinFileSystem::RenameFile(const std::string& src,
812
+ const std::string& target,
813
+ const IOOptions& /*opts*/,
814
+ IODebugContext* /*dbg*/) {
815
+ IOStatus result;
816
+
817
+ // rename() is not capable of replacing the existing file as on Linux
818
+ // so use OS API directly
819
+ if (!RX_MoveFileEx(RX_FN(src).c_str(), RX_FN(target).c_str(),
820
+ MOVEFILE_REPLACE_EXISTING)) {
821
+ DWORD lastError = GetLastError();
822
+
823
+ std::string text("Failed to rename: ");
824
+ text.append(src).append(" to: ").append(target);
825
+
826
+ result = IOErrorFromWindowsError(text, lastError);
827
+ }
828
+
829
+ return result;
830
+ }
831
+
832
+ IOStatus WinFileSystem::LinkFile(const std::string& src,
833
+ const std::string& target,
834
+ const IOOptions& /*opts*/,
835
+ IODebugContext* /*dbg*/) {
836
+ IOStatus result;
837
+
838
+ if (!RX_CreateHardLink(RX_FN(target).c_str(), RX_FN(src).c_str(), NULL)) {
839
+ DWORD lastError = GetLastError();
840
+ if (lastError == ERROR_NOT_SAME_DEVICE) {
841
+ return IOStatus::NotSupported("No cross FS links allowed");
842
+ }
843
+
844
+ std::string text("Failed to link: ");
845
+ text.append(src).append(" to: ").append(target);
846
+
847
+ result = IOErrorFromWindowsError(text, lastError);
848
+ }
849
+
850
+ return result;
851
+ }
852
+
853
+ IOStatus WinFileSystem::NumFileLinks(const std::string& fname,
854
+ const IOOptions& /*opts*/, uint64_t* count,
855
+ IODebugContext* /*dbg*/) {
856
+ IOStatus s;
857
+ HANDLE handle =
858
+ RX_CreateFile(RX_FN(fname).c_str(), 0,
859
+ FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE,
860
+ NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
861
+
862
+ if (INVALID_HANDLE_VALUE == handle) {
863
+ auto lastError = GetLastError();
864
+ s = IOErrorFromWindowsError("NumFileLinks: " + fname, lastError);
865
+ return s;
866
+ }
867
+ UniqueCloseHandlePtr handle_guard(handle, CloseHandleFunc);
868
+ FILE_STANDARD_INFO standard_info;
869
+ if (0 != GetFileInformationByHandleEx(handle, FileStandardInfo,
870
+ &standard_info,
871
+ sizeof(standard_info))) {
872
+ *count = standard_info.NumberOfLinks;
873
+ } else {
874
+ auto lastError = GetLastError();
875
+ s = IOErrorFromWindowsError("GetFileInformationByHandleEx: " + fname,
876
+ lastError);
877
+ }
878
+ return s;
879
+ }
880
+
881
+ IOStatus WinFileSystem::AreFilesSame(const std::string& first,
882
+ const std::string& second,
883
+ const IOOptions& /*opts*/, bool* res,
884
+ IODebugContext* /*dbg*/) {
885
+ // For MinGW builds
886
+ #if (_WIN32_WINNT == _WIN32_WINNT_VISTA)
887
+ IOStatus s = IOStatus::NotSupported();
888
+ #else
889
+ assert(res != nullptr);
890
+ IOStatus s;
891
+ if (res == nullptr) {
892
+ s = IOStatus::InvalidArgument("res");
893
+ return s;
894
+ }
895
+
896
+ // 0 - for access means read metadata
897
+ HANDLE file_1 = RX_CreateFile(
898
+ RX_FN(first).c_str(), 0,
899
+ FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
900
+ OPEN_EXISTING,
901
+ FILE_FLAG_BACKUP_SEMANTICS, // make opening folders possible
902
+ NULL);
903
+
904
+ if (INVALID_HANDLE_VALUE == file_1) {
905
+ auto lastError = GetLastError();
906
+ s = IOErrorFromWindowsError("open file: " + first, lastError);
907
+ return s;
908
+ }
909
+ UniqueCloseHandlePtr g_1(file_1, CloseHandleFunc);
910
+
911
+ HANDLE file_2 = RX_CreateFile(
912
+ RX_FN(second).c_str(), 0,
913
+ FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
914
+ OPEN_EXISTING,
915
+ FILE_FLAG_BACKUP_SEMANTICS, // make opening folders possible
916
+ NULL);
917
+
918
+ if (INVALID_HANDLE_VALUE == file_2) {
919
+ auto lastError = GetLastError();
920
+ s = IOErrorFromWindowsError("open file: " + second, lastError);
921
+ return s;
922
+ }
923
+ UniqueCloseHandlePtr g_2(file_2, CloseHandleFunc);
924
+
925
+ FILE_ID_INFO FileInfo_1;
926
+ BOOL result = GetFileInformationByHandleEx(file_1, FileIdInfo, &FileInfo_1,
927
+ sizeof(FileInfo_1));
928
+
929
+ if (!result) {
930
+ auto lastError = GetLastError();
931
+ s = IOErrorFromWindowsError("stat file: " + first, lastError);
932
+ return s;
933
+ }
934
+
935
+ FILE_ID_INFO FileInfo_2;
936
+ result = GetFileInformationByHandleEx(file_2, FileIdInfo, &FileInfo_2,
937
+ sizeof(FileInfo_2));
938
+
939
+ if (!result) {
940
+ auto lastError = GetLastError();
941
+ s = IOErrorFromWindowsError("stat file: " + second, lastError);
942
+ return s;
943
+ }
944
+
945
+ if (FileInfo_1.VolumeSerialNumber == FileInfo_2.VolumeSerialNumber) {
946
+ *res =
947
+ (0 == memcmp(FileInfo_1.FileId.Identifier, FileInfo_2.FileId.Identifier,
948
+ sizeof(FileInfo_1.FileId.Identifier)));
949
+ } else {
950
+ *res = false;
951
+ }
952
+ #endif
953
+ return s;
954
+ }
955
+
956
+ IOStatus WinFileSystem::LockFile(const std::string& lockFname,
957
+ const IOOptions& /*opts*/, FileLock** lock,
958
+ IODebugContext* /*dbg*/) {
959
+ assert(lock != nullptr);
960
+
961
+ *lock = NULL;
962
+ IOStatus result;
963
+
964
+ // No-sharing, this is a LOCK file
965
+ const DWORD ExclusiveAccessON = 0;
966
+
967
+ // Obtain exclusive access to the LOCK file
968
+ // Previously, instead of NORMAL attr we set DELETE on close and that worked
969
+ // well except with fault_injection test that insists on deleting it.
970
+ HANDLE hFile = 0;
971
+ {
972
+ IOSTATS_TIMER_GUARD(open_nanos);
973
+ hFile = RX_CreateFile(RX_FN(lockFname).c_str(),
974
+ (GENERIC_READ | GENERIC_WRITE), ExclusiveAccessON,
975
+ NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
976
+ }
977
+
978
+ if (INVALID_HANDLE_VALUE == hFile) {
979
+ auto lastError = GetLastError();
980
+ result = IOErrorFromWindowsError("Failed to create lock file: " + lockFname,
981
+ lastError);
982
+ } else {
983
+ *lock = new WinFileLock(hFile);
984
+ }
985
+
986
+ return result;
987
+ }
988
+
989
+ IOStatus WinFileSystem::UnlockFile(FileLock* lock, const IOOptions& /*opts*/,
990
+ IODebugContext* /*dbg*/) {
991
+ IOStatus result;
992
+
993
+ assert(lock != nullptr);
994
+
995
+ delete lock;
996
+
997
+ return result;
998
+ }
999
+
1000
+ IOStatus WinFileSystem::GetTestDirectory(const IOOptions& opts,
1001
+ std::string* result,
1002
+ IODebugContext* dbg) {
1003
+ std::string output;
1004
+
1005
+ const char* env = getenv("TEST_TMPDIR");
1006
+ if (env && env[0] != '\0') {
1007
+ output = env;
1008
+ } else {
1009
+ env = getenv("TMP");
1010
+
1011
+ if (env && env[0] != '\0') {
1012
+ output = env;
1013
+ } else {
1014
+ output = "c:\\tmp";
1015
+ }
1016
+ }
1017
+ CreateDir(output, opts, dbg);
1018
+
1019
+ output.append("\\testrocksdb-");
1020
+ output.append(std::to_string(GetCurrentProcessId()));
1021
+
1022
+ CreateDir(output, opts, dbg);
1023
+
1024
+ output.swap(*result);
1025
+
1026
+ return IOStatus::OK();
1027
+ }
1028
+
1029
+ IOStatus WinFileSystem::NewLogger(const std::string& fname,
1030
+ const IOOptions& /*opts*/,
1031
+ std::shared_ptr<Logger>* result,
1032
+ IODebugContext* /*dbg*/) {
1033
+ IOStatus s;
1034
+
1035
+ result->reset();
1036
+
1037
+ HANDLE hFile = 0;
1038
+ {
1039
+ IOSTATS_TIMER_GUARD(open_nanos);
1040
+ hFile = RX_CreateFile(
1041
+ RX_FN(fname).c_str(), GENERIC_WRITE,
1042
+ FILE_SHARE_READ | FILE_SHARE_DELETE, // In RocksDb log files are
1043
+ // renamed and deleted before
1044
+ // they are closed. This enables
1045
+ // doing so.
1046
+ NULL,
1047
+ CREATE_ALWAYS, // Original fopen mode is "w"
1048
+ FILE_ATTRIBUTE_NORMAL, NULL);
1049
+ }
1050
+
1051
+ if (INVALID_HANDLE_VALUE == hFile) {
1052
+ auto lastError = GetLastError();
1053
+ s = IOErrorFromWindowsError("Failed to open LogFile" + fname, lastError);
1054
+ } else {
1055
+ {
1056
+ // With log files we want to set the true creation time as of now
1057
+ // because the system
1058
+ // for some reason caches the attributes of the previous file that just
1059
+ // been renamed from
1060
+ // this name so auto_roll_logger_test fails
1061
+ FILETIME ft;
1062
+ GetSystemTimeAsFileTime(&ft);
1063
+ // Set creation, last access and last write time to the same value
1064
+ SetFileTime(hFile, &ft, &ft, &ft);
1065
+ }
1066
+ result->reset(new WinLogger(&WinEnvThreads::gettid, clock_, hFile));
1067
+ }
1068
+ return s;
1069
+ }
1070
+
1071
+ IOStatus WinFileSystem::IsDirectory(const std::string& path,
1072
+ const IOOptions& /*opts*/, bool* is_dir,
1073
+ IODebugContext* /*dbg*/) {
1074
+ BOOL ret = RX_PathIsDirectory(RX_FN(path).c_str());
1075
+ if (is_dir) {
1076
+ *is_dir = ret ? true : false;
1077
+ }
1078
+ return IOStatus::OK();
1079
+ }
1080
+
1081
+ Status WinEnvIO::GetHostName(char* name, uint64_t len) {
1082
+ Status s;
1083
+ DWORD nSize = static_cast<DWORD>(
1084
+ std::min<uint64_t>(len, std::numeric_limits<DWORD>::max()));
1085
+
1086
+ if (!::GetComputerNameA(name, &nSize)) {
1087
+ auto lastError = GetLastError();
1088
+ s = IOErrorFromWindowsError("GetHostName", lastError);
1089
+ } else {
1090
+ name[nSize] = 0;
1091
+ }
1092
+
1093
+ return s;
1094
+ }
1095
+
1096
+ IOStatus WinFileSystem::GetAbsolutePath(const std::string& db_path,
1097
+ const IOOptions& /*options*/,
1098
+ std::string* output_path,
1099
+ IODebugContext* dbg) {
1100
+ // Check if we already have an absolute path
1101
+ // For test compatibility we will consider starting slash as an
1102
+ // absolute path
1103
+ if ((!db_path.empty() && (db_path[0] == '\\' || db_path[0] == '/')) ||
1104
+ !RX_PathIsRelative(RX_FN(db_path).c_str())) {
1105
+ *output_path = db_path;
1106
+ return IOStatus::OK();
1107
+ }
1108
+
1109
+ RX_FILESTRING result;
1110
+ result.resize(MAX_PATH);
1111
+
1112
+ // Hopefully no changes the current directory while we do this
1113
+ // however _getcwd also suffers from the same limitation
1114
+ DWORD len = RX_GetCurrentDirectory(MAX_PATH, &result[0]);
1115
+ if (len == 0) {
1116
+ auto lastError = GetLastError();
1117
+ return IOErrorFromWindowsError("Failed to get current working directory",
1118
+ lastError);
1119
+ }
1120
+
1121
+ result.resize(len);
1122
+ std::string res = FN_TO_RX(result);
1123
+
1124
+ res.swap(*output_path);
1125
+ return IOStatus::OK();
1126
+ }
1127
+
1128
+ IOStatus WinFileSystem::GetFreeSpace(const std::string& path,
1129
+ const IOOptions& /*options*/,
1130
+ uint64_t* diskfree,
1131
+ IODebugContext* /*dbg*/) {
1132
+ assert(diskfree != nullptr);
1133
+ ULARGE_INTEGER freeBytes;
1134
+ BOOL f = RX_GetDiskFreeSpaceEx(RX_FN(path).c_str(), &freeBytes, NULL, NULL);
1135
+ if (f) {
1136
+ *diskfree = freeBytes.QuadPart;
1137
+ return IOStatus::OK();
1138
+ } else {
1139
+ DWORD lastError = GetLastError();
1140
+ return IOErrorFromWindowsError("Failed to get free space: " + path,
1141
+ lastError);
1142
+ }
1143
+ }
1144
+
1145
+ FileOptions WinFileSystem::OptimizeForLogWrite(
1146
+ const FileOptions& file_options, const DBOptions& db_options) const {
1147
+ FileOptions optimized(file_options);
1148
+ // These two the same as default optimizations
1149
+ optimized.bytes_per_sync = db_options.wal_bytes_per_sync;
1150
+ optimized.writable_file_max_buffer_size =
1151
+ db_options.writable_file_max_buffer_size;
1152
+
1153
+ // This adversely affects %999 on windows
1154
+ optimized.use_mmap_writes = false;
1155
+ // Direct writes will produce a huge perf impact on
1156
+ // Windows. Pre-allocate space for WAL.
1157
+ optimized.use_direct_writes = false;
1158
+ return optimized;
1159
+ }
1160
+
1161
+ FileOptions WinFileSystem::OptimizeForManifestWrite(
1162
+ const FileOptions& options) const {
1163
+ FileOptions optimized(options);
1164
+ optimized.use_mmap_writes = false;
1165
+ optimized.use_direct_reads = false;
1166
+ return optimized;
1167
+ }
1168
+
1169
+ FileOptions WinFileSystem::OptimizeForManifestRead(
1170
+ const FileOptions& file_options) const {
1171
+ FileOptions optimized(file_options);
1172
+ optimized.use_mmap_writes = false;
1173
+ optimized.use_direct_reads = false;
1174
+ return optimized;
1175
+ }
1176
+
1177
+ // Returns true iff the named directory exists and is a directory.
1178
+ bool WinFileSystem::DirExists(const std::string& dname) {
1179
+ WIN32_FILE_ATTRIBUTE_DATA attrs;
1180
+ if (RX_GetFileAttributesEx(RX_FN(dname).c_str(), GetFileExInfoStandard,
1181
+ &attrs)) {
1182
+ return 0 != (attrs.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY);
1183
+ }
1184
+ return false;
1185
+ }
1186
+
1187
+ size_t WinFileSystem::GetSectorSize(const std::string& fname) {
1188
+ size_t sector_size = kSectorSize;
1189
+
1190
+ if (RX_PathIsRelative(RX_FN(fname).c_str())) {
1191
+ return sector_size;
1192
+ }
1193
+
1194
+ // obtain device handle
1195
+ char devicename[7] = "\\\\.\\";
1196
+ int erresult = strncat_s(devicename, sizeof(devicename), fname.c_str(), 2);
1197
+
1198
+ if (erresult) {
1199
+ assert(false);
1200
+ return sector_size;
1201
+ }
1202
+
1203
+ HANDLE hDevice = CreateFile(devicename, 0, 0, nullptr, OPEN_EXISTING,
1204
+ FILE_ATTRIBUTE_NORMAL, nullptr);
1205
+
1206
+ if (hDevice == INVALID_HANDLE_VALUE) {
1207
+ return sector_size;
1208
+ }
1209
+
1210
+ STORAGE_PROPERTY_QUERY spropertyquery;
1211
+ spropertyquery.PropertyId = StorageAccessAlignmentProperty;
1212
+ spropertyquery.QueryType = PropertyStandardQuery;
1213
+
1214
+ BYTE output_buffer[sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR)];
1215
+ DWORD output_bytes = 0;
1216
+
1217
+ BOOL ret = DeviceIoControl(
1218
+ hDevice, IOCTL_STORAGE_QUERY_PROPERTY, &spropertyquery,
1219
+ sizeof(spropertyquery), output_buffer,
1220
+ sizeof(STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR), &output_bytes, nullptr);
1221
+
1222
+ if (ret) {
1223
+ sector_size = ((STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR*)output_buffer)
1224
+ ->BytesPerLogicalSector;
1225
+ } else {
1226
+ // many devices do not support StorageProcessAlignmentProperty. Any failure
1227
+ // here and we fall back to logical alignment
1228
+
1229
+ DISK_GEOMETRY_EX geometry = {0};
1230
+ ret = DeviceIoControl(hDevice, IOCTL_DISK_GET_DRIVE_GEOMETRY, nullptr, 0,
1231
+ &geometry, sizeof(geometry), &output_bytes, nullptr);
1232
+ if (ret) {
1233
+ sector_size = geometry.Geometry.BytesPerSector;
1234
+ }
1235
+ }
1236
+
1237
+ if (hDevice != INVALID_HANDLE_VALUE) {
1238
+ CloseHandle(hDevice);
1239
+ }
1240
+
1241
+ return sector_size;
1242
+ }
1243
+
1244
+ ////////////////////////////////////////////////////////////////////////
1245
+ // WinEnvThreads
1246
+
1247
+ WinEnvThreads::WinEnvThreads(Env* hosted_env)
1248
+ : hosted_env_(hosted_env), thread_pools_(Env::Priority::TOTAL) {
1249
+ for (int pool_id = 0; pool_id < Env::Priority::TOTAL; ++pool_id) {
1250
+ thread_pools_[pool_id].SetThreadPriority(
1251
+ static_cast<Env::Priority>(pool_id));
1252
+ // This allows later initializing the thread-local-env of each thread.
1253
+ thread_pools_[pool_id].SetHostEnv(hosted_env);
1254
+ }
1255
+ }
1256
+
1257
+ WinEnvThreads::~WinEnvThreads() {
1258
+ WaitForJoin();
1259
+
1260
+ for (auto& thpool : thread_pools_) {
1261
+ thpool.JoinAllThreads();
1262
+ }
1263
+ }
1264
+
1265
+ void WinEnvThreads::Schedule(void (*function)(void*), void* arg,
1266
+ Env::Priority pri, void* tag,
1267
+ void (*unschedFunction)(void* arg)) {
1268
+ assert(pri >= Env::Priority::BOTTOM && pri <= Env::Priority::HIGH);
1269
+ thread_pools_[pri].Schedule(function, arg, tag, unschedFunction);
1270
+ }
1271
+
1272
+ int WinEnvThreads::UnSchedule(void* arg, Env::Priority pri) {
1273
+ return thread_pools_[pri].UnSchedule(arg);
1274
+ }
1275
+
1276
+ namespace {
1277
+
1278
+ struct StartThreadState {
1279
+ void (*user_function)(void*);
1280
+ void* arg;
1281
+ };
1282
+
1283
+ void* StartThreadWrapper(void* arg) {
1284
+ std::unique_ptr<StartThreadState> state(
1285
+ reinterpret_cast<StartThreadState*>(arg));
1286
+ state->user_function(state->arg);
1287
+ return nullptr;
1288
+ }
1289
+
1290
+ } // namespace
1291
+
1292
+ void WinEnvThreads::StartThread(void (*function)(void* arg), void* arg) {
1293
+ std::unique_ptr<StartThreadState> state(new StartThreadState);
1294
+ state->user_function = function;
1295
+ state->arg = arg;
1296
+ try {
1297
+ ROCKSDB_NAMESPACE::port::WindowsThread th(&StartThreadWrapper, state.get());
1298
+ state.release();
1299
+
1300
+ std::lock_guard<std::mutex> lg(mu_);
1301
+ threads_to_join_.push_back(std::move(th));
1302
+
1303
+ } catch (const std::system_error& ex) {
1304
+ WinthreadCall("start thread", ex.code());
1305
+ }
1306
+ }
1307
+
1308
+ void WinEnvThreads::WaitForJoin() {
1309
+ for (auto& th : threads_to_join_) {
1310
+ th.join();
1311
+ }
1312
+ threads_to_join_.clear();
1313
+ }
1314
+
1315
+ unsigned int WinEnvThreads::GetThreadPoolQueueLen(Env::Priority pri) const {
1316
+ assert(pri >= Env::Priority::BOTTOM && pri <= Env::Priority::HIGH);
1317
+ return thread_pools_[pri].GetQueueLen();
1318
+ }
1319
+
1320
+ uint64_t WinEnvThreads::gettid() {
1321
+ uint64_t thread_id = GetCurrentThreadId();
1322
+ return thread_id;
1323
+ }
1324
+
1325
+ uint64_t WinEnvThreads::GetThreadID() const { return gettid(); }
1326
+
1327
+ void WinEnvThreads::SetBackgroundThreads(int num, Env::Priority pri) {
1328
+ assert(pri >= Env::Priority::BOTTOM && pri <= Env::Priority::HIGH);
1329
+ thread_pools_[pri].SetBackgroundThreads(num);
1330
+ }
1331
+
1332
+ int WinEnvThreads::GetBackgroundThreads(Env::Priority pri) {
1333
+ assert(pri >= Env::Priority::BOTTOM && pri <= Env::Priority::HIGH);
1334
+ return thread_pools_[pri].GetBackgroundThreads();
1335
+ }
1336
+
1337
+ void WinEnvThreads::IncBackgroundThreadsIfNeeded(int num, Env::Priority pri) {
1338
+ assert(pri >= Env::Priority::BOTTOM && pri <= Env::Priority::HIGH);
1339
+ thread_pools_[pri].IncBackgroundThreadsIfNeeded(num);
1340
+ }
1341
+
1342
+ /////////////////////////////////////////////////////////////////////////
1343
+ // WinEnv
1344
+
1345
+ WinEnv::WinEnv()
1346
+ : CompositeEnv(WinFileSystem::Default()),
1347
+ winenv_io_(this),
1348
+ winenv_threads_(this) {
1349
+ // Protected member of the base class
1350
+ clock_ = WinClock::Default();
1351
+ thread_status_updater_ = CreateThreadStatusUpdater();
1352
+ }
1353
+
1354
+ WinEnv::~WinEnv() {
1355
+ // All threads must be joined before the deletion of
1356
+ // thread_status_updater_.
1357
+ delete thread_status_updater_;
1358
+ }
1359
+
1360
+ Status WinEnv::GetThreadList(std::vector<ThreadStatus>* thread_list) {
1361
+ assert(thread_status_updater_);
1362
+ return thread_status_updater_->GetThreadList(thread_list);
1363
+ }
1364
+
1365
+ Status WinEnv::GetCurrentTime(int64_t* unix_time) {
1366
+ return clock_->GetCurrentTime(unix_time);
1367
+ }
1368
+
1369
+ uint64_t WinEnv::NowMicros() { return clock_->NowMicros(); }
1370
+
1371
+ uint64_t WinEnv::NowNanos() { return clock_->NowNanos(); }
1372
+
1373
+ Status WinEnv::GetHostName(char* name, uint64_t len) {
1374
+ return winenv_io_.GetHostName(name, len);
1375
+ }
1376
+
1377
+ std::string WinEnv::TimeToString(uint64_t secondsSince1970) {
1378
+ return clock_->TimeToString(secondsSince1970);
1379
+ }
1380
+
1381
+ void WinEnv::Schedule(void (*function)(void*), void* arg, Env::Priority pri,
1382
+ void* tag, void (*unschedFunction)(void* arg)) {
1383
+ return winenv_threads_.Schedule(function, arg, pri, tag, unschedFunction);
1384
+ }
1385
+
1386
+ int WinEnv::UnSchedule(void* arg, Env::Priority pri) {
1387
+ return winenv_threads_.UnSchedule(arg, pri);
1388
+ }
1389
+
1390
+ void WinEnv::StartThread(void (*function)(void* arg), void* arg) {
1391
+ return winenv_threads_.StartThread(function, arg);
1392
+ }
1393
+
1394
+ void WinEnv::WaitForJoin() { return winenv_threads_.WaitForJoin(); }
1395
+
1396
+ unsigned int WinEnv::GetThreadPoolQueueLen(Env::Priority pri) const {
1397
+ return winenv_threads_.GetThreadPoolQueueLen(pri);
1398
+ }
1399
+
1400
+ uint64_t WinEnv::GetThreadID() const { return winenv_threads_.GetThreadID(); }
1401
+
1402
+ void WinEnv::SleepForMicroseconds(int micros) {
1403
+ return clock_->SleepForMicroseconds(micros);
1404
+ }
1405
+
1406
+ // Allow increasing the number of worker threads.
1407
+ void WinEnv::SetBackgroundThreads(int num, Env::Priority pri) {
1408
+ return winenv_threads_.SetBackgroundThreads(num, pri);
1409
+ }
1410
+
1411
+ int WinEnv::GetBackgroundThreads(Env::Priority pri) {
1412
+ return winenv_threads_.GetBackgroundThreads(pri);
1413
+ }
1414
+
1415
+ void WinEnv::IncBackgroundThreadsIfNeeded(int num, Env::Priority pri) {
1416
+ return winenv_threads_.IncBackgroundThreadsIfNeeded(num, pri);
1417
+ }
1418
+
1419
+ } // namespace port
1420
+
1421
+ std::string Env::GenerateUniqueId() {
1422
+ std::string result;
1423
+
1424
+ UUID uuid;
1425
+ UuidCreateSequential(&uuid);
1426
+
1427
+ RPC_CSTR rpc_str;
1428
+ auto status = UuidToStringA(&uuid, &rpc_str);
1429
+ (void)status;
1430
+ assert(status == RPC_S_OK);
1431
+
1432
+ result = reinterpret_cast<char*>(rpc_str);
1433
+
1434
+ status = RpcStringFreeA(&rpc_str);
1435
+ assert(status == RPC_S_OK);
1436
+
1437
+ return result;
1438
+ }
1439
+
1440
+ std::shared_ptr<FileSystem> FileSystem::Default() {
1441
+ return port::WinFileSystem::Default();
1442
+ }
1443
+
1444
+ std::unique_ptr<Env> NewCompositeEnv(const std::shared_ptr<FileSystem>& fs) {
1445
+ return std::unique_ptr<Env>(new CompositeEnvWrapper(Env::Default(), fs));
1446
+ }
1447
+ } // namespace ROCKSDB_NAMESPACE
1448
+
1449
+ #endif