@nxtedition/rocksdb 13.5.8 → 13.5.9

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 (508) hide show
  1. package/binding.cc +209 -2
  2. package/deps/rocksdb/rocksdb/BUCK +12 -0
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +7 -0
  4. package/deps/rocksdb/rocksdb/Makefile +28 -23
  5. package/deps/rocksdb/rocksdb/cache/cache.cc +0 -1
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -2
  7. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +43 -39
  8. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +2 -0
  9. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +0 -1
  10. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +2 -3
  11. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +2 -2
  12. package/deps/rocksdb/rocksdb/cache/secondary_cache.cc +1 -3
  13. package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +11 -1
  14. package/deps/rocksdb/rocksdb/cache/tiered_secondary_cache_test.cc +13 -5
  15. package/deps/rocksdb/rocksdb/crash_test.mk +61 -15
  16. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +136 -45
  17. package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +34 -16
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +10 -7
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_builder_test.cc +1 -2
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_meta.h +1 -0
  21. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +12 -9
  22. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +3 -4
  23. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +2 -2
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +3 -4
  25. package/deps/rocksdb/rocksdb/db/builder.cc +22 -8
  26. package/deps/rocksdb/rocksdb/db/builder.h +5 -4
  27. package/deps/rocksdb/rocksdb/db/c.cc +556 -15
  28. package/deps/rocksdb/rocksdb/db/c_test.c +133 -12
  29. package/deps/rocksdb/rocksdb/db/column_family.cc +114 -50
  30. package/deps/rocksdb/rocksdb/db/column_family.h +53 -36
  31. package/deps/rocksdb/rocksdb/db/column_family_test.cc +6 -6
  32. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +0 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +95 -70
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +71 -51
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +7 -86
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +26 -68
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +0 -122
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +453 -258
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +117 -92
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_stats_test.cc +0 -1
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +38 -38
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +24 -17
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +34 -45
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -31
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +12 -3
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +1 -1
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +2 -1
  48. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +10 -10
  49. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.h +2 -1
  50. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +82 -34
  51. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +267 -179
  52. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.h +4 -1
  53. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +273 -89
  54. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +300 -14
  55. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +4 -4
  56. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +2 -2
  57. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +28 -23
  58. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +69 -51
  59. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +522 -245
  60. package/deps/rocksdb/rocksdb/db/convenience.cc +15 -4
  61. package/deps/rocksdb/rocksdb/db/corruption_test.cc +1 -3
  62. package/deps/rocksdb/rocksdb/db/cuckoo_table_db_test.cc +0 -2
  63. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +196 -17
  64. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +74 -62
  65. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +48 -0
  66. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +682 -250
  67. package/deps/rocksdb/rocksdb/db/db_dynamic_level_test.cc +0 -1
  68. package/deps/rocksdb/rocksdb/db/db_encryption_test.cc +3 -4
  69. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +11 -16
  70. package/deps/rocksdb/rocksdb/db/db_flush_test.cc +57 -0
  71. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +2 -2
  72. package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +1 -1
  73. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +540 -490
  74. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +347 -188
  75. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +584 -217
  76. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +13 -9
  77. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_experimental.cc +5 -7
  78. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +40 -36
  79. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +1 -3
  80. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +751 -372
  81. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +35 -32
  82. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +24 -2
  83. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +125 -63
  84. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +2 -2
  85. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +311 -196
  86. package/deps/rocksdb/rocksdb/db/db_io_failure_test.cc +15 -5
  87. package/deps/rocksdb/rocksdb/db/db_iter.cc +42 -29
  88. package/deps/rocksdb/rocksdb/db/db_iter.h +96 -31
  89. package/deps/rocksdb/rocksdb/db/db_iter_stress_test.cc +3 -4
  90. package/deps/rocksdb/rocksdb/db/db_iter_test.cc +168 -228
  91. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +454 -0
  92. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +8 -8
  93. package/deps/rocksdb/rocksdb/db/db_log_iter_test.cc +0 -1
  94. package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +90 -0
  95. package/deps/rocksdb/rocksdb/db/db_merge_operand_test.cc +60 -2
  96. package/deps/rocksdb/rocksdb/db/db_merge_operator_test.cc +7 -3
  97. package/deps/rocksdb/rocksdb/db/db_options_test.cc +85 -27
  98. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +3 -1
  99. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +0 -2
  100. package/deps/rocksdb/rocksdb/db/db_secondary_test.cc +114 -2
  101. package/deps/rocksdb/rocksdb/db/db_sst_test.cc +0 -1
  102. package/deps/rocksdb/rocksdb/db/db_statistics_test.cc +0 -1
  103. package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +51 -3
  104. package/deps/rocksdb/rocksdb/db/db_tailing_iter_test.cc +0 -1
  105. package/deps/rocksdb/rocksdb/db/db_test.cc +325 -18
  106. package/deps/rocksdb/rocksdb/db/db_test2.cc +644 -20
  107. package/deps/rocksdb/rocksdb/db/db_test_util.cc +14 -6
  108. package/deps/rocksdb/rocksdb/db/db_test_util.h +9 -0
  109. package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +64 -45
  110. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +203 -14
  111. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +259 -30
  112. package/deps/rocksdb/rocksdb/db/db_write_buffer_manager_test.cc +0 -1
  113. package/deps/rocksdb/rocksdb/db/db_write_test.cc +75 -1
  114. package/deps/rocksdb/rocksdb/db/dbformat.h +70 -6
  115. package/deps/rocksdb/rocksdb/db/deletefile_test.cc +0 -190
  116. package/deps/rocksdb/rocksdb/db/error_handler.cc +22 -7
  117. package/deps/rocksdb/rocksdb/db/error_handler.h +16 -1
  118. package/deps/rocksdb/rocksdb/db/event_helpers.cc +41 -26
  119. package/deps/rocksdb/rocksdb/db/experimental.cc +4 -3
  120. package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +464 -78
  121. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +166 -69
  122. package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +54 -25
  123. package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +1 -3
  124. package/deps/rocksdb/rocksdb/db/flush_job.cc +98 -81
  125. package/deps/rocksdb/rocksdb/db/flush_job.h +4 -9
  126. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +80 -84
  127. package/deps/rocksdb/rocksdb/db/forward_iterator.cc +1 -1
  128. package/deps/rocksdb/rocksdb/db/forward_iterator.h +2 -2
  129. package/deps/rocksdb/rocksdb/db/import_column_family_job.cc +12 -19
  130. package/deps/rocksdb/rocksdb/db/import_column_family_test.cc +0 -2
  131. package/deps/rocksdb/rocksdb/db/internal_stats.cc +41 -15
  132. package/deps/rocksdb/rocksdb/db/internal_stats.h +63 -52
  133. package/deps/rocksdb/rocksdb/db/job_context.h +59 -24
  134. package/deps/rocksdb/rocksdb/db/listener_test.cc +69 -10
  135. package/deps/rocksdb/rocksdb/db/log_format.h +11 -2
  136. package/deps/rocksdb/rocksdb/db/log_reader.cc +147 -34
  137. package/deps/rocksdb/rocksdb/db/log_reader.h +40 -11
  138. package/deps/rocksdb/rocksdb/db/log_test.cc +16 -3
  139. package/deps/rocksdb/rocksdb/db/log_writer.cc +102 -55
  140. package/deps/rocksdb/rocksdb/db/log_writer.h +21 -2
  141. package/deps/rocksdb/rocksdb/db/malloc_stats.h +0 -2
  142. package/deps/rocksdb/rocksdb/db/memtable.cc +16 -47
  143. package/deps/rocksdb/rocksdb/db/memtable.h +76 -12
  144. package/deps/rocksdb/rocksdb/db/memtable_list.cc +23 -20
  145. package/deps/rocksdb/rocksdb/db/memtable_list.h +9 -11
  146. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +18 -37
  147. package/deps/rocksdb/rocksdb/db/merge_context.h +2 -1
  148. package/deps/rocksdb/rocksdb/db/merge_test.cc +8 -0
  149. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +3 -5
  150. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +15 -7
  151. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +6 -3
  152. package/deps/rocksdb/rocksdb/db/periodic_task_scheduler_test.cc +22 -4
  153. package/deps/rocksdb/rocksdb/db/plain_table_db_test.cc +41 -1
  154. package/deps/rocksdb/rocksdb/db/prefix_test.cc +0 -1
  155. package/deps/rocksdb/rocksdb/db/repair.cc +29 -34
  156. package/deps/rocksdb/rocksdb/db/repair_test.cc +0 -1
  157. package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +14 -15
  158. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.cc +1 -3
  159. package/deps/rocksdb/rocksdb/db/seqno_to_time_mapping.h +47 -1
  160. package/deps/rocksdb/rocksdb/db/table_cache.cc +3 -3
  161. package/deps/rocksdb/rocksdb/db/transaction_log_impl.cc +1 -3
  162. package/deps/rocksdb/rocksdb/db/transaction_log_impl.h +2 -1
  163. package/deps/rocksdb/rocksdb/db/version_builder.cc +2 -2
  164. package/deps/rocksdb/rocksdb/db/version_edit.cc +8 -37
  165. package/deps/rocksdb/rocksdb/db/version_edit.h +32 -1
  166. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +26 -18
  167. package/deps/rocksdb/rocksdb/db/version_edit_handler.h +7 -5
  168. package/deps/rocksdb/rocksdb/db/version_set.cc +282 -197
  169. package/deps/rocksdb/rocksdb/db/version_set.h +54 -57
  170. package/deps/rocksdb/rocksdb/db/version_set_test.cc +28 -35
  171. package/deps/rocksdb/rocksdb/db/version_util.h +2 -3
  172. package/deps/rocksdb/rocksdb/db/wal_manager.cc +3 -2
  173. package/deps/rocksdb/rocksdb/db/wal_manager.h +0 -1
  174. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +0 -1
  175. package/deps/rocksdb/rocksdb/db/wide/wide_columns.cc +1 -0
  176. package/deps/rocksdb/rocksdb/db/write_batch.cc +22 -8
  177. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +5 -4
  178. package/deps/rocksdb/rocksdb/db/write_batch_test.cc +7 -6
  179. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +3 -4
  180. package/deps/rocksdb/rocksdb/db/write_thread.h +3 -3
  181. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +13 -5
  182. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +9 -2
  183. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +39 -0
  184. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +65 -0
  185. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +45 -22
  186. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_listener.h +7 -4
  187. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +22 -5
  188. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_table_properties_collector.h +28 -3
  189. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +143 -38
  190. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +4 -3
  191. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.cc +80 -32
  192. package/deps/rocksdb/rocksdb/db_stress_tool/expected_state.h +51 -2
  193. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +23 -1
  194. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +305 -15
  195. package/deps/rocksdb/rocksdb/env/env.cc +32 -2
  196. package/deps/rocksdb/rocksdb/env/env_encryption.cc +0 -2
  197. package/deps/rocksdb/rocksdb/env/env_encryption_ctr.h +2 -4
  198. package/deps/rocksdb/rocksdb/env/env_posix.cc +4 -2
  199. package/deps/rocksdb/rocksdb/env/env_test.cc +0 -1
  200. package/deps/rocksdb/rocksdb/env/fs_posix.cc +20 -11
  201. package/deps/rocksdb/rocksdb/env/fs_readonly.h +0 -2
  202. package/deps/rocksdb/rocksdb/env/fs_remap.cc +0 -2
  203. package/deps/rocksdb/rocksdb/env/fs_remap.h +0 -2
  204. package/deps/rocksdb/rocksdb/env/io_posix.cc +6 -4
  205. package/deps/rocksdb/rocksdb/env/io_posix.h +3 -2
  206. package/deps/rocksdb/rocksdb/env/mock_env.cc +0 -1
  207. package/deps/rocksdb/rocksdb/file/delete_scheduler.cc +2 -2
  208. package/deps/rocksdb/rocksdb/file/delete_scheduler.h +0 -2
  209. package/deps/rocksdb/rocksdb/file/delete_scheduler_test.cc +0 -2
  210. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +30 -21
  211. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +16 -0
  212. package/deps/rocksdb/rocksdb/file/file_util.cc +32 -14
  213. package/deps/rocksdb/rocksdb/file/file_util.h +22 -5
  214. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +229 -76
  215. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +21 -12
  216. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +10 -7
  217. package/deps/rocksdb/rocksdb/file/random_access_file_reader_test.cc +12 -8
  218. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.cc +1 -2
  219. package/deps/rocksdb/rocksdb/file/sst_file_manager_impl.h +0 -2
  220. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +3 -3
  221. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +598 -0
  222. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_iterator.h +36 -0
  223. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +70 -11
  224. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +232 -11
  225. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +1 -1
  226. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +3 -1
  227. package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +149 -15
  228. package/deps/rocksdb/rocksdb/include/rocksdb/convenience.h +17 -2
  229. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +132 -34
  230. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +158 -79
  231. package/deps/rocksdb/rocksdb/include/rocksdb/db_bench_tool.h +2 -1
  232. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +4 -5
  233. package/deps/rocksdb/rocksdb/include/rocksdb/env_encryption.h +1 -3
  234. package/deps/rocksdb/rocksdb/include/rocksdb/experimental.h +5 -0
  235. package/deps/rocksdb/rocksdb/include/rocksdb/external_table.h +275 -0
  236. package/deps/rocksdb/rocksdb/include/rocksdb/file_checksum.h +2 -1
  237. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +50 -5
  238. package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +10 -0
  239. package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +13 -0
  240. package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +0 -1
  241. package/deps/rocksdb/rocksdb/include/rocksdb/listener.h +5 -2
  242. package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +13 -0
  243. package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +237 -0
  244. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +230 -39
  245. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +15 -0
  246. package/deps/rocksdb/rocksdb/include/rocksdb/perf_level.h +31 -11
  247. package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +41 -0
  248. package/deps/rocksdb/rocksdb/include/rocksdb/slice_transform.h +1 -1
  249. package/deps/rocksdb/rocksdb/include/rocksdb/sst_dump_tool.h +0 -1
  250. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_reader.h +5 -1
  251. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +0 -1
  252. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +18 -3
  253. package/deps/rocksdb/rocksdb/include/rocksdb/status.h +2 -0
  254. package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -8
  255. package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +19 -2
  256. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +1 -1
  257. package/deps/rocksdb/rocksdb/include/rocksdb/tool_hooks.h +124 -0
  258. package/deps/rocksdb/rocksdb/include/rocksdb/trace_record.h +1 -0
  259. package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +26 -1
  260. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +55 -6
  261. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/debug.h +3 -5
  262. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +0 -2
  263. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd.h +1 -2
  264. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/memory_util.h +0 -1
  265. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/object_registry.h +1 -2
  266. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/options_util.h +0 -1
  267. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index.h +96 -8
  268. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/secondary_index_faiss.h +117 -0
  269. package/deps/rocksdb/rocksdb/{utilities/secondary_index/faiss_ivf_index.h → include/rocksdb/utilities/secondary_index_simple.h} +11 -14
  270. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +26 -11
  271. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/table_properties_collectors.h +16 -3
  272. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +0 -2
  273. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +63 -7
  274. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db_mutex.h +0 -1
  275. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +28 -12
  276. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +3 -3
  277. package/deps/rocksdb/rocksdb/logging/auto_roll_logger_test.cc +0 -2
  278. package/deps/rocksdb/rocksdb/logging/event_logger_test.cc +1 -2
  279. package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +1 -1
  280. package/deps/rocksdb/rocksdb/memory/memory_allocator_test.cc +0 -1
  281. package/deps/rocksdb/rocksdb/memtable/hash_linklist_rep.cc +0 -1
  282. package/deps/rocksdb/rocksdb/memtable/memtablerep_bench.cc +3 -1
  283. package/deps/rocksdb/rocksdb/memtable/skiplist.h +2 -2
  284. package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +2 -4
  285. package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +69 -8
  286. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.cc +32 -9
  287. package/deps/rocksdb/rocksdb/memtable/wbwi_memtable.h +58 -45
  288. package/deps/rocksdb/rocksdb/monitoring/histogram.h +1 -1
  289. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +5 -3
  290. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +5 -0
  291. package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +1 -1
  292. package/deps/rocksdb/rocksdb/monitoring/thread_status_util_debug.cc +3 -2
  293. package/deps/rocksdb/rocksdb/options/cf_options.cc +44 -13
  294. package/deps/rocksdb/rocksdb/options/cf_options.h +21 -7
  295. package/deps/rocksdb/rocksdb/options/configurable.cc +5 -5
  296. package/deps/rocksdb/rocksdb/options/configurable_test.h +1 -2
  297. package/deps/rocksdb/rocksdb/options/customizable.cc +0 -1
  298. package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -11
  299. package/deps/rocksdb/rocksdb/options/db_options.cc +18 -15
  300. package/deps/rocksdb/rocksdb/options/db_options.h +2 -2
  301. package/deps/rocksdb/rocksdb/options/options.cc +296 -305
  302. package/deps/rocksdb/rocksdb/options/options_helper.cc +188 -62
  303. package/deps/rocksdb/rocksdb/options/options_helper.h +3 -3
  304. package/deps/rocksdb/rocksdb/options/options_parser.cc +2 -4
  305. package/deps/rocksdb/rocksdb/options/options_parser.h +0 -1
  306. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +17 -4
  307. package/deps/rocksdb/rocksdb/options/options_test.cc +101 -76
  308. package/deps/rocksdb/rocksdb/port/lang.h +2 -1
  309. package/deps/rocksdb/rocksdb/port/port_posix.cc +2 -1
  310. package/deps/rocksdb/rocksdb/port/stack_trace.cc +5 -4
  311. package/deps/rocksdb/rocksdb/port/win/env_win.cc +3 -2
  312. package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +99 -1
  313. package/deps/rocksdb/rocksdb/port/win/xpress_win.h +6 -0
  314. package/deps/rocksdb/rocksdb/src.mk +17 -11
  315. package/deps/rocksdb/rocksdb/table/adaptive/adaptive_table_factory.h +0 -1
  316. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1094 -929
  317. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +6 -19
  318. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +76 -22
  319. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.h +2 -0
  320. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +221 -131
  321. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +12 -9
  322. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +23 -24
  323. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +38 -38
  324. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +7 -4
  325. package/deps/rocksdb/rocksdb/table/block_based/block_cache.cc +5 -5
  326. package/deps/rocksdb/rocksdb/table/block_based/block_cache.h +10 -12
  327. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +6 -4
  328. package/deps/rocksdb/rocksdb/table/block_based/block_test.cc +35 -43
  329. package/deps/rocksdb/rocksdb/table/block_based/data_block_hash_index_test.cc +2 -1
  330. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +1 -1
  331. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +1 -2
  332. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -4
  333. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +0 -1
  334. package/deps/rocksdb/rocksdb/table/block_based/hash_index_reader.cc +3 -3
  335. package/deps/rocksdb/rocksdb/table/block_based/index_reader_common.cc +3 -3
  336. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +4 -4
  337. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +1 -1
  338. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.cc +4 -5
  339. package/deps/rocksdb/rocksdb/table/block_based/uncompression_dict_reader.h +4 -4
  340. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +37 -35
  341. package/deps/rocksdb/rocksdb/table/block_fetcher.h +11 -7
  342. package/deps/rocksdb/rocksdb/table/block_fetcher_test.cc +4 -3
  343. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.cc +31 -5
  344. package/deps/rocksdb/rocksdb/table/compaction_merging_iterator.h +2 -1
  345. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder.h +0 -1
  346. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_builder_test.cc +0 -1
  347. package/deps/rocksdb/rocksdb/table/cuckoo/cuckoo_table_reader_test.cc +0 -1
  348. package/deps/rocksdb/rocksdb/table/external_table.cc +483 -0
  349. package/deps/rocksdb/rocksdb/table/format.cc +62 -44
  350. package/deps/rocksdb/rocksdb/table/format.h +35 -12
  351. package/deps/rocksdb/rocksdb/table/internal_iterator.h +3 -13
  352. package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +8 -0
  353. package/deps/rocksdb/rocksdb/table/merging_iterator.cc +6 -0
  354. package/deps/rocksdb/rocksdb/table/meta_blocks.cc +150 -141
  355. package/deps/rocksdb/rocksdb/table/meta_blocks.h +5 -0
  356. package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -2
  357. package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +8 -0
  358. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.cc +0 -1
  359. package/deps/rocksdb/rocksdb/table/plain/plain_table_index.h +0 -2
  360. package/deps/rocksdb/rocksdb/table/plain/plain_table_key_coding.h +0 -2
  361. package/deps/rocksdb/rocksdb/table/plain/plain_table_reader.cc +0 -1
  362. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +6 -6
  363. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +0 -1
  364. package/deps/rocksdb/rocksdb/table/sst_file_reader.cc +86 -7
  365. package/deps/rocksdb/rocksdb/table/sst_file_reader_test.cc +88 -2
  366. package/deps/rocksdb/rocksdb/table/sst_file_writer.cc +0 -1
  367. package/deps/rocksdb/rocksdb/table/table_builder.h +10 -1
  368. package/deps/rocksdb/rocksdb/table/table_reader_bench.cc +3 -2
  369. package/deps/rocksdb/rocksdb/table/table_test.cc +899 -22
  370. package/deps/rocksdb/rocksdb/test_util/testutil.cc +3 -4
  371. package/deps/rocksdb/rocksdb/test_util/testutil.h +132 -1
  372. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.cc +0 -1
  373. package/deps/rocksdb/rocksdb/test_util/transaction_test_util.h +0 -2
  374. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +163 -77
  375. package/deps/rocksdb/rocksdb/tools/db_bench_tool_test.cc +0 -2
  376. package/deps/rocksdb/rocksdb/tools/db_repl_stress.cc +0 -1
  377. package/deps/rocksdb/rocksdb/tools/dump/db_dump_tool.cc +0 -1
  378. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +120 -52
  379. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -0
  380. package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +1 -1
  381. package/deps/rocksdb/rocksdb/tools/reduce_levels_test.cc +0 -2
  382. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.cc +2 -2
  383. package/deps/rocksdb/rocksdb/tools/simulated_hybrid_file_system.h +0 -2
  384. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +2 -1
  385. package/deps/rocksdb/rocksdb/tools/tool_hooks.cc +94 -0
  386. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +0 -1
  387. package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.h +0 -1
  388. package/deps/rocksdb/rocksdb/trace_replay/io_tracer.cc +1 -1
  389. package/deps/rocksdb/rocksdb/trace_replay/io_tracer_test.cc +2 -1
  390. package/deps/rocksdb/rocksdb/trace_replay/trace_replay.cc +3 -5
  391. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  392. package/deps/rocksdb/rocksdb/util/async_file_reader.h +15 -8
  393. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.cc +131 -0
  394. package/deps/rocksdb/rocksdb/util/auto_skip_compressor.h +90 -0
  395. package/deps/rocksdb/rocksdb/util/autovector.h +1 -1
  396. package/deps/rocksdb/rocksdb/util/autovector_test.cc +2 -2
  397. package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +0 -2
  398. package/deps/rocksdb/rocksdb/util/compression.cc +936 -4
  399. package/deps/rocksdb/rocksdb/util/compression.h +348 -232
  400. package/deps/rocksdb/rocksdb/util/compression_test.cc +229 -0
  401. package/deps/rocksdb/rocksdb/util/crc32c_arm64.cc +10 -10
  402. package/deps/rocksdb/rocksdb/util/crc32c_ppc.c +1 -0
  403. package/deps/rocksdb/rocksdb/util/data_structure.cc +2 -0
  404. package/deps/rocksdb/rocksdb/util/file_reader_writer_test.cc +1 -3
  405. package/deps/rocksdb/rocksdb/util/ppc-opcode.h +5 -5
  406. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +108 -0
  407. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +67 -0
  408. package/deps/rocksdb/rocksdb/util/slice_test.cc +83 -0
  409. package/deps/rocksdb/rocksdb/util/string_util.cc +0 -2
  410. package/deps/rocksdb/rocksdb/util/string_util.h +10 -0
  411. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -1
  412. package/deps/rocksdb/rocksdb/util/udt_util.cc +18 -5
  413. package/deps/rocksdb/rocksdb/util/udt_util.h +10 -7
  414. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +650 -154
  415. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +438 -144
  416. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_compaction_filter.cc +0 -1
  417. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db.h +0 -1
  418. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_gc_stats.h +0 -1
  419. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +16 -17
  420. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.h +2 -1
  421. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl_filesnapshot.cc +0 -1
  422. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_listener.h +0 -1
  423. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_test.cc +7 -8
  424. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +4 -3
  425. package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.h +0 -1
  426. package/deps/rocksdb/rocksdb/utilities/cache_dump_load.cc +0 -1
  427. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +2 -2
  428. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_impl.cc +1 -1
  429. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +0 -48
  430. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.cc +0 -1
  431. package/deps/rocksdb/rocksdb/utilities/compaction_filters/remove_emptyvalue_compactionfilter.h +0 -1
  432. package/deps/rocksdb/rocksdb/utilities/debug.cc +7 -14
  433. package/deps/rocksdb/rocksdb/utilities/env_mirror.cc +0 -1
  434. package/deps/rocksdb/rocksdb/utilities/env_mirror_test.cc +0 -2
  435. package/deps/rocksdb/rocksdb/utilities/env_timed.cc +0 -1
  436. package/deps/rocksdb/rocksdb/utilities/env_timed_test.cc +0 -2
  437. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +5 -3
  438. package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +10 -9
  439. package/deps/rocksdb/rocksdb/utilities/memory/memory_test.cc +0 -1
  440. package/deps/rocksdb/rocksdb/utilities/memory/memory_util.cc +0 -1
  441. package/deps/rocksdb/rocksdb/utilities/memory_allocators.h +1 -0
  442. package/deps/rocksdb/rocksdb/utilities/object_registry_test.cc +0 -2
  443. package/deps/rocksdb/rocksdb/utilities/options/options_util.cc +0 -1
  444. package/deps/rocksdb/rocksdb/utilities/options/options_util_test.cc +0 -1
  445. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.cc +0 -1
  446. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier.h +0 -2
  447. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_file.h +0 -2
  448. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.cc +0 -1
  449. package/deps/rocksdb/rocksdb/utilities/persistent_cache/block_cache_tier_metadata.h +0 -2
  450. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table.h +0 -2
  451. package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_evictable.h +0 -2
  452. package/deps/rocksdb/rocksdb/utilities/persistent_cache/lrulist.h +0 -2
  453. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.h +0 -2
  454. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.cc +0 -1
  455. package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_tier.h +0 -2
  456. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.cc +0 -1
  457. package/deps/rocksdb/rocksdb/utilities/persistent_cache/volatile_tier_impl.h +0 -2
  458. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index.cc +183 -32
  459. package/deps/rocksdb/rocksdb/utilities/secondary_index/faiss_ivf_index_test.cc +258 -12
  460. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_helper.h +33 -0
  461. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_iterator.cc +99 -0
  462. package/deps/rocksdb/rocksdb/utilities/secondary_index/secondary_index_mixin.h +280 -120
  463. package/deps/rocksdb/rocksdb/utilities/secondary_index/simple_secondary_index.cc +79 -0
  464. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.cc +52 -16
  465. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector.h +10 -6
  466. package/deps/rocksdb/rocksdb/utilities/table_properties_collectors/compact_on_deletion_collector_test.cc +55 -0
  467. package/deps/rocksdb/rocksdb/utilities/trace/replayer_impl.cc +0 -1
  468. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +0 -2
  469. package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.h +0 -1
  470. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +37 -12
  471. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +2 -0
  472. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +0 -2
  473. package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_tracker.cc +0 -2
  474. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +1 -1
  475. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/db.h +1 -1
  476. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/portability/toku_time.h +1 -1
  477. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/util/dbt.cc +2 -1
  478. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/range_tree_lock_manager.cc +2 -2
  479. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.cc +0 -1
  480. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction.h +0 -2
  481. package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_db_impl.cc +1 -3
  482. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +36 -10
  483. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +5 -7
  484. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.cc +4 -5
  485. package/deps/rocksdb/rocksdb/utilities/transactions/snapshot_checker.cc +1 -4
  486. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +1 -2
  487. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +0 -2
  488. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.h +0 -1
  489. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +1118 -37
  490. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +4 -7
  491. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.cc +0 -2
  492. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_util.h +0 -2
  493. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +3 -3
  494. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +0 -1
  495. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +0 -2
  496. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +1 -2
  497. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.h +1 -2
  498. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +0 -1
  499. package/deps/rocksdb/rocksdb/utilities/ttl/ttl_test.cc +0 -3
  500. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +125 -127
  501. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.cc +45 -23
  502. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_internal.h +54 -22
  503. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index_test.cc +477 -58
  504. package/deps/rocksdb/rocksdb.gyp +5 -0
  505. package/index.js +47 -2
  506. package/package.json +8 -1
  507. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  508. package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
