@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,1039 @@
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
+ #ifndef ROCKSDB_LITE
7
+
8
+ #include "utilities/transactions/write_unprepared_txn.h"
9
+ #include "db/db_impl/db_impl.h"
10
+ #include "util/cast_util.h"
11
+ #include "utilities/transactions/write_unprepared_txn_db.h"
12
+ #include "utilities/write_batch_with_index/write_batch_with_index_internal.h"
13
+
14
+ namespace ROCKSDB_NAMESPACE {
15
+
16
+ bool WriteUnpreparedTxnReadCallback::IsVisibleFullCheck(SequenceNumber seq) {
17
+ // Since unprep_seqs maps prep_seq => prepare_batch_cnt, to check if seq is
18
+ // in unprep_seqs, we have to check if seq is equal to prep_seq or any of
19
+ // the prepare_batch_cnt seq nums after it.
20
+ //
21
+ // TODO(lth): Can be optimized with std::lower_bound if unprep_seqs is
22
+ // large.
23
+ for (const auto& it : unprep_seqs_) {
24
+ if (it.first <= seq && seq < it.first + it.second) {
25
+ return true;
26
+ }
27
+ }
28
+
29
+ bool snap_released = false;
30
+ auto ret =
31
+ db_->IsInSnapshot(seq, wup_snapshot_, min_uncommitted_, &snap_released);
32
+ assert(!snap_released || backed_by_snapshot_ == kUnbackedByDBSnapshot);
33
+ snap_released_ |= snap_released;
34
+ return ret;
35
+ }
36
+
37
+ WriteUnpreparedTxn::WriteUnpreparedTxn(WriteUnpreparedTxnDB* txn_db,
38
+ const WriteOptions& write_options,
39
+ const TransactionOptions& txn_options)
40
+ : WritePreparedTxn(txn_db, write_options, txn_options),
41
+ wupt_db_(txn_db),
42
+ last_log_number_(0),
43
+ recovered_txn_(false),
44
+ largest_validated_seq_(0) {
45
+ if (txn_options.write_batch_flush_threshold < 0) {
46
+ write_batch_flush_threshold_ =
47
+ txn_db_impl_->GetTxnDBOptions().default_write_batch_flush_threshold;
48
+ } else {
49
+ write_batch_flush_threshold_ = txn_options.write_batch_flush_threshold;
50
+ }
51
+ }
52
+
53
+ WriteUnpreparedTxn::~WriteUnpreparedTxn() {
54
+ if (!unprep_seqs_.empty()) {
55
+ assert(log_number_ > 0);
56
+ assert(GetId() > 0);
57
+ assert(!name_.empty());
58
+
59
+ // We should rollback regardless of GetState, but some unit tests that
60
+ // test crash recovery run the destructor assuming that rollback does not
61
+ // happen, so that rollback during recovery can be exercised.
62
+ if (GetState() == STARTED || GetState() == LOCKS_STOLEN) {
63
+ auto s = RollbackInternal();
64
+ assert(s.ok());
65
+ if (!s.ok()) {
66
+ ROCKS_LOG_FATAL(
67
+ wupt_db_->info_log_,
68
+ "Rollback of WriteUnprepared transaction failed in destructor: %s",
69
+ s.ToString().c_str());
70
+ }
71
+ dbimpl_->logs_with_prep_tracker()->MarkLogAsHavingPrepSectionFlushed(
72
+ log_number_);
73
+ }
74
+ }
75
+
76
+ // Clear the tracked locks so that ~PessimisticTransaction does not
77
+ // try to unlock keys for recovered transactions.
78
+ if (recovered_txn_) {
79
+ tracked_locks_->Clear();
80
+ }
81
+ }
82
+
83
+ void WriteUnpreparedTxn::Initialize(const TransactionOptions& txn_options) {
84
+ PessimisticTransaction::Initialize(txn_options);
85
+ if (txn_options.write_batch_flush_threshold < 0) {
86
+ write_batch_flush_threshold_ =
87
+ txn_db_impl_->GetTxnDBOptions().default_write_batch_flush_threshold;
88
+ } else {
89
+ write_batch_flush_threshold_ = txn_options.write_batch_flush_threshold;
90
+ }
91
+
92
+ unprep_seqs_.clear();
93
+ flushed_save_points_.reset(nullptr);
94
+ unflushed_save_points_.reset(nullptr);
95
+ recovered_txn_ = false;
96
+ largest_validated_seq_ = 0;
97
+ assert(active_iterators_.empty());
98
+ active_iterators_.clear();
99
+ untracked_keys_.clear();
100
+ }
101
+
102
+ Status WriteUnpreparedTxn::HandleWrite(std::function<Status()> do_write) {
103
+ Status s;
104
+ if (active_iterators_.empty()) {
105
+ s = MaybeFlushWriteBatchToDB();
106
+ if (!s.ok()) {
107
+ return s;
108
+ }
109
+ }
110
+ s = do_write();
111
+ if (s.ok()) {
112
+ if (snapshot_) {
113
+ largest_validated_seq_ =
114
+ std::max(largest_validated_seq_, snapshot_->GetSequenceNumber());
115
+ } else {
116
+ // TODO(lth): We should use the same number as tracked_at_seq in TryLock,
117
+ // because what is actually being tracked is the sequence number at which
118
+ // this key was locked at.
119
+ largest_validated_seq_ = db_impl_->GetLastPublishedSequence();
120
+ }
121
+ }
122
+ return s;
123
+ }
124
+
125
+ Status WriteUnpreparedTxn::Put(ColumnFamilyHandle* column_family,
126
+ const Slice& key, const Slice& value,
127
+ const bool assume_tracked) {
128
+ return HandleWrite([&]() {
129
+ return TransactionBaseImpl::Put(column_family, key, value, assume_tracked);
130
+ });
131
+ }
132
+
133
+ Status WriteUnpreparedTxn::Put(ColumnFamilyHandle* column_family,
134
+ const SliceParts& key, const SliceParts& value,
135
+ const bool assume_tracked) {
136
+ return HandleWrite([&]() {
137
+ return TransactionBaseImpl::Put(column_family, key, value, assume_tracked);
138
+ });
139
+ }
140
+
141
+ Status WriteUnpreparedTxn::Merge(ColumnFamilyHandle* column_family,
142
+ const Slice& key, const Slice& value,
143
+ const bool assume_tracked) {
144
+ return HandleWrite([&]() {
145
+ return TransactionBaseImpl::Merge(column_family, key, value,
146
+ assume_tracked);
147
+ });
148
+ }
149
+
150
+ Status WriteUnpreparedTxn::Delete(ColumnFamilyHandle* column_family,
151
+ const Slice& key, const bool assume_tracked) {
152
+ return HandleWrite([&]() {
153
+ return TransactionBaseImpl::Delete(column_family, key, assume_tracked);
154
+ });
155
+ }
156
+
157
+ Status WriteUnpreparedTxn::Delete(ColumnFamilyHandle* column_family,
158
+ const SliceParts& key,
159
+ const bool assume_tracked) {
160
+ return HandleWrite([&]() {
161
+ return TransactionBaseImpl::Delete(column_family, key, assume_tracked);
162
+ });
163
+ }
164
+
165
+ Status WriteUnpreparedTxn::SingleDelete(ColumnFamilyHandle* column_family,
166
+ const Slice& key,
167
+ const bool assume_tracked) {
168
+ return HandleWrite([&]() {
169
+ return TransactionBaseImpl::SingleDelete(column_family, key,
170
+ assume_tracked);
171
+ });
172
+ }
173
+
174
+ Status WriteUnpreparedTxn::SingleDelete(ColumnFamilyHandle* column_family,
175
+ const SliceParts& key,
176
+ const bool assume_tracked) {
177
+ return HandleWrite([&]() {
178
+ return TransactionBaseImpl::SingleDelete(column_family, key,
179
+ assume_tracked);
180
+ });
181
+ }
182
+
183
+ // WriteUnpreparedTxn::RebuildFromWriteBatch is only called on recovery. For
184
+ // WriteUnprepared, the write batches have already been written into the
185
+ // database during WAL replay, so all we have to do is just to "retrack" the key
186
+ // so that rollbacks are possible.
187
+ //
188
+ // Calling TryLock instead of TrackKey is also possible, but as an optimization,
189
+ // recovered transactions do not hold locks on their keys. This follows the
190
+ // implementation in PessimisticTransactionDB::Initialize where we set
191
+ // skip_concurrency_control to true.
192
+ Status WriteUnpreparedTxn::RebuildFromWriteBatch(WriteBatch* wb) {
193
+ struct TrackKeyHandler : public WriteBatch::Handler {
194
+ WriteUnpreparedTxn* txn_;
195
+ bool rollback_merge_operands_;
196
+
197
+ TrackKeyHandler(WriteUnpreparedTxn* txn, bool rollback_merge_operands)
198
+ : txn_(txn), rollback_merge_operands_(rollback_merge_operands) {}
199
+
200
+ Status PutCF(uint32_t cf, const Slice& key, const Slice&) override {
201
+ txn_->TrackKey(cf, key.ToString(), kMaxSequenceNumber,
202
+ false /* read_only */, true /* exclusive */);
203
+ return Status::OK();
204
+ }
205
+
206
+ Status DeleteCF(uint32_t cf, const Slice& key) override {
207
+ txn_->TrackKey(cf, key.ToString(), kMaxSequenceNumber,
208
+ false /* read_only */, true /* exclusive */);
209
+ return Status::OK();
210
+ }
211
+
212
+ Status SingleDeleteCF(uint32_t cf, const Slice& key) override {
213
+ txn_->TrackKey(cf, key.ToString(), kMaxSequenceNumber,
214
+ false /* read_only */, true /* exclusive */);
215
+ return Status::OK();
216
+ }
217
+
218
+ Status MergeCF(uint32_t cf, const Slice& key, const Slice&) override {
219
+ if (rollback_merge_operands_) {
220
+ txn_->TrackKey(cf, key.ToString(), kMaxSequenceNumber,
221
+ false /* read_only */, true /* exclusive */);
222
+ }
223
+ return Status::OK();
224
+ }
225
+
226
+ // Recovered batches do not contain 2PC markers.
227
+ Status MarkBeginPrepare(bool) override { return Status::InvalidArgument(); }
228
+
229
+ Status MarkEndPrepare(const Slice&) override {
230
+ return Status::InvalidArgument();
231
+ }
232
+
233
+ Status MarkNoop(bool) override { return Status::InvalidArgument(); }
234
+
235
+ Status MarkCommit(const Slice&) override {
236
+ return Status::InvalidArgument();
237
+ }
238
+
239
+ Status MarkRollback(const Slice&) override {
240
+ return Status::InvalidArgument();
241
+ }
242
+ };
243
+
244
+ TrackKeyHandler handler(this,
245
+ wupt_db_->txn_db_options_.rollback_merge_operands);
246
+ return wb->Iterate(&handler);
247
+ }
248
+
249
+ Status WriteUnpreparedTxn::MaybeFlushWriteBatchToDB() {
250
+ const bool kPrepared = true;
251
+ Status s;
252
+ if (write_batch_flush_threshold_ > 0 &&
253
+ write_batch_.GetWriteBatch()->Count() > 0 &&
254
+ write_batch_.GetDataSize() >
255
+ static_cast<size_t>(write_batch_flush_threshold_)) {
256
+ assert(GetState() != PREPARED);
257
+ s = FlushWriteBatchToDB(!kPrepared);
258
+ }
259
+ return s;
260
+ }
261
+
262
+ Status WriteUnpreparedTxn::FlushWriteBatchToDB(bool prepared) {
263
+ // If the current write batch contains savepoints, then some special handling
264
+ // is required so that RollbackToSavepoint can work.
265
+ //
266
+ // RollbackToSavepoint is not supported after Prepare() is called, so only do
267
+ // this for unprepared batches.
268
+ if (!prepared && unflushed_save_points_ != nullptr &&
269
+ !unflushed_save_points_->empty()) {
270
+ return FlushWriteBatchWithSavePointToDB();
271
+ }
272
+
273
+ return FlushWriteBatchToDBInternal(prepared);
274
+ }
275
+
276
+ Status WriteUnpreparedTxn::FlushWriteBatchToDBInternal(bool prepared) {
277
+ if (name_.empty()) {
278
+ assert(!prepared);
279
+ #ifndef NDEBUG
280
+ static std::atomic_ullong autogen_id{0};
281
+ // To avoid changing all tests to call SetName, just autogenerate one.
282
+ if (wupt_db_->txn_db_options_.autogenerate_name) {
283
+ auto s =
284
+ SetName(std::string("autoxid") + ToString(autogen_id.fetch_add(1)));
285
+ assert(s.ok());
286
+ } else
287
+ #endif
288
+ {
289
+ return Status::InvalidArgument("Cannot write to DB without SetName.");
290
+ }
291
+ }
292
+
293
+ struct UntrackedKeyHandler : public WriteBatch::Handler {
294
+ WriteUnpreparedTxn* txn_;
295
+ bool rollback_merge_operands_;
296
+
297
+ UntrackedKeyHandler(WriteUnpreparedTxn* txn, bool rollback_merge_operands)
298
+ : txn_(txn), rollback_merge_operands_(rollback_merge_operands) {}
299
+
300
+ Status AddUntrackedKey(uint32_t cf, const Slice& key) {
301
+ auto str = key.ToString();
302
+ PointLockStatus lock_status =
303
+ txn_->tracked_locks_->GetPointLockStatus(cf, str);
304
+ if (!lock_status.locked) {
305
+ txn_->untracked_keys_[cf].push_back(str);
306
+ }
307
+ return Status::OK();
308
+ }
309
+
310
+ Status PutCF(uint32_t cf, const Slice& key, const Slice&) override {
311
+ return AddUntrackedKey(cf, key);
312
+ }
313
+
314
+ Status DeleteCF(uint32_t cf, const Slice& key) override {
315
+ return AddUntrackedKey(cf, key);
316
+ }
317
+
318
+ Status SingleDeleteCF(uint32_t cf, const Slice& key) override {
319
+ return AddUntrackedKey(cf, key);
320
+ }
321
+
322
+ Status MergeCF(uint32_t cf, const Slice& key, const Slice&) override {
323
+ if (rollback_merge_operands_) {
324
+ return AddUntrackedKey(cf, key);
325
+ }
326
+ return Status::OK();
327
+ }
328
+
329
+ // The only expected 2PC marker is the initial Noop marker.
330
+ Status MarkNoop(bool empty_batch) override {
331
+ return empty_batch ? Status::OK() : Status::InvalidArgument();
332
+ }
333
+
334
+ Status MarkBeginPrepare(bool) override { return Status::InvalidArgument(); }
335
+
336
+ Status MarkEndPrepare(const Slice&) override {
337
+ return Status::InvalidArgument();
338
+ }
339
+
340
+ Status MarkCommit(const Slice&) override {
341
+ return Status::InvalidArgument();
342
+ }
343
+
344
+ Status MarkRollback(const Slice&) override {
345
+ return Status::InvalidArgument();
346
+ }
347
+ };
348
+
349
+ UntrackedKeyHandler handler(
350
+ this, wupt_db_->txn_db_options_.rollback_merge_operands);
351
+ auto s = GetWriteBatch()->GetWriteBatch()->Iterate(&handler);
352
+ assert(s.ok());
353
+
354
+ // TODO(lth): Reduce duplicate code with WritePrepared prepare logic.
355
+ WriteOptions write_options = write_options_;
356
+ write_options.disableWAL = false;
357
+ const bool WRITE_AFTER_COMMIT = true;
358
+ const bool first_prepare_batch = log_number_ == 0;
359
+ // MarkEndPrepare will change Noop marker to the appropriate marker.
360
+ s = WriteBatchInternal::MarkEndPrepare(GetWriteBatch()->GetWriteBatch(),
361
+ name_, !WRITE_AFTER_COMMIT, !prepared);
362
+ assert(s.ok());
363
+ // For each duplicate key we account for a new sub-batch
364
+ prepare_batch_cnt_ = GetWriteBatch()->SubBatchCnt();
365
+ // AddPrepared better to be called in the pre-release callback otherwise there
366
+ // is a non-zero chance of max advancing prepare_seq and readers assume the
367
+ // data as committed.
368
+ // Also having it in the PreReleaseCallback allows in-order addition of
369
+ // prepared entries to PreparedHeap and hence enables an optimization. Refer
370
+ // to SmallestUnCommittedSeq for more details.
371
+ AddPreparedCallback add_prepared_callback(
372
+ wpt_db_, db_impl_, prepare_batch_cnt_,
373
+ db_impl_->immutable_db_options().two_write_queues, first_prepare_batch);
374
+ const bool DISABLE_MEMTABLE = true;
375
+ uint64_t seq_used = kMaxSequenceNumber;
376
+ // log_number_ should refer to the oldest log containing uncommitted data
377
+ // from the current transaction. This means that if log_number_ is set,
378
+ // WriteImpl should not overwrite that value, so set log_used to nullptr if
379
+ // log_number_ is already set.
380
+ s = db_impl_->WriteImpl(write_options, GetWriteBatch()->GetWriteBatch(),
381
+ /*callback*/ nullptr, &last_log_number_,
382
+ /*log ref*/ 0, !DISABLE_MEMTABLE, &seq_used,
383
+ prepare_batch_cnt_, &add_prepared_callback);
384
+ if (log_number_ == 0) {
385
+ log_number_ = last_log_number_;
386
+ }
387
+ assert(!s.ok() || seq_used != kMaxSequenceNumber);
388
+ auto prepare_seq = seq_used;
389
+
390
+ // Only call SetId if it hasn't been set yet.
391
+ if (GetId() == 0) {
392
+ SetId(prepare_seq);
393
+ }
394
+ // unprep_seqs_ will also contain prepared seqnos since they are treated in
395
+ // the same way in the prepare/commit callbacks. See the comment on the
396
+ // definition of unprep_seqs_.
397
+ unprep_seqs_[prepare_seq] = prepare_batch_cnt_;
398
+
399
+ // Reset transaction state.
400
+ if (!prepared) {
401
+ prepare_batch_cnt_ = 0;
402
+ const bool kClear = true;
403
+ TransactionBaseImpl::InitWriteBatch(kClear);
404
+ }
405
+
406
+ return s;
407
+ }
408
+
409
+ Status WriteUnpreparedTxn::FlushWriteBatchWithSavePointToDB() {
410
+ assert(unflushed_save_points_ != nullptr &&
411
+ unflushed_save_points_->size() > 0);
412
+ assert(save_points_ != nullptr && save_points_->size() > 0);
413
+ assert(save_points_->size() >= unflushed_save_points_->size());
414
+
415
+ // Handler class for creating an unprepared batch from a savepoint.
416
+ struct SavePointBatchHandler : public WriteBatch::Handler {
417
+ WriteBatchWithIndex* wb_;
418
+ const std::map<uint32_t, ColumnFamilyHandle*>& handles_;
419
+
420
+ SavePointBatchHandler(
421
+ WriteBatchWithIndex* wb,
422
+ const std::map<uint32_t, ColumnFamilyHandle*>& handles)
423
+ : wb_(wb), handles_(handles) {}
424
+
425
+ Status PutCF(uint32_t cf, const Slice& key, const Slice& value) override {
426
+ return wb_->Put(handles_.at(cf), key, value);
427
+ }
428
+
429
+ Status DeleteCF(uint32_t cf, const Slice& key) override {
430
+ return wb_->Delete(handles_.at(cf), key);
431
+ }
432
+
433
+ Status SingleDeleteCF(uint32_t cf, const Slice& key) override {
434
+ return wb_->SingleDelete(handles_.at(cf), key);
435
+ }
436
+
437
+ Status MergeCF(uint32_t cf, const Slice& key, const Slice& value) override {
438
+ return wb_->Merge(handles_.at(cf), key, value);
439
+ }
440
+
441
+ // The only expected 2PC marker is the initial Noop marker.
442
+ Status MarkNoop(bool empty_batch) override {
443
+ return empty_batch ? Status::OK() : Status::InvalidArgument();
444
+ }
445
+
446
+ Status MarkBeginPrepare(bool) override { return Status::InvalidArgument(); }
447
+
448
+ Status MarkEndPrepare(const Slice&) override {
449
+ return Status::InvalidArgument();
450
+ }
451
+
452
+ Status MarkCommit(const Slice&) override {
453
+ return Status::InvalidArgument();
454
+ }
455
+
456
+ Status MarkRollback(const Slice&) override {
457
+ return Status::InvalidArgument();
458
+ }
459
+ };
460
+
461
+ // The comparator of the default cf is passed in, similar to the
462
+ // initialization of TransactionBaseImpl::write_batch_. This comparator is
463
+ // only used if the write batch encounters an invalid cf id, and falls back to
464
+ // this comparator.
465
+ WriteBatchWithIndex wb(wpt_db_->DefaultColumnFamily()->GetComparator(), 0,
466
+ true, 0);
467
+ // Swap with write_batch_ so that wb contains the complete write batch. The
468
+ // actual write batch that will be flushed to DB will be built in
469
+ // write_batch_, and will be read by FlushWriteBatchToDBInternal.
470
+ std::swap(wb, write_batch_);
471
+ TransactionBaseImpl::InitWriteBatch();
472
+
473
+ size_t prev_boundary = WriteBatchInternal::kHeader;
474
+ const bool kPrepared = true;
475
+ for (size_t i = 0; i < unflushed_save_points_->size() + 1; i++) {
476
+ bool trailing_batch = i == unflushed_save_points_->size();
477
+ SavePointBatchHandler sp_handler(&write_batch_,
478
+ *wupt_db_->GetCFHandleMap().get());
479
+ size_t curr_boundary = trailing_batch ? wb.GetWriteBatch()->GetDataSize()
480
+ : (*unflushed_save_points_)[i];
481
+
482
+ // Construct the partial write batch up to the savepoint.
483
+ //
484
+ // Theoretically, a memcpy between the write batches should be sufficient
485
+ // since the rewriting into the batch should produce the exact same byte
486
+ // representation. Rebuilding the WriteBatchWithIndex index is still
487
+ // necessary though, and would imply doing two passes over the batch though.
488
+ Status s = WriteBatchInternal::Iterate(wb.GetWriteBatch(), &sp_handler,
489
+ prev_boundary, curr_boundary);
490
+ if (!s.ok()) {
491
+ return s;
492
+ }
493
+
494
+ if (write_batch_.GetWriteBatch()->Count() > 0) {
495
+ // Flush the write batch.
496
+ s = FlushWriteBatchToDBInternal(!kPrepared);
497
+ if (!s.ok()) {
498
+ return s;
499
+ }
500
+ }
501
+
502
+ if (!trailing_batch) {
503
+ if (flushed_save_points_ == nullptr) {
504
+ flushed_save_points_.reset(
505
+ new autovector<WriteUnpreparedTxn::SavePoint>());
506
+ }
507
+ flushed_save_points_->emplace_back(
508
+ unprep_seqs_, new ManagedSnapshot(db_impl_, wupt_db_->GetSnapshot()));
509
+ }
510
+
511
+ prev_boundary = curr_boundary;
512
+ const bool kClear = true;
513
+ TransactionBaseImpl::InitWriteBatch(kClear);
514
+ }
515
+
516
+ unflushed_save_points_->clear();
517
+ return Status::OK();
518
+ }
519
+
520
+ Status WriteUnpreparedTxn::PrepareInternal() {
521
+ const bool kPrepared = true;
522
+ return FlushWriteBatchToDB(kPrepared);
523
+ }
524
+
525
+ Status WriteUnpreparedTxn::CommitWithoutPrepareInternal() {
526
+ if (unprep_seqs_.empty()) {
527
+ assert(log_number_ == 0);
528
+ assert(GetId() == 0);
529
+ return WritePreparedTxn::CommitWithoutPrepareInternal();
530
+ }
531
+
532
+ // TODO(lth): We should optimize commit without prepare to not perform
533
+ // a prepare under the hood.
534
+ auto s = PrepareInternal();
535
+ if (!s.ok()) {
536
+ return s;
537
+ }
538
+ return CommitInternal();
539
+ }
540
+
541
+ Status WriteUnpreparedTxn::CommitInternal() {
542
+ // TODO(lth): Reduce duplicate code with WritePrepared commit logic.
543
+
544
+ // We take the commit-time batch and append the Commit marker. The Memtable
545
+ // will ignore the Commit marker in non-recovery mode
546
+ WriteBatch* working_batch = GetCommitTimeWriteBatch();
547
+ const bool empty = working_batch->Count() == 0;
548
+ auto s = WriteBatchInternal::MarkCommit(working_batch, name_);
549
+ assert(s.ok());
550
+
551
+ const bool for_recovery = use_only_the_last_commit_time_batch_for_recovery_;
552
+ if (!empty && for_recovery) {
553
+ // When not writing to memtable, we can still cache the latest write batch.
554
+ // The cached batch will be written to memtable in WriteRecoverableState
555
+ // during FlushMemTable
556
+ WriteBatchInternal::SetAsLastestPersistentState(working_batch);
557
+ }
558
+
559
+ const bool includes_data = !empty && !for_recovery;
560
+ size_t commit_batch_cnt = 0;
561
+ if (UNLIKELY(includes_data)) {
562
+ ROCKS_LOG_WARN(db_impl_->immutable_db_options().info_log,
563
+ "Duplicate key overhead");
564
+ SubBatchCounter counter(*wpt_db_->GetCFComparatorMap());
565
+ s = working_batch->Iterate(&counter);
566
+ assert(s.ok());
567
+ commit_batch_cnt = counter.BatchCount();
568
+ }
569
+ const bool disable_memtable = !includes_data;
570
+ const bool do_one_write =
571
+ !db_impl_->immutable_db_options().two_write_queues || disable_memtable;
572
+
573
+ WriteUnpreparedCommitEntryPreReleaseCallback update_commit_map(
574
+ wpt_db_, db_impl_, unprep_seqs_, commit_batch_cnt);
575
+ const bool kFirstPrepareBatch = true;
576
+ AddPreparedCallback add_prepared_callback(
577
+ wpt_db_, db_impl_, commit_batch_cnt,
578
+ db_impl_->immutable_db_options().two_write_queues, !kFirstPrepareBatch);
579
+ PreReleaseCallback* pre_release_callback;
580
+ if (do_one_write) {
581
+ pre_release_callback = &update_commit_map;
582
+ } else {
583
+ pre_release_callback = &add_prepared_callback;
584
+ }
585
+ uint64_t seq_used = kMaxSequenceNumber;
586
+ // Since the prepared batch is directly written to memtable, there is
587
+ // already a connection between the memtable and its WAL, so there is no
588
+ // need to redundantly reference the log that contains the prepared data.
589
+ const uint64_t zero_log_number = 0ull;
590
+ size_t batch_cnt = UNLIKELY(commit_batch_cnt) ? commit_batch_cnt : 1;
591
+ s = db_impl_->WriteImpl(write_options_, working_batch, nullptr, nullptr,
592
+ zero_log_number, disable_memtable, &seq_used,
593
+ batch_cnt, pre_release_callback);
594
+ assert(!s.ok() || seq_used != kMaxSequenceNumber);
595
+ const SequenceNumber commit_batch_seq = seq_used;
596
+ if (LIKELY(do_one_write || !s.ok())) {
597
+ if (LIKELY(s.ok())) {
598
+ // Note RemovePrepared should be called after WriteImpl that publishsed
599
+ // the seq. Otherwise SmallestUnCommittedSeq optimization breaks.
600
+ for (const auto& seq : unprep_seqs_) {
601
+ wpt_db_->RemovePrepared(seq.first, seq.second);
602
+ }
603
+ }
604
+ if (UNLIKELY(!do_one_write)) {
605
+ wpt_db_->RemovePrepared(commit_batch_seq, commit_batch_cnt);
606
+ }
607
+ unprep_seqs_.clear();
608
+ flushed_save_points_.reset(nullptr);
609
+ unflushed_save_points_.reset(nullptr);
610
+ return s;
611
+ } // else do the 2nd write to publish seq
612
+
613
+ // Populate unprep_seqs_ with commit_batch_seq, since we treat data in the
614
+ // commit write batch as just another "unprepared" batch. This will also
615
+ // update the unprep_seqs_ in the update_commit_map callback.
616
+ unprep_seqs_[commit_batch_seq] = commit_batch_cnt;
617
+ WriteUnpreparedCommitEntryPreReleaseCallback
618
+ update_commit_map_with_commit_batch(wpt_db_, db_impl_, unprep_seqs_, 0);
619
+
620
+ // Note: the 2nd write comes with a performance penality. So if we have too
621
+ // many of commits accompanied with ComitTimeWriteBatch and yet we cannot
622
+ // enable use_only_the_last_commit_time_batch_for_recovery_ optimization,
623
+ // two_write_queues should be disabled to avoid many additional writes here.
624
+
625
+ // Update commit map only from the 2nd queue
626
+ WriteBatch empty_batch;
627
+ s = empty_batch.PutLogData(Slice());
628
+ assert(s.ok());
629
+ // In the absence of Prepare markers, use Noop as a batch separator
630
+ s = WriteBatchInternal::InsertNoop(&empty_batch);
631
+ assert(s.ok());
632
+ const bool DISABLE_MEMTABLE = true;
633
+ const size_t ONE_BATCH = 1;
634
+ const uint64_t NO_REF_LOG = 0;
635
+ s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr, nullptr,
636
+ NO_REF_LOG, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
637
+ &update_commit_map_with_commit_batch);
638
+ assert(!s.ok() || seq_used != kMaxSequenceNumber);
639
+ // Note RemovePrepared should be called after WriteImpl that publishsed the
640
+ // seq. Otherwise SmallestUnCommittedSeq optimization breaks.
641
+ for (const auto& seq : unprep_seqs_) {
642
+ wpt_db_->RemovePrepared(seq.first, seq.second);
643
+ }
644
+ unprep_seqs_.clear();
645
+ flushed_save_points_.reset(nullptr);
646
+ unflushed_save_points_.reset(nullptr);
647
+ return s;
648
+ }
649
+
650
+ Status WriteUnpreparedTxn::WriteRollbackKeys(
651
+ const LockTracker& lock_tracker, WriteBatchWithIndex* rollback_batch,
652
+ ReadCallback* callback, const ReadOptions& roptions) {
653
+ // This assertion can be removed when range lock is supported.
654
+ assert(lock_tracker.IsPointLockSupported());
655
+ const auto& cf_map = *wupt_db_->GetCFHandleMap();
656
+ auto WriteRollbackKey = [&](const std::string& key, uint32_t cfid) {
657
+ const auto& cf_handle = cf_map.at(cfid);
658
+ PinnableSlice pinnable_val;
659
+ bool not_used;
660
+ DBImpl::GetImplOptions get_impl_options;
661
+ get_impl_options.column_family = cf_handle;
662
+ get_impl_options.value = &pinnable_val;
663
+ get_impl_options.value_found = &not_used;
664
+ get_impl_options.callback = callback;
665
+ auto s = db_impl_->GetImpl(roptions, key, get_impl_options);
666
+
667
+ if (s.ok()) {
668
+ s = rollback_batch->Put(cf_handle, key, pinnable_val);
669
+ assert(s.ok());
670
+ } else if (s.IsNotFound()) {
671
+ s = rollback_batch->Delete(cf_handle, key);
672
+ assert(s.ok());
673
+ } else {
674
+ return s;
675
+ }
676
+
677
+ return Status::OK();
678
+ };
679
+
680
+ std::unique_ptr<LockTracker::ColumnFamilyIterator> cf_it(
681
+ lock_tracker.GetColumnFamilyIterator());
682
+ assert(cf_it != nullptr);
683
+ while (cf_it->HasNext()) {
684
+ ColumnFamilyId cf = cf_it->Next();
685
+ std::unique_ptr<LockTracker::KeyIterator> key_it(
686
+ lock_tracker.GetKeyIterator(cf));
687
+ assert(key_it != nullptr);
688
+ while (key_it->HasNext()) {
689
+ const std::string& key = key_it->Next();
690
+ auto s = WriteRollbackKey(key, cf);
691
+ if (!s.ok()) {
692
+ return s;
693
+ }
694
+ }
695
+ }
696
+
697
+ for (const auto& cfkey : untracked_keys_) {
698
+ const auto cfid = cfkey.first;
699
+ const auto& keys = cfkey.second;
700
+ for (const auto& key : keys) {
701
+ auto s = WriteRollbackKey(key, cfid);
702
+ if (!s.ok()) {
703
+ return s;
704
+ }
705
+ }
706
+ }
707
+
708
+ return Status::OK();
709
+ }
710
+
711
+ Status WriteUnpreparedTxn::RollbackInternal() {
712
+ // TODO(lth): Reduce duplicate code with WritePrepared rollback logic.
713
+ WriteBatchWithIndex rollback_batch(
714
+ wpt_db_->DefaultColumnFamily()->GetComparator(), 0, true, 0);
715
+ assert(GetId() != kMaxSequenceNumber);
716
+ assert(GetId() > 0);
717
+ Status s;
718
+ auto read_at_seq = kMaxSequenceNumber;
719
+ ReadOptions roptions;
720
+ // to prevent callback's seq to be overrriden inside DBImpk::Get
721
+ roptions.snapshot = wpt_db_->GetMaxSnapshot();
722
+ // Note that we do not use WriteUnpreparedTxnReadCallback because we do not
723
+ // need to read our own writes when reading prior versions of the key for
724
+ // rollback.
725
+ WritePreparedTxnReadCallback callback(wpt_db_, read_at_seq);
726
+ // TODO(lth): We write rollback batch all in a single batch here, but this
727
+ // should be subdivded into multiple batches as well. In phase 2, when key
728
+ // sets are read from WAL, this will happen naturally.
729
+ s = WriteRollbackKeys(*tracked_locks_, &rollback_batch, &callback, roptions);
730
+ if (!s.ok()) {
731
+ return s;
732
+ }
733
+
734
+ // The Rollback marker will be used as a batch separator
735
+ s = WriteBatchInternal::MarkRollback(rollback_batch.GetWriteBatch(), name_);
736
+ assert(s.ok());
737
+ bool do_one_write = !db_impl_->immutable_db_options().two_write_queues;
738
+ const bool DISABLE_MEMTABLE = true;
739
+ const uint64_t NO_REF_LOG = 0;
740
+ uint64_t seq_used = kMaxSequenceNumber;
741
+ // Rollback batch may contain duplicate keys, because tracked_keys_ is not
742
+ // comparator aware.
743
+ auto rollback_batch_cnt = rollback_batch.SubBatchCnt();
744
+ // We commit the rolled back prepared batches. Although this is
745
+ // counter-intuitive, i) it is safe to do so, since the prepared batches are
746
+ // already canceled out by the rollback batch, ii) adding the commit entry to
747
+ // CommitCache will allow us to benefit from the existing mechanism in
748
+ // CommitCache that keeps an entry evicted due to max advance and yet overlaps
749
+ // with a live snapshot around so that the live snapshot properly skips the
750
+ // entry even if its prepare seq is lower than max_evicted_seq_.
751
+ //
752
+ // TODO(lth): RollbackInternal is conceptually very similar to
753
+ // CommitInternal, with the rollback batch simply taking on the role of
754
+ // CommitTimeWriteBatch. We should be able to merge the two code paths.
755
+ WriteUnpreparedCommitEntryPreReleaseCallback update_commit_map(
756
+ wpt_db_, db_impl_, unprep_seqs_, rollback_batch_cnt);
757
+ // Note: the rollback batch does not need AddPrepared since it is written to
758
+ // DB in one shot. min_uncommitted still works since it requires capturing
759
+ // data that is written to DB but not yet committed, while the rollback
760
+ // batch commits with PreReleaseCallback.
761
+ s = db_impl_->WriteImpl(write_options_, rollback_batch.GetWriteBatch(),
762
+ nullptr, nullptr, NO_REF_LOG, !DISABLE_MEMTABLE,
763
+ &seq_used, rollback_batch_cnt,
764
+ do_one_write ? &update_commit_map : nullptr);
765
+ assert(!s.ok() || seq_used != kMaxSequenceNumber);
766
+ if (!s.ok()) {
767
+ return s;
768
+ }
769
+ if (do_one_write) {
770
+ for (const auto& seq : unprep_seqs_) {
771
+ wpt_db_->RemovePrepared(seq.first, seq.second);
772
+ }
773
+ unprep_seqs_.clear();
774
+ flushed_save_points_.reset(nullptr);
775
+ unflushed_save_points_.reset(nullptr);
776
+ return s;
777
+ } // else do the 2nd write for commit
778
+
779
+ uint64_t& prepare_seq = seq_used;
780
+ // Populate unprep_seqs_ with rollback_batch_cnt, since we treat data in the
781
+ // rollback write batch as just another "unprepared" batch. This will also
782
+ // update the unprep_seqs_ in the update_commit_map callback.
783
+ unprep_seqs_[prepare_seq] = rollback_batch_cnt;
784
+ WriteUnpreparedCommitEntryPreReleaseCallback
785
+ update_commit_map_with_rollback_batch(wpt_db_, db_impl_, unprep_seqs_, 0);
786
+
787
+ ROCKS_LOG_DETAILS(db_impl_->immutable_db_options().info_log,
788
+ "RollbackInternal 2nd write prepare_seq: %" PRIu64,
789
+ prepare_seq);
790
+ WriteBatch empty_batch;
791
+ const size_t ONE_BATCH = 1;
792
+ s = empty_batch.PutLogData(Slice());
793
+ assert(s.ok());
794
+ // In the absence of Prepare markers, use Noop as a batch separator
795
+ s = WriteBatchInternal::InsertNoop(&empty_batch);
796
+ assert(s.ok());
797
+ s = db_impl_->WriteImpl(write_options_, &empty_batch, nullptr, nullptr,
798
+ NO_REF_LOG, DISABLE_MEMTABLE, &seq_used, ONE_BATCH,
799
+ &update_commit_map_with_rollback_batch);
800
+ assert(!s.ok() || seq_used != kMaxSequenceNumber);
801
+ // Mark the txn as rolled back
802
+ if (s.ok()) {
803
+ for (const auto& seq : unprep_seqs_) {
804
+ wpt_db_->RemovePrepared(seq.first, seq.second);
805
+ }
806
+ }
807
+
808
+ unprep_seqs_.clear();
809
+ flushed_save_points_.reset(nullptr);
810
+ unflushed_save_points_.reset(nullptr);
811
+ return s;
812
+ }
813
+
814
+ void WriteUnpreparedTxn::Clear() {
815
+ if (!recovered_txn_) {
816
+ txn_db_impl_->UnLock(this, *tracked_locks_);
817
+ }
818
+ unprep_seqs_.clear();
819
+ flushed_save_points_.reset(nullptr);
820
+ unflushed_save_points_.reset(nullptr);
821
+ recovered_txn_ = false;
822
+ largest_validated_seq_ = 0;
823
+ for (auto& it : active_iterators_) {
824
+ auto bdit = static_cast<BaseDeltaIterator*>(it);
825
+ bdit->Invalidate(Status::InvalidArgument(
826
+ "Cannot use iterator after transaction has finished"));
827
+ }
828
+ active_iterators_.clear();
829
+ untracked_keys_.clear();
830
+ TransactionBaseImpl::Clear();
831
+ }
832
+
833
+ void WriteUnpreparedTxn::SetSavePoint() {
834
+ assert((unflushed_save_points_ ? unflushed_save_points_->size() : 0) +
835
+ (flushed_save_points_ ? flushed_save_points_->size() : 0) ==
836
+ (save_points_ ? save_points_->size() : 0));
837
+ PessimisticTransaction::SetSavePoint();
838
+ if (unflushed_save_points_ == nullptr) {
839
+ unflushed_save_points_.reset(new autovector<size_t>());
840
+ }
841
+ unflushed_save_points_->push_back(write_batch_.GetDataSize());
842
+ }
843
+
844
+ Status WriteUnpreparedTxn::RollbackToSavePoint() {
845
+ assert((unflushed_save_points_ ? unflushed_save_points_->size() : 0) +
846
+ (flushed_save_points_ ? flushed_save_points_->size() : 0) ==
847
+ (save_points_ ? save_points_->size() : 0));
848
+ if (unflushed_save_points_ != nullptr && unflushed_save_points_->size() > 0) {
849
+ Status s = PessimisticTransaction::RollbackToSavePoint();
850
+ assert(!s.IsNotFound());
851
+ unflushed_save_points_->pop_back();
852
+ return s;
853
+ }
854
+
855
+ if (flushed_save_points_ != nullptr && !flushed_save_points_->empty()) {
856
+ return RollbackToSavePointInternal();
857
+ }
858
+
859
+ return Status::NotFound();
860
+ }
861
+
862
+ Status WriteUnpreparedTxn::RollbackToSavePointInternal() {
863
+ Status s;
864
+
865
+ const bool kClear = true;
866
+ TransactionBaseImpl::InitWriteBatch(kClear);
867
+
868
+ assert(flushed_save_points_->size() > 0);
869
+ WriteUnpreparedTxn::SavePoint& top = flushed_save_points_->back();
870
+
871
+ assert(save_points_ != nullptr && save_points_->size() > 0);
872
+ const LockTracker& tracked_keys = *save_points_->top().new_locks_;
873
+
874
+ ReadOptions roptions;
875
+ roptions.snapshot = top.snapshot_->snapshot();
876
+ SequenceNumber min_uncommitted =
877
+ static_cast_with_check<const SnapshotImpl>(roptions.snapshot)
878
+ ->min_uncommitted_;
879
+ SequenceNumber snap_seq = roptions.snapshot->GetSequenceNumber();
880
+ WriteUnpreparedTxnReadCallback callback(wupt_db_, snap_seq, min_uncommitted,
881
+ top.unprep_seqs_,
882
+ kBackedByDBSnapshot);
883
+ s = WriteRollbackKeys(tracked_keys, &write_batch_, &callback, roptions);
884
+ if (!s.ok()) {
885
+ return s;
886
+ }
887
+
888
+ const bool kPrepared = true;
889
+ s = FlushWriteBatchToDBInternal(!kPrepared);
890
+ if (!s.ok()) {
891
+ return s;
892
+ }
893
+
894
+ // PessimisticTransaction::RollbackToSavePoint will call also call
895
+ // RollbackToSavepoint on write_batch_. However, write_batch_ is empty and has
896
+ // no savepoints because this savepoint has already been flushed. Work around
897
+ // this by setting a fake savepoint.
898
+ write_batch_.SetSavePoint();
899
+ s = PessimisticTransaction::RollbackToSavePoint();
900
+ assert(s.ok());
901
+ if (!s.ok()) {
902
+ return s;
903
+ }
904
+
905
+ flushed_save_points_->pop_back();
906
+ return s;
907
+ }
908
+
909
+ Status WriteUnpreparedTxn::PopSavePoint() {
910
+ assert((unflushed_save_points_ ? unflushed_save_points_->size() : 0) +
911
+ (flushed_save_points_ ? flushed_save_points_->size() : 0) ==
912
+ (save_points_ ? save_points_->size() : 0));
913
+ if (unflushed_save_points_ != nullptr && unflushed_save_points_->size() > 0) {
914
+ Status s = PessimisticTransaction::PopSavePoint();
915
+ assert(!s.IsNotFound());
916
+ unflushed_save_points_->pop_back();
917
+ return s;
918
+ }
919
+
920
+ if (flushed_save_points_ != nullptr && !flushed_save_points_->empty()) {
921
+ // PessimisticTransaction::PopSavePoint will call also call PopSavePoint on
922
+ // write_batch_. However, write_batch_ is empty and has no savepoints
923
+ // because this savepoint has already been flushed. Work around this by
924
+ // setting a fake savepoint.
925
+ write_batch_.SetSavePoint();
926
+ Status s = PessimisticTransaction::PopSavePoint();
927
+ assert(!s.IsNotFound());
928
+ flushed_save_points_->pop_back();
929
+ return s;
930
+ }
931
+
932
+ return Status::NotFound();
933
+ }
934
+
935
+ void WriteUnpreparedTxn::MultiGet(const ReadOptions& options,
936
+ ColumnFamilyHandle* column_family,
937
+ const size_t num_keys, const Slice* keys,
938
+ PinnableSlice* values, Status* statuses,
939
+ const bool sorted_input) {
940
+ SequenceNumber min_uncommitted, snap_seq;
941
+ const SnapshotBackup backed_by_snapshot =
942
+ wupt_db_->AssignMinMaxSeqs(options.snapshot, &min_uncommitted, &snap_seq);
943
+ WriteUnpreparedTxnReadCallback callback(wupt_db_, snap_seq, min_uncommitted,
944
+ unprep_seqs_, backed_by_snapshot);
945
+ write_batch_.MultiGetFromBatchAndDB(db_, options, column_family, num_keys,
946
+ keys, values, statuses, sorted_input,
947
+ &callback);
948
+ if (UNLIKELY(!callback.valid() ||
949
+ !wupt_db_->ValidateSnapshot(snap_seq, backed_by_snapshot))) {
950
+ wupt_db_->WPRecordTick(TXN_GET_TRY_AGAIN);
951
+ for (size_t i = 0; i < num_keys; i++) {
952
+ statuses[i] = Status::TryAgain();
953
+ }
954
+ }
955
+ }
956
+
957
+ Status WriteUnpreparedTxn::Get(const ReadOptions& options,
958
+ ColumnFamilyHandle* column_family,
959
+ const Slice& key, PinnableSlice* value) {
960
+ SequenceNumber min_uncommitted, snap_seq;
961
+ const SnapshotBackup backed_by_snapshot =
962
+ wupt_db_->AssignMinMaxSeqs(options.snapshot, &min_uncommitted, &snap_seq);
963
+ WriteUnpreparedTxnReadCallback callback(wupt_db_, snap_seq, min_uncommitted,
964
+ unprep_seqs_, backed_by_snapshot);
965
+ auto res = write_batch_.GetFromBatchAndDB(db_, options, column_family, key,
966
+ value, &callback);
967
+ if (LIKELY(callback.valid() &&
968
+ wupt_db_->ValidateSnapshot(snap_seq, backed_by_snapshot))) {
969
+ return res;
970
+ } else {
971
+ wupt_db_->WPRecordTick(TXN_GET_TRY_AGAIN);
972
+ return Status::TryAgain();
973
+ }
974
+ }
975
+
976
+ namespace {
977
+ static void CleanupWriteUnpreparedWBWIIterator(void* arg1, void* arg2) {
978
+ auto txn = reinterpret_cast<WriteUnpreparedTxn*>(arg1);
979
+ auto iter = reinterpret_cast<Iterator*>(arg2);
980
+ txn->RemoveActiveIterator(iter);
981
+ }
982
+ } // anonymous namespace
983
+
984
+ Iterator* WriteUnpreparedTxn::GetIterator(const ReadOptions& options) {
985
+ return GetIterator(options, wupt_db_->DefaultColumnFamily());
986
+ }
987
+
988
+ Iterator* WriteUnpreparedTxn::GetIterator(const ReadOptions& options,
989
+ ColumnFamilyHandle* column_family) {
990
+ // Make sure to get iterator from WriteUnprepareTxnDB, not the root db.
991
+ Iterator* db_iter = wupt_db_->NewIterator(options, column_family, this);
992
+ assert(db_iter);
993
+
994
+ auto iter = write_batch_.NewIteratorWithBase(column_family, db_iter);
995
+ active_iterators_.push_back(iter);
996
+ iter->RegisterCleanup(CleanupWriteUnpreparedWBWIIterator, this, iter);
997
+ return iter;
998
+ }
999
+
1000
+ Status WriteUnpreparedTxn::ValidateSnapshot(ColumnFamilyHandle* column_family,
1001
+ const Slice& key,
1002
+ SequenceNumber* tracked_at_seq) {
1003
+ // TODO(lth): Reduce duplicate code with WritePrepared ValidateSnapshot logic.
1004
+ assert(snapshot_);
1005
+
1006
+ SequenceNumber min_uncommitted =
1007
+ static_cast_with_check<const SnapshotImpl>(snapshot_.get())
1008
+ ->min_uncommitted_;
1009
+ SequenceNumber snap_seq = snapshot_->GetSequenceNumber();
1010
+ // tracked_at_seq is either max or the last snapshot with which this key was
1011
+ // trackeed so there is no need to apply the IsInSnapshot to this comparison
1012
+ // here as tracked_at_seq is not a prepare seq.
1013
+ if (*tracked_at_seq <= snap_seq) {
1014
+ // If the key has been previous validated at a sequence number earlier
1015
+ // than the curent snapshot's sequence number, we already know it has not
1016
+ // been modified.
1017
+ return Status::OK();
1018
+ }
1019
+
1020
+ *tracked_at_seq = snap_seq;
1021
+
1022
+ ColumnFamilyHandle* cfh =
1023
+ column_family ? column_family : db_impl_->DefaultColumnFamily();
1024
+
1025
+ WriteUnpreparedTxnReadCallback snap_checker(
1026
+ wupt_db_, snap_seq, min_uncommitted, unprep_seqs_, kBackedByDBSnapshot);
1027
+ return TransactionUtil::CheckKeyForConflicts(db_impl_, cfh, key.ToString(),
1028
+ snap_seq, false /* cache_only */,
1029
+ &snap_checker, min_uncommitted);
1030
+ }
1031
+
1032
+ const std::map<SequenceNumber, size_t>&
1033
+ WriteUnpreparedTxn::GetUnpreparedSequenceNumbers() {
1034
+ return unprep_seqs_;
1035
+ }
1036
+
1037
+ } // namespace ROCKSDB_NAMESPACE
1038
+
1039
+ #endif // ROCKSDB_LITE