@@ -16,7 +16,6 @@
16
16
 
17
17
  namespace ROCKSDB_NAMESPACE {
18
18
 
19
-
20
19
  DBImplReadOnly::DBImplReadOnly(const DBOptions& db_options,
21
20
  const std::string& dbname)
22
21
  : DBImpl(db_options, dbname, /*seq_per_batch*/ false,
@@ -33,7 +32,8 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
33
32
  const Slice& key,
34
33
  GetImplOptions& get_impl_options) {
35
34
  assert(get_impl_options.value != nullptr ||
36
- get_impl_options.columns != nullptr);
35
+ get_impl_options.columns != nullptr ||
36
+ get_impl_options.merge_operands != nullptr);
37
37
  assert(get_impl_options.column_family);
38
38
 
39
39
  Status s;
@@ -87,7 +87,11 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
87
87
  return s;
88
88
  }
89
89
  }
90
+ // Prepare to store a list of merge operations if merge occurs.
90
91
  MergeContext merge_context;
92
+ // TODO - Large Result Optimization for Read Only DB
93
+ // (https://github.com/facebook/rocksdb/pull/10458)
94
+
91
95
  SequenceNumber max_covering_tombstone_seq = 0;
92
96
  LookupKey lkey(key, snapshot, read_options.timestamp);
93
97
  PERF_TIMER_STOP(get_snapshot_time);
@@ -98,7 +102,8 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
98
102
  get_impl_options.value ? get_impl_options.value->GetSelf() : nullptr,
99
103
  get_impl_options.columns, ts, &s, &merge_context,
100
104
  &max_covering_tombstone_seq, read_options,
101
- false /* immutable_memtable */, &read_cb)) {
105
+ false /* immutable_memtable */, &read_cb,
106
+ /*is_blob_index=*/nullptr, /*do_merge=*/get_impl_options.get_value)) {
102
107
  if (get_impl_options.value) {
103
108
  get_impl_options.value->PinSelf();
104
109
  }
@@ -112,7 +117,7 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
112
117
  /*value_found*/ nullptr,
113
118
  /*key_exists*/ nullptr, /*seq*/ nullptr, &read_cb,
114
119
  /*is_blob*/ nullptr,
115
- /*do_merge*/ true);
120
+ /*do_merge=*/get_impl_options.get_value);
116
121
  RecordTick(stats_, MEMTABLE_MISS);
117
122
  }
118
123
  {
@@ -122,6 +127,14 @@ Status DBImplReadOnly::GetImpl(const ReadOptions& read_options,
122
127
  size = get_impl_options.value->size();
123
128
  } else if (get_impl_options.columns) {
124
129
  size = get_impl_options.columns->serialized_size();
130
+ } else if (get_impl_options.merge_operands) {
131
+ *get_impl_options.number_of_operands =
132
+ static_cast<int>(merge_context.GetNumOperands());
133
+ for (const Slice& sl : merge_context.GetOperands()) {
134
+ size += sl.size();
135
+ get_impl_options.merge_operands->PinSelf(sl);
136
+ get_impl_options.merge_operands++;
137
+ }
125
138
  }
126
139
  RecordTick(stats_, BYTES_READ, size);
127
140
  RecordInHistogram(stats_, BYTES_PER_READ, size);
@@ -172,16 +185,10 @@ Iterator* DBImplReadOnly::NewIterator(const ReadOptions& _read_options,
172
185
  ? static_cast<const SnapshotImpl*>(read_options.snapshot)->number_
173
186
  : latest_snapshot;
174
187
  ReadCallback* read_callback = nullptr; // No read callback provided.
175
- auto db_iter = NewArenaWrappedDbIterator(
176
- env_, read_options, *cfd->ioptions(), super_version->mutable_cf_options,
177
- super_version->current, read_seq,
178
- super_version->mutable_cf_options.max_sequential_skip_in_iterations,
179
- super_version->version_number, read_callback);
180
- auto internal_iter = NewInternalIterator(
181
- db_iter->GetReadOptions(), cfd, super_version, db_iter->GetArena(),
182
- read_seq, /* allow_unprepared_value */ true, db_iter);
183
- db_iter->SetIterUnderDBIter(internal_iter);
184
- return db_iter;
188
+ return NewArenaWrappedDbIterator(
189
+ env_, read_options, cfh, super_version, read_seq, read_callback, this,
190
+ /*expose_blob_index=*/false, /*allow_refresh=*/false,
191
+ /*allow_mark_memtable_for_flush=*/false);
185
192
  }
186
193
 
187
194
  Status DBImplReadOnly::NewIterators(
@@ -218,36 +225,32 @@ Status DBImplReadOnly::NewIterators(
218
225
  ? static_cast<const SnapshotImpl*>(read_options.snapshot)->number_
219
226
  : latest_snapshot;
220
227
 
221
- autovector<std::tuple<ColumnFamilyData*, SuperVersion*>> cfd_to_sv;
228
+ autovector<std::tuple<ColumnFamilyHandleImpl*, SuperVersion*>> cfh_to_sv;
222
229
 
223
230
  const bool check_read_ts =
224
231
  read_options.timestamp && read_options.timestamp->size() > 0;
225
232
  for (auto cfh : column_families) {
226
233
  auto* cfd = static_cast_with_check<ColumnFamilyHandleImpl>(cfh)->cfd();
227
234
  auto* sv = cfd->GetSuperVersion()->Ref();
228
- cfd_to_sv.emplace_back(cfd, sv);
235
+ cfh_to_sv.emplace_back(static_cast_with_check<ColumnFamilyHandleImpl>(cfh),
236
+ sv);
229
237
  if (check_read_ts) {
230
238
  const Status s =
231
239
  FailIfReadCollapsedHistory(cfd, sv, *(read_options.timestamp));
232
240
  if (!s.ok()) {
233
- for (auto prev_entry : cfd_to_sv) {
241
+ for (auto prev_entry : cfh_to_sv) {
234
242
  std::get<1>(prev_entry)->Unref();
235
243
  }
236
244
  return s;
237
245
  }
238
246
  }
239
247
  }
240
- assert(cfd_to_sv.size() == column_families.size());
241
- for (auto [cfd, sv] : cfd_to_sv) {
248
+ assert(cfh_to_sv.size() == column_families.size());
249
+ for (auto [cfh, sv] : cfh_to_sv) {
242
250
  auto* db_iter = NewArenaWrappedDbIterator(
243
- env_, read_options, *cfd->ioptions(), sv->mutable_cf_options,
244
- sv->current, read_seq,
245
- sv->mutable_cf_options.max_sequential_skip_in_iterations,
246
- sv->version_number, read_callback);
247
- auto* internal_iter = NewInternalIterator(
248
- db_iter->GetReadOptions(), cfd, sv, db_iter->GetArena(), read_seq,
249
- /* allow_unprepared_value */ true, db_iter);
250
- db_iter->SetIterUnderDBIter(internal_iter);
251
+ env_, read_options, cfh, sv, read_seq, read_callback, this,
252
+ /*expose_blob_index=*/false, /*allow_refresh=*/false,
253
+ /*allow_mark_memtable_for_flush=*/false);
251
254
  iterators->push_back(db_iter);
252
255
  }
253
256
 
@@ -276,7 +279,8 @@ Status OpenForReadOnlyCheckExistence(const DBOptions& db_options,
276
279
  } // namespace
277
280
 
278
281
  Status DB::OpenForReadOnly(const Options& options, const std::string& dbname,
279
- DB** dbptr, bool /*error_if_wal_file_exists*/) {
282
+ std::unique_ptr<DB>* dbptr,
283
+ bool /*error_if_wal_file_exists*/) {
280
284
  Status s = OpenForReadOnlyCheckExistence(options, dbname);
281
285
  if (!s.ok()) {
282
286
  return s;
@@ -310,7 +314,7 @@ Status DB::OpenForReadOnly(const Options& options, const std::string& dbname,
310
314
  Status DB::OpenForReadOnly(
311
315
  const DBOptions& db_options, const std::string& dbname,
312
316
  const std::vector<ColumnFamilyDescriptor>& column_families,
313
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
317
+ std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
314
318
  bool error_if_wal_file_exists) {
315
319
  // If dbname does not exist in the file system, should not do anything
316
320
  Status s = OpenForReadOnlyCheckExistence(db_options, dbname);
@@ -326,7 +330,7 @@ Status DB::OpenForReadOnly(
326
330
  Status DBImplReadOnly::OpenForReadOnlyWithoutCheck(
327
331
  const DBOptions& db_options, const std::string& dbname,
328
332
  const std::vector<ColumnFamilyDescriptor>& column_families,
329
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
333
+ std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
330
334
  bool error_if_wal_file_exists) {
331
335
  *dbptr = nullptr;
332
336
  handles->clear();
@@ -357,7 +361,7 @@ Status DBImplReadOnly::OpenForReadOnlyWithoutCheck(
357
361
  impl->mutex_.Unlock();
358
362
  sv_context.Clean();
359
363
  if (s.ok()) {
360
- *dbptr = impl;
364
+ dbptr->reset(impl);
361
365
  for (auto* h : *handles) {
362
366
  impl->NewThreadStatusCfInfo(
363
367
  static_cast_with_check<ColumnFamilyHandleImpl>(h)->cfd());
@@ -372,5 +376,4 @@ Status DBImplReadOnly::OpenForReadOnlyWithoutCheck(
372
376
  return s;
373
377
  }
374
378
 
375
-
376
379
  } // namespace ROCKSDB_NAMESPACE
@@ -5,7 +5,6 @@
5
5
 
6
6
  #pragma once
7
7
 
8
-
9
8
  #include <string>
10
9
  #include <vector>
11
10
 
@@ -156,6 +155,29 @@ class DBImplReadOnly : public DBImpl {
156
155
  return Status::NotSupported("Not supported operation in read only mode.");
157
156
  }
158
157
 
158
+ using DB::CreateColumnFamily;
159
+ using DBImpl::CreateColumnFamily;
160
+ Status CreateColumnFamily(const ColumnFamilyOptions& /*cf_options*/,
161
+ const std::string& /*column_family*/,
162
+ ColumnFamilyHandle** /*handle*/) override {
163
+ return Status::NotSupported("Not supported operation in read only mode.");
164
+ }
165
+
166
+ using DB::CreateColumnFamilies;
167
+ using DBImpl::CreateColumnFamilies;
168
+ Status CreateColumnFamilies(
169
+ const ColumnFamilyOptions& /*cf_options*/,
170
+ const std::vector<std::string>& /*column_family_names*/,
171
+ std::vector<ColumnFamilyHandle*>* /*handles*/) override {
172
+ return Status::NotSupported("Not supported operation in read only mode.");
173
+ }
174
+
175
+ Status CreateColumnFamilies(
176
+ const std::vector<ColumnFamilyDescriptor>& /*column_families*/,
177
+ std::vector<ColumnFamilyHandle*>* /*handles*/) override {
178
+ return Status::NotSupported("Not supported operation in read only mode.");
179
+ }
180
+
159
181
  // FIXME: some missing overrides for more "write" functions
160
182
 
161
183
  protected:
@@ -172,7 +194,7 @@ class DBImplReadOnly : public DBImpl {
172
194
  static Status OpenForReadOnlyWithoutCheck(
173
195
  const DBOptions& db_options, const std::string& dbname,
174
196
  const std::vector<ColumnFamilyDescriptor>& column_families,
175
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr,
197
+ std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr,
176
198
  bool error_if_wal_file_exists = false);
177
199
  friend class DB;
178
200
  };
@@ -55,9 +55,9 @@ Status DBImplSecondary::Recover(
55
55
  // Initial max_total_in_memory_state_ before recovery logs.
56
56
  max_total_in_memory_state_ = 0;
57
57
  for (auto cfd : *versions_->GetColumnFamilySet()) {
58
- auto* mutable_cf_options = cfd->GetLatestMutableCFOptions();
59
- max_total_in_memory_state_ += mutable_cf_options->write_buffer_size *
60
- mutable_cf_options->max_write_buffer_number;
58
+ const auto& mutable_cf_options = cfd->GetLatestMutableCFOptions();
59
+ max_total_in_memory_state_ += mutable_cf_options.write_buffer_size *
60
+ mutable_cf_options.max_write_buffer_number;
61
61
  }
62
62
  if (s.ok()) {
63
63
  default_cf_handle_ = new ColumnFamilyHandleImpl(
@@ -270,10 +270,8 @@ Status DBImplSecondary::RecoverLogFiles(
270
270
  if (!cfd->mem()->IsEmpty() &&
271
271
  (curr_log_num == std::numeric_limits<uint64_t>::max() ||
272
272
  curr_log_num != log_number)) {
273
- const MutableCFOptions mutable_cf_options =
274
- *cfd->GetLatestMutableCFOptions();
275
- MemTable* new_mem =
276
- cfd->ConstructNewMemtable(mutable_cf_options, seq_of_batch);
273
+ MemTable* new_mem = cfd->ConstructNewMemtable(
274
+ cfd->GetLatestMutableCFOptions(), seq_of_batch);
277
275
  cfd->mem()->SetNextLogNumber(log_number);
278
276
  cfd->mem()->ConstructFragmentedRangeTombstones();
279
277
  cfd->imm()->Add(cfd->mem(), &job_context->memtables_to_free);
@@ -344,7 +342,8 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
344
342
  const Slice& key,
345
343
  GetImplOptions& get_impl_options) {
346
344
  assert(get_impl_options.value != nullptr ||
347
- get_impl_options.columns != nullptr);
345
+ get_impl_options.columns != nullptr ||
346
+ get_impl_options.merge_operands != nullptr);
348
347
  assert(get_impl_options.column_family);
349
348
 
350
349
  Status s;
@@ -399,37 +398,64 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
399
398
  }
400
399
  }
401
400
  MergeContext merge_context;
401
+ // TODO - Large Result Optimization for Secondary DB
402
+ // (https://github.com/facebook/rocksdb/pull/10458)
403
+
402
404
  SequenceNumber max_covering_tombstone_seq = 0;
403
405
  LookupKey lkey(key, snapshot, read_options.timestamp);
404
406
  PERF_TIMER_STOP(get_snapshot_time);
405
407
  bool done = false;
406
408
 
407
409
  // Look up starts here
408
- if (super_version->mem->Get(
409
- lkey,
410
- get_impl_options.value ? get_impl_options.value->GetSelf() : nullptr,
411
- get_impl_options.columns, ts, &s, &merge_context,
412
- &max_covering_tombstone_seq, read_options,
413
- false /* immutable_memtable */, &read_cb)) {
414
- done = true;
415
- if (get_impl_options.value) {
416
- get_impl_options.value->PinSelf();
410
+ if (get_impl_options.get_value) {
411
+ if (super_version->mem->Get(
412
+ lkey,
413
+ get_impl_options.value ? get_impl_options.value->GetSelf()
414
+ : nullptr,
415
+ get_impl_options.columns, ts, &s, &merge_context,
416
+ &max_covering_tombstone_seq, read_options,
417
+ false /* immutable_memtable */, &read_cb,
418
+ /*is_blob_index=*/nullptr, /*do_merge=*/true)) {
419
+ done = true;
420
+ if (get_impl_options.value) {
421
+ get_impl_options.value->PinSelf();
422
+ }
423
+ RecordTick(stats_, MEMTABLE_HIT);
424
+ } else if ((s.ok() || s.IsMergeInProgress()) &&
425
+ super_version->imm->Get(
426
+ lkey,
427
+ get_impl_options.value ? get_impl_options.value->GetSelf()
428
+ : nullptr,
429
+ get_impl_options.columns, ts, &s, &merge_context,
430
+ &max_covering_tombstone_seq, read_options, &read_cb)) {
431
+ done = true;
432
+ if (get_impl_options.value) {
433
+ get_impl_options.value->PinSelf();
434
+ }
435
+ RecordTick(stats_, MEMTABLE_HIT);
417
436
  }
418
- RecordTick(stats_, MEMTABLE_HIT);
419
- } else if ((s.ok() || s.IsMergeInProgress()) &&
420
- super_version->imm->Get(
421
- lkey,
422
- get_impl_options.value ? get_impl_options.value->GetSelf()
423
- : nullptr,
424
- get_impl_options.columns, ts, &s, &merge_context,
425
- &max_covering_tombstone_seq, read_options, &read_cb)) {
426
- done = true;
427
- if (get_impl_options.value) {
428
- get_impl_options.value->PinSelf();
437
+ } else {
438
+ // GetMergeOperands
439
+ if (super_version->mem->Get(
440
+ lkey,
441
+ get_impl_options.value ? get_impl_options.value->GetSelf()
442
+ : nullptr,
443
+ get_impl_options.columns, ts, &s, &merge_context,
444
+ &max_covering_tombstone_seq, read_options,
445
+ false /* immutable_memtable */, &read_cb,
446
+ /*is_blob_index=*/nullptr, /*do_merge=*/false)) {
447
+ done = true;
448
+ RecordTick(stats_, MEMTABLE_HIT);
449
+ } else if ((s.ok() || s.IsMergeInProgress()) &&
450
+ super_version->imm->GetMergeOperands(lkey, &s, &merge_context,
451
+ &max_covering_tombstone_seq,
452
+ read_options)) {
453
+ done = true;
454
+ RecordTick(stats_, MEMTABLE_HIT);
429
455
  }
430
- RecordTick(stats_, MEMTABLE_HIT);
431
456
  }
432
- if (!done && !s.ok() && !s.IsMergeInProgress()) {
457
+ if (!s.ok() && !s.IsMergeInProgress() && !s.IsNotFound()) {
458
+ assert(done);
433
459
  ReturnAndCleanupSuperVersion(cfd, super_version);
434
460
  return s;
435
461
  }
@@ -453,6 +479,14 @@ Status DBImplSecondary::GetImpl(const ReadOptions& read_options,
453
479
  size = get_impl_options.value->size();
454
480
  } else if (get_impl_options.columns) {
455
481
  size = get_impl_options.columns->serialized_size();
482
+ } else if (get_impl_options.merge_operands) {
483
+ *get_impl_options.number_of_operands =
484
+ static_cast<int>(merge_context.GetNumOperands());
485
+ for (const Slice& sl : merge_context.GetOperands()) {
486
+ size += sl.size();
487
+ get_impl_options.merge_operands->PinSelf(sl);
488
+ get_impl_options.merge_operands++;
489
+ }
456
490
  }
457
491
  RecordTick(stats_, BYTES_READ, size);
458
492
  RecordTimeToHistogram(stats_, BYTES_PER_READ, size);
@@ -532,17 +566,10 @@ ArenaWrappedDBIter* DBImplSecondary::NewIteratorImpl(
532
566
  assert(snapshot == kMaxSequenceNumber);
533
567
  snapshot = versions_->LastSequence();
534
568
  assert(snapshot != kMaxSequenceNumber);
535
- auto db_iter = NewArenaWrappedDbIterator(
536
- env_, read_options, *cfh->cfd()->ioptions(),
537
- super_version->mutable_cf_options, super_version->current, snapshot,
538
- super_version->mutable_cf_options.max_sequential_skip_in_iterations,
539
- super_version->version_number, read_callback, cfh, expose_blob_index,
540
- allow_refresh);
541
- auto internal_iter = NewInternalIterator(
542
- db_iter->GetReadOptions(), cfh->cfd(), super_version, db_iter->GetArena(),
543
- snapshot, /* allow_unprepared_value */ true, db_iter);
544
- db_iter->SetIterUnderDBIter(internal_iter);
545
- return db_iter;
569
+ return NewArenaWrappedDbIterator(env_, read_options, cfh, super_version,
570
+ snapshot, read_callback, this,
571
+ expose_blob_index, allow_refresh,
572
+ /*allow_mark_memtable_for_flush=*/false);
546
573
  }
547
574
 
548
575
  Status DBImplSecondary::NewIterators(
@@ -671,13 +698,13 @@ Status DBImplSecondary::CheckConsistency() {
671
698
 
672
699
  Status DBImplSecondary::TryCatchUpWithPrimary() {
673
700
  assert(versions_.get() != nullptr);
674
- assert(manifest_reader_.get() != nullptr);
675
701
  Status s;
676
702
  // read the manifest and apply new changes to the secondary instance
677
703
  std::unordered_set<ColumnFamilyData*> cfds_changed;
678
704
  JobContext job_context(0, true /*create_superversion*/);
679
705
  {
680
706
  InstrumentedMutexLock lock_guard(&mutex_);
707
+ assert(manifest_reader_.get() != nullptr);
681
708
  s = static_cast_with_check<ReactiveVersionSet>(versions_.get())
682
709
  ->ReadAndApply(&mutex_, &manifest_reader_,
683
710
  manifest_reader_status_.get(), &cfds_changed,
@@ -701,13 +728,13 @@ Status DBImplSecondary::TryCatchUpWithPrimary() {
701
728
  // instance
702
729
  if (s.ok()) {
703
730
  s = FindAndRecoverLogFiles(&cfds_changed, &job_context);
704
- }
705
- if (s.IsPathNotFound()) {
706
- ROCKS_LOG_INFO(
707
- immutable_db_options_.info_log,
708
- "Secondary tries to read WAL, but WAL file(s) have already "
709
- "been purged by primary.");
710
- s = Status::OK();
731
+ if (s.IsPathNotFound()) {
732
+ ROCKS_LOG_INFO(
733
+ immutable_db_options_.info_log,
734
+ "Secondary tries to read WAL, but WAL file(s) have already "
735
+ "been purged by primary.");
736
+ s = Status::OK();
737
+ }
711
738
  }
712
739
  if (s.ok()) {
713
740
  for (auto cfd : cfds_changed) {
@@ -737,7 +764,8 @@ Status DBImplSecondary::TryCatchUpWithPrimary() {
737
764
  }
738
765
 
739
766
  Status DB::OpenAsSecondary(const Options& options, const std::string& dbname,
740
- const std::string& secondary_path, DB** dbptr) {
767
+ const std::string& secondary_path,
768
+ std::unique_ptr<DB>* dbptr) {
741
769
  *dbptr = nullptr;
742
770
 
743
771
  DBOptions db_options(options);
@@ -759,7 +787,7 @@ Status DB::OpenAsSecondary(
759
787
  const DBOptions& db_options, const std::string& dbname,
760
788
  const std::string& secondary_path,
761
789
  const std::vector<ColumnFamilyDescriptor>& column_families,
762
- std::vector<ColumnFamilyHandle*>* handles, DB** dbptr) {
790
+ std::vector<ColumnFamilyHandle*>* handles, std::unique_ptr<DB>* dbptr) {
763
791
  *dbptr = nullptr;
764
792
 
765
793
  DBOptions tmp_opts(db_options);
@@ -826,7 +854,7 @@ Status DB::OpenAsSecondary(
826
854
  impl->mutex_.Unlock();
827
855
  sv_context.Clean();
828
856
  if (s.ok()) {
829
- *dbptr = impl;
857
+ dbptr->reset(impl);
830
858
  for (auto h : *handles) {
831
859
  impl->NewThreadStatusCfInfo(
832
860
  static_cast_with_check<ColumnFamilyHandleImpl>(h)->cfd());
@@ -864,21 +892,24 @@ Status DBImplSecondary::CompactWithoutInstallation(
864
892
  ColumnFamilyMetaData cf_meta;
865
893
  version->GetColumnFamilyMetaData(&cf_meta);
866
894
 
867
- const MutableCFOptions* mutable_cf_options = cfd->GetLatestMutableCFOptions();
868
- ColumnFamilyOptions cf_options = cfd->GetLatestCFOptions();
869
895
  VersionStorageInfo* vstorage = version->storage_info();
870
896
 
871
897
  // Use comp_options to reuse some CompactFiles functions
872
898
  CompactionOptions comp_options;
873
899
  comp_options.compression = kDisableCompressionOption;
874
900
  comp_options.output_file_size_limit = MaxFileSizeForLevel(
875
- *mutable_cf_options, input.output_level, cf_options.compaction_style,
876
- vstorage->base_level(), cf_options.level_compaction_dynamic_level_bytes);
901
+ cfd->GetLatestMutableCFOptions(), input.output_level,
902
+ cfd->ioptions().compaction_style, vstorage->base_level(),
903
+ cfd->ioptions().level_compaction_dynamic_level_bytes);
877
904
 
878
905
  std::vector<CompactionInputFiles> input_files;
879
906
  Status s = cfd->compaction_picker()->GetCompactionInputsFromFileNumbers(
880
907
  &input_files, &input_set, vstorage, comp_options);
881
908
  if (!s.ok()) {
909
+ ROCKS_LOG_ERROR(
910
+ immutable_db_options_.info_log,
911
+ "GetCompactionInputsFromFileNumbers() failed - %s.\n DebugString: %s",
912
+ s.ToString().c_str(), version->DebugString(/*hex=*/true).c_str());
882
913
  return s;
883
914
  }
884
915
 
@@ -886,7 +917,7 @@ Status DBImplSecondary::CompactWithoutInstallation(
886
917
  assert(cfd->compaction_picker());
887
918
  c.reset(cfd->compaction_picker()->CompactFiles(
888
919
  comp_options, input_files, input.output_level, vstorage,
889
- *mutable_cf_options, mutable_db_options_, 0));
920
+ cfd->GetLatestMutableCFOptions(), mutable_db_options_, 0));
890
921
  assert(c != nullptr);
891
922
 
892
923
  c->FinalizeInputInfo(version);
@@ -902,7 +933,10 @@ Status DBImplSecondary::CompactWithoutInstallation(
902
933
  immutable_db_options_.info_log.get());
903
934
 
904
935
  const int job_id = next_job_id_.fetch_add(1);
905
-
936
+ JobContext job_context(0, true /*create_superversion*/);
937
+ std::vector<SequenceNumber> snapshots = input.snapshots;
938
+ job_context.InitSnapshotContext(nullptr, nullptr, kMaxSequenceNumber,
939
+ std::move(snapshots));
906
940
  // use primary host's db_id for running the compaction, but db_session_id is
907
941
  // using the local one, which is to make sure the unique id is unique from
908
942
  // the remote compactors. Because the id is generated from db_id,
@@ -913,10 +947,12 @@ Status DBImplSecondary::CompactWithoutInstallation(
913
947
  job_id, c.get(), immutable_db_options_, mutable_db_options_,
914
948
  file_options_for_compaction_, versions_.get(), &shutting_down_,
915
949
  &log_buffer, output_dir.get(), stats_, &mutex_, &error_handler_,
916
- input.snapshots, table_cache_, &event_logger_, dbname_, io_tracer_,
950
+ &job_context, table_cache_, &event_logger_, dbname_, io_tracer_,
917
951
  options.canceled ? *options.canceled : kManualCompactionCanceledFalse_,
918
952
  input.db_id, db_session_id_, secondary_path_, input, result);
919
953
 
954
+ compaction_job.Prepare();
955
+
920
956
  mutex_.Unlock();
921
957
  s = compaction_job.Run();
922
958
  mutex_.Lock();
@@ -951,9 +987,10 @@ Status DB::OpenAndCompact(
951
987
  }
952
988
 
953
989
  // 2. Load the options
954
- DBOptions db_options;
990
+ DBOptions base_db_options;
955
991
  ConfigOptions config_options;
956
992
  config_options.env = override_options.env;
993
+ config_options.ignore_unknown_options = true;
957
994
  std::vector<ColumnFamilyDescriptor> all_column_families;
958
995
 
959
996
  TEST_SYNC_POINT_CALLBACK(
@@ -963,13 +1000,22 @@ Status DB::OpenAndCompact(
963
1000
  std::string options_file_name =
964
1001
  OptionsFileName(name, compaction_input.options_file_number);
965
1002
 
966
- s = LoadOptionsFromFile(config_options, options_file_name, &db_options,
1003
+ s = LoadOptionsFromFile(config_options, options_file_name, &base_db_options,
967
1004
  &all_column_families);
968
1005
  if (!s.ok()) {
969
1006
  return s;
970
1007
  }
971
1008
 
972
- // 3. Override pointer configurations in DBOptions with
1009
+ // 3. Options to Override
1010
+ // Override serializable configurations from override_options.options_map
1011
+ DBOptions db_options;
1012
+ s = GetDBOptionsFromMap(config_options, base_db_options,
1013
+ override_options.options_map, &db_options);
1014
+ if (!s.ok()) {
1015
+ return s;
1016
+ }
1017
+
1018
+ // Override options that are directly set as shared ptrs in
973
1019
  // CompactionServiceOptionsOverride
974
1020
  db_options.env = override_options.env;
975
1021
  db_options.file_checksum_gen_factory =
@@ -980,6 +1026,7 @@ Status DB::OpenAndCompact(
980
1026
  // We will close the DB after the compaction anyway.
981
1027
  // Open as many files as needed for the compaction.
982
1028
  db_options.max_open_files = -1;
1029
+ db_options.info_log = override_options.info_log;
983
1030
 
984
1031
  // 4. Filter CFs that are needed for OpenAndCompact()
985
1032
  // We do not need to open all column families for the remote compaction.
@@ -989,6 +1036,18 @@ Status DB::OpenAndCompact(
989
1036
  std::vector<ColumnFamilyDescriptor> column_families;
990
1037
  for (auto& cf : all_column_families) {
991
1038
  if (cf.name == compaction_input.cf_name) {
1039
+ ColumnFamilyOptions cf_options;
1040
+ // Override serializable configurations from override_options.options_map
1041
+ s = GetColumnFamilyOptionsFromMap(config_options, cf.options,
1042
+ override_options.options_map,
1043
+ &cf_options);
1044
+ if (!s.ok()) {
1045
+ return s;
1046
+ }
1047
+ cf.options = std::move(cf_options);
1048
+
1049
+ // Override options that are directly set as shared ptrs in
1050
+ // CompactionServiceOptionsOverride
992
1051
  cf.options.comparator = override_options.comparator;
993
1052
  cf.options.merge_operator = override_options.merge_operator;
994
1053
  cf.options.compaction_filter = override_options.compaction_filter;
@@ -1000,6 +1059,7 @@ Status DB::OpenAndCompact(
1000
1059
  override_options.sst_partitioner_factory;
1001
1060
  cf.options.table_properties_collector_factories =
1002
1061
  override_options.table_properties_collector_factories;
1062
+
1003
1063
  column_families.emplace_back(cf);
1004
1064
  } else if (cf.name == kDefaultColumnFamilyName) {
1005
1065
  column_families.emplace_back(cf);
@@ -1016,6 +1076,9 @@ Status DB::OpenAndCompact(
1016
1076
  }
1017
1077
  assert(db);
1018
1078
 
1079
+ TEST_SYNC_POINT_CALLBACK(
1080
+ "DBImplSecondary::OpenAndCompact::AfterOpenAsSecondary:0", db);
1081
+
1019
1082
  // 6. Find the handle of the Column Family that this will compact
1020
1083
  ColumnFamilyHandle* cfh = nullptr;
1021
1084
  for (auto* handle : handles) {
@@ -1057,5 +1120,4 @@ Status DB::OpenAndCompact(
1057
1120
  output, override_options);
1058
1121
  }
1059
1122
 
1060
-
1061
1123
  } // namespace ROCKSDB_NAMESPACE
@@ -5,7 +5,6 @@
5
5
 
6
6
  #pragma once
7
7
 
8
-
9
8
  #include <string>
10
9
  #include <vector>
11
10
 
@@ -53,7 +52,8 @@ class LogReaderContainer {
53
52
  Logger* info_log;
54
53
  std::string fname;
55
54
  Status* status; // nullptr if immutable_db_options_.paranoid_checks==false
56
- void Corruption(size_t bytes, const Status& s) override {
55
+ void Corruption(size_t bytes, const Status& s,
56
+ uint64_t /*log_number*/ = kMaxSequenceNumber) override {
57
57
  ROCKS_LOG_WARN(info_log, "%s%s: dropping %d bytes; %s",
58
58
  (this->status == nullptr ? "(ignoring error) " : ""),
59
59
  fname.c_str(), static_cast<int>(bytes),