@nxtedition/rocksdb 7.0.5 → 7.0.8

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 (262) hide show
  1. package/binding.cc +363 -329
  2. package/chained-batch.js +6 -1
  3. package/deps/rocksdb/rocksdb/CMakeLists.txt +8 -3
  4. package/deps/rocksdb/rocksdb/Makefile +10 -4
  5. package/deps/rocksdb/rocksdb/TARGETS +6 -4
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_test.cc +14 -0
  8. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +8 -8
  9. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +272 -174
  10. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +201 -57
  11. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +19 -19
  12. package/deps/rocksdb/rocksdb/cache/lru_cache.h +2 -1
  13. package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
  14. package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
  15. package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
  16. package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
  17. package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
  18. package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
  19. package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
  20. package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
  21. package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
  22. package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
  23. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +170 -0
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +95 -0
  25. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +298 -0
  26. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +172 -0
  27. package/deps/rocksdb/rocksdb/db/column_family.cc +8 -3
  28. package/deps/rocksdb/rocksdb/db/column_family.h +6 -3
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +10 -0
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -6
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -2
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +38 -0
  33. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -5
  34. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +4 -7
  35. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -71
  36. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +70 -1
  37. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +13 -12
  38. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +36 -0
  39. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -4
  40. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
  41. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +139 -91
  42. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +48 -14
  43. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +90 -55
  44. package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +9 -4
  45. package/deps/rocksdb/rocksdb/db/db_test.cc +3 -1
  46. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -7
  47. package/deps/rocksdb/rocksdb/db/db_write_test.cc +35 -0
  48. package/deps/rocksdb/rocksdb/db/dbformat.cc +3 -1
  49. package/deps/rocksdb/rocksdb/db/dbformat.h +5 -3
  50. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -1
  51. package/deps/rocksdb/rocksdb/db/memtable.cc +1 -0
  52. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
  53. package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
  54. package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -1
  55. package/deps/rocksdb/rocksdb/db/version_edit.cc +13 -5
  56. package/deps/rocksdb/rocksdb/db/version_edit.h +22 -1
  57. package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +4 -5
  58. package/deps/rocksdb/rocksdb/db/version_set.cc +109 -41
  59. package/deps/rocksdb/rocksdb/db/version_set.h +36 -3
  60. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -4
  61. package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -10
  62. package/deps/rocksdb/rocksdb/db/version_util.h +1 -1
  63. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
  64. package/deps/rocksdb/rocksdb/db/write_batch.cc +34 -10
  65. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +2 -0
  66. package/deps/rocksdb/rocksdb/db/write_callback_test.cc +4 -0
  67. package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
  68. package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -1
  69. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -1
  70. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +7 -5
  71. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +5 -10
  72. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -7
  73. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +2 -0
  74. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +24 -3
  75. package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
  76. package/deps/rocksdb/rocksdb/file/writable_file_writer.h +10 -0
  77. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +5 -0
  78. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +4 -4
  79. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +9 -5
  80. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
  81. package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
  82. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +1 -1
  83. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
  84. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -3
  85. package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +8 -6
  86. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
  87. package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -2
  88. package/deps/rocksdb/rocksdb/options/options_test.cc +1 -11
  89. package/deps/rocksdb/rocksdb/port/port_posix.h +7 -0
  90. package/deps/rocksdb/rocksdb/port/win/port_win.h +11 -3
  91. package/deps/rocksdb/rocksdb/src.mk +6 -2
  92. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +4 -33
  93. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +3 -3
  94. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +38 -118
  95. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +6 -8
  96. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +10 -13
  97. package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +4 -9
  98. package/deps/rocksdb/rocksdb/table/block_based/block_type.h +0 -1
  99. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -28
  100. package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -3
  101. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -91
  102. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -30
  103. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -27
  104. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +11 -13
  105. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -40
  106. package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +0 -1
  107. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +22 -43
  108. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +11 -22
  109. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +24 -25
  110. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +0 -1
  111. package/deps/rocksdb/rocksdb/table/get_context.h +0 -1
  112. package/deps/rocksdb/rocksdb/table/table_test.cc +3 -18
  113. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +3 -16
  114. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -3
  115. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -1
  116. package/deps/rocksdb/rocksdb/util/bloom_test.cc +0 -201
  117. package/deps/rocksdb/rocksdb/util/distributed_mutex.h +48 -0
  118. package/deps/rocksdb/rocksdb/util/filter_bench.cc +5 -11
  119. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3 -0
  120. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -21
  121. package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
  122. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +45 -0
  123. package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +21 -14
  124. package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +10 -1
  125. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +3 -1
  126. package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +9 -0
  127. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +3 -2
  128. package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -1
  129. package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +5 -4
  130. package/deps/rocksdb/rocksdb.gyp +1 -1
  131. package/index.js +36 -14
  132. package/package-lock.json +23687 -0
  133. package/package.json +1 -1
  134. package/prebuilds/darwin-arm64/node.napi.node +0 -0
  135. package/prebuilds/darwin-x64/node.napi.node +0 -0
  136. package/prebuilds/linux-x64/node.napi.node +0 -0
  137. package/deps/liburing/liburing/README +0 -46
  138. package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
  139. package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
  140. package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
  141. package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
  142. package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
  143. package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
  144. package/deps/liburing/liburing/test/Makefile +0 -312
  145. package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
  146. package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
  147. package/deps/liburing/liburing/test/accept-link.c +0 -251
  148. package/deps/liburing/liburing/test/accept-reuse.c +0 -164
  149. package/deps/liburing/liburing/test/accept-test.c +0 -79
  150. package/deps/liburing/liburing/test/accept.c +0 -476
  151. package/deps/liburing/liburing/test/across-fork.c +0 -283
  152. package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
  153. package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
  154. package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
  155. package/deps/liburing/liburing/test/close-opath.c +0 -122
  156. package/deps/liburing/liburing/test/config +0 -10
  157. package/deps/liburing/liburing/test/connect.c +0 -398
  158. package/deps/liburing/liburing/test/cq-full.c +0 -96
  159. package/deps/liburing/liburing/test/cq-overflow.c +0 -294
  160. package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
  161. package/deps/liburing/liburing/test/cq-ready.c +0 -94
  162. package/deps/liburing/liburing/test/cq-size.c +0 -58
  163. package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
  164. package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
  165. package/deps/liburing/liburing/test/defer.c +0 -307
  166. package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
  167. package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
  168. package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
  169. package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
  170. package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
  171. package/deps/liburing/liburing/test/eventfd.c +0 -112
  172. package/deps/liburing/liburing/test/fadvise.c +0 -202
  173. package/deps/liburing/liburing/test/fallocate.c +0 -249
  174. package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
  175. package/deps/liburing/liburing/test/file-register.c +0 -843
  176. package/deps/liburing/liburing/test/file-update.c +0 -173
  177. package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
  178. package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
  179. package/deps/liburing/liburing/test/fixed-link.c +0 -90
  180. package/deps/liburing/liburing/test/fsync.c +0 -224
  181. package/deps/liburing/liburing/test/hardlink.c +0 -136
  182. package/deps/liburing/liburing/test/helpers.c +0 -135
  183. package/deps/liburing/liburing/test/helpers.h +0 -67
  184. package/deps/liburing/liburing/test/io-cancel.c +0 -537
  185. package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
  186. package/deps/liburing/liburing/test/io_uring_register.c +0 -664
  187. package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
  188. package/deps/liburing/liburing/test/iopoll.c +0 -366
  189. package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
  190. package/deps/liburing/liburing/test/lfs-openat.c +0 -273
  191. package/deps/liburing/liburing/test/link-timeout.c +0 -1107
  192. package/deps/liburing/liburing/test/link.c +0 -496
  193. package/deps/liburing/liburing/test/link_drain.c +0 -229
  194. package/deps/liburing/liburing/test/madvise.c +0 -195
  195. package/deps/liburing/liburing/test/mkdir.c +0 -108
  196. package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
  197. package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
  198. package/deps/liburing/liburing/test/nop.c +0 -115
  199. package/deps/liburing/liburing/test/open-close.c +0 -146
  200. package/deps/liburing/liburing/test/openat2.c +0 -240
  201. package/deps/liburing/liburing/test/personality.c +0 -204
  202. package/deps/liburing/liburing/test/pipe-eof.c +0 -81
  203. package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
  204. package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
  205. package/deps/liburing/liburing/test/poll-cancel.c +0 -135
  206. package/deps/liburing/liburing/test/poll-link.c +0 -227
  207. package/deps/liburing/liburing/test/poll-many.c +0 -208
  208. package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
  209. package/deps/liburing/liburing/test/poll-ring.c +0 -48
  210. package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
  211. package/deps/liburing/liburing/test/poll.c +0 -109
  212. package/deps/liburing/liburing/test/probe.c +0 -137
  213. package/deps/liburing/liburing/test/read-write.c +0 -876
  214. package/deps/liburing/liburing/test/register-restrictions.c +0 -633
  215. package/deps/liburing/liburing/test/rename.c +0 -134
  216. package/deps/liburing/liburing/test/ring-leak.c +0 -173
  217. package/deps/liburing/liburing/test/ring-leak2.c +0 -249
  218. package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
  219. package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
  220. package/deps/liburing/liburing/test/runtests.sh +0 -170
  221. package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
  222. package/deps/liburing/liburing/test/self.c +0 -91
  223. package/deps/liburing/liburing/test/send_recv.c +0 -291
  224. package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
  225. package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
  226. package/deps/liburing/liburing/test/shared-wq.c +0 -84
  227. package/deps/liburing/liburing/test/short-read.c +0 -75
  228. package/deps/liburing/liburing/test/shutdown.c +0 -163
  229. package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
  230. package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
  231. package/deps/liburing/liburing/test/socket-rw.c +0 -147
  232. package/deps/liburing/liburing/test/splice.c +0 -511
  233. package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
  234. package/deps/liburing/liburing/test/sq-full.c +0 -45
  235. package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
  236. package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
  237. package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
  238. package/deps/liburing/liburing/test/sq-space_left.c +0 -159
  239. package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
  240. package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
  241. package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
  242. package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
  243. package/deps/liburing/liburing/test/statx.c +0 -172
  244. package/deps/liburing/liburing/test/stdout.c +0 -232
  245. package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
  246. package/deps/liburing/liburing/test/submit-reuse.c +0 -239
  247. package/deps/liburing/liburing/test/symlink.c +0 -116
  248. package/deps/liburing/liburing/test/teardowns.c +0 -58
  249. package/deps/liburing/liburing/test/thread-exit.c +0 -131
  250. package/deps/liburing/liburing/test/timeout-new.c +0 -246
  251. package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
  252. package/deps/liburing/liburing/test/timeout.c +0 -1354
  253. package/deps/liburing/liburing/test/unlink.c +0 -111
  254. package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
  255. package/deps/rocksdb/rocksdb/README.md +0 -32
  256. package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
  257. package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
  258. package/deps/rocksdb/rocksdb/port/README +0 -10
  259. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +0 -358
  260. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +0 -127
  261. package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +0 -219
  262. package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_tree/lib/README +0 -13
@@ -71,20 +71,27 @@ class PessimisticTransactionDB : public TransactionDB {
71
71
  virtual Status Write(const WriteOptions& opts, WriteBatch* updates) override;
72
72
  inline Status WriteWithConcurrencyControl(const WriteOptions& opts,
73
73
  WriteBatch* updates) {
74
- // Need to lock all keys in this batch to prevent write conflicts with
75
- // concurrent transactions.
76
- Transaction* txn = BeginInternalTransaction(opts);
77
- txn->DisableIndexing();
78
-
79
- auto txn_impl = static_cast_with_check<PessimisticTransaction>(txn);
80
-
81
- // Since commitBatch sorts the keys before locking, concurrent Write()
82
- // operations will not cause a deadlock.
83
- // In order to avoid a deadlock with a concurrent Transaction, Transactions
84
- // should use a lock timeout.
85
- Status s = txn_impl->CommitBatch(updates);
86
-
87
- delete txn;
74
+ Status s;
75
+ if (opts.protection_bytes_per_key > 0) {
76
+ s = WriteBatchInternal::UpdateProtectionInfo(
77
+ updates, opts.protection_bytes_per_key);
78
+ }
79
+ if (s.ok()) {
80
+ // Need to lock all keys in this batch to prevent write conflicts with
81
+ // concurrent transactions.
82
+ Transaction* txn = BeginInternalTransaction(opts);
83
+ txn->DisableIndexing();
84
+
85
+ auto txn_impl = static_cast_with_check<PessimisticTransaction>(txn);
86
+
87
+ // Since commitBatch sorts the keys before locking, concurrent Write()
88
+ // operations will not cause a deadlock.
89
+ // In order to avoid a deadlock with a concurrent Transaction,
90
+ // Transactions should use a lock timeout.
91
+ s = txn_impl->CommitBatch(updates);
92
+
93
+ delete txn;
94
+ }
88
95
 
89
96
  return s;
90
97
  }
@@ -67,8 +67,11 @@ TransactionBaseImpl::TransactionBaseImpl(
67
67
  cmp_(GetColumnFamilyUserComparator(db->DefaultColumnFamily())),
68
68
  lock_tracker_factory_(lock_tracker_factory),
69
69
  start_time_(dbimpl_->GetSystemClock()->NowMicros()),
70
- write_batch_(cmp_, 0, true, 0),
70
+ write_batch_(cmp_, 0, true, 0, write_options.protection_bytes_per_key),
71
71
  tracked_locks_(lock_tracker_factory_.Create()),
72
+ commit_time_batch_(0 /* reserved_bytes */, 0 /* max_bytes */,
73
+ write_options.protection_bytes_per_key,
74
+ 0 /* default_cf_ts_sz */),
72
75
  indexing_enabled_(true) {
73
76
  assert(dynamic_cast<DBImpl*>(db_) != nullptr);
74
77
  log_number_ = 0;
@@ -108,6 +111,12 @@ void TransactionBaseImpl::Reinitialize(DB* db,
108
111
  start_time_ = dbimpl_->GetSystemClock()->NowMicros();
109
112
  indexing_enabled_ = true;
110
113
  cmp_ = GetColumnFamilyUserComparator(db_->DefaultColumnFamily());
114
+ WriteBatchInternal::UpdateProtectionInfo(
115
+ write_batch_.GetWriteBatch(), write_options_.protection_bytes_per_key)
116
+ .PermitUncheckedError();
117
+ WriteBatchInternal::UpdateProtectionInfo(
118
+ &commit_time_batch_, write_options_.protection_bytes_per_key)
119
+ .PermitUncheckedError();
111
120
  }
112
121
 
113
122
  void TransactionBaseImpl::SetSnapshot() {
@@ -267,7 +267,9 @@ Status WritePreparedTxn::RollbackInternal() {
267
267
  assert(db_impl_);
268
268
  assert(wpt_db_);
269
269
 
270
- WriteBatch rollback_batch;
270
+ WriteBatch rollback_batch(0 /* reserved_bytes */, 0 /* max_bytes */,
271
+ write_options_.protection_bytes_per_key,
272
+ 0 /* default_cf_ts_sz */);
271
273
  assert(GetId() != kMaxSequenceNumber);
272
274
  assert(GetId() > 0);
273
275
  auto cf_map_shared_ptr = wpt_db_->GetCFHandleMap();
@@ -166,6 +166,15 @@ Status WritePreparedTxnDB::WriteInternal(const WriteOptions& write_options_orig,
166
166
  // increased for this batch.
167
167
  return Status::OK();
168
168
  }
169
+
170
+ if (write_options_orig.protection_bytes_per_key > 0) {
171
+ auto s = WriteBatchInternal::UpdateProtectionInfo(
172
+ batch, write_options_orig.protection_bytes_per_key);
173
+ if (!s.ok()) {
174
+ return s;
175
+ }
176
+ }
177
+
169
178
  if (batch_cnt == 0) { // not provided, then compute it
170
179
  // TODO(myabandeh): add an option to allow user skipping this cost
171
180
  SubBatchCounter counter(*GetCFComparatorMap());
@@ -464,7 +464,7 @@ Status WriteUnpreparedTxn::FlushWriteBatchWithSavePointToDB() {
464
464
  // only used if the write batch encounters an invalid cf id, and falls back to
465
465
  // this comparator.
466
466
  WriteBatchWithIndex wb(wpt_db_->DefaultColumnFamily()->GetComparator(), 0,
467
- true, 0);
467
+ true, 0, write_options_.protection_bytes_per_key);
468
468
  // Swap with write_batch_ so that wb contains the complete write batch. The
469
469
  // actual write batch that will be flushed to DB will be built in
470
470
  // write_batch_, and will be read by FlushWriteBatchToDBInternal.
@@ -722,7 +722,8 @@ Status WriteUnpreparedTxn::WriteRollbackKeys(
722
722
  Status WriteUnpreparedTxn::RollbackInternal() {
723
723
  // TODO(lth): Reduce duplicate code with WritePrepared rollback logic.
724
724
  WriteBatchWithIndex rollback_batch(
725
- wpt_db_->DefaultColumnFamily()->GetComparator(), 0, true, 0);
725
+ wpt_db_->DefaultColumnFamily()->GetComparator(), 0, true, 0,
726
+ write_options_.protection_bytes_per_key);
726
727
  assert(GetId() != kMaxSequenceNumber);
727
728
  assert(GetId() > 0);
728
729
  Status s;
@@ -59,7 +59,9 @@ Status WriteUnpreparedTxnDB::RollbackRecoveredTransaction(
59
59
  for (auto it = rtxn->batches_.rbegin(); it != rtxn->batches_.rend(); ++it) {
60
60
  auto last_visible_txn = it->first - 1;
61
61
  const auto& batch = it->second.batch_;
62
- WriteBatch rollback_batch;
62
+ WriteBatch rollback_batch(0 /* reserved_bytes */, 0 /* max_bytes */,
63
+ w_options.protection_bytes_per_key,
64
+ 0 /* default_cf_ts_sz */);
63
65
 
64
66
  struct RollbackWriteBatchBuilder : public WriteBatch::Handler {
65
67
  DBImpl* db_;
@@ -25,8 +25,9 @@
25
25
  namespace ROCKSDB_NAMESPACE {
26
26
  struct WriteBatchWithIndex::Rep {
27
27
  explicit Rep(const Comparator* index_comparator, size_t reserved_bytes = 0,
28
- size_t max_bytes = 0, bool _overwrite_key = false)
29
- : write_batch(reserved_bytes, max_bytes, /*protection_bytes_per_key=*/0,
28
+ size_t max_bytes = 0, bool _overwrite_key = false,
29
+ size_t protection_bytes_per_key = 0)
30
+ : write_batch(reserved_bytes, max_bytes, protection_bytes_per_key,
30
31
  index_comparator ? index_comparator->timestamp_size() : 0),
31
32
  comparator(index_comparator, &write_batch),
32
33
  skip_list(comparator, &arena),
@@ -262,9 +263,9 @@ Status WriteBatchWithIndex::Rep::ReBuildIndex() {
262
263
 
263
264
  WriteBatchWithIndex::WriteBatchWithIndex(
264
265
  const Comparator* default_index_comparator, size_t reserved_bytes,
265
- bool overwrite_key, size_t max_bytes)
266
+ bool overwrite_key, size_t max_bytes, size_t protection_bytes_per_key)
266
267
  : rep(new Rep(default_index_comparator, reserved_bytes, max_bytes,
267
- overwrite_key)) {}
268
+ overwrite_key, protection_bytes_per_key)) {}
268
269
 
269
270
  WriteBatchWithIndex::~WriteBatchWithIndex() {}
270
271
 
@@ -182,6 +182,7 @@
182
182
  "rocksdb/db/blob/blob_log_format.cc",
183
183
  "rocksdb/db/blob/blob_log_sequential_reader.cc",
184
184
  "rocksdb/db/blob/blob_log_writer.cc",
185
+ "rocksdb/db/blob/blob_source.cc",
185
186
  "rocksdb/db/blob/prefetch_buffer_collection.cc",
186
187
  "rocksdb/db/builder.cc",
187
188
  "rocksdb/db/c.cc",
@@ -306,7 +307,6 @@
306
307
  "rocksdb/table/adaptive/adaptive_table_factory.cc",
307
308
  "rocksdb/table/block_based/binary_search_index_reader.cc",
308
309
  "rocksdb/table/block_based/block.cc",
309
- "rocksdb/table/block_based/block_based_filter_block.cc",
310
310
  "rocksdb/table/block_based/block_based_table_builder.cc",
311
311
  "rocksdb/table/block_based/block_based_table_factory.cc",
312
312
  "rocksdb/table/block_based/block_based_table_iterator.cc",
package/index.js CHANGED
@@ -75,7 +75,12 @@ class RocksLevel extends AbstractLevel {
75
75
  }
76
76
 
77
77
  _put (key, value, options, callback) {
78
- process.nextTick(callback, binding.db_put(this[kContext], key, value, options))
78
+ try {
79
+ binding.db_put(this[kContext], key, value, options)
80
+ process.nextTick(callback, null)
81
+ } catch (err) {
82
+ process.nextTick(callback, err)
83
+ }
79
84
  }
80
85
 
81
86
  _get (key, options, callback) {
@@ -87,11 +92,21 @@ class RocksLevel extends AbstractLevel {
87
92
  }
88
93
 
89
94
  _del (key, options, callback) {
90
- process.nextTick(callback, binding.db_del(this[kContext], key, options))
95
+ try {
96
+ binding.db_del(this[kContext], key, options)
97
+ process.nextTick(callback, null)
98
+ } catch (err) {
99
+ process.nextTick(callback, err)
100
+ }
91
101
  }
92
102
 
93
103
  _clear (options, callback) {
94
- process.nextTick(callback, binding.db_clear(this[kContext], options))
104
+ try {
105
+ binding.db_clear(this[kContext], options)
106
+ process.nextTick(callback, null)
107
+ } catch (err) {
108
+ process.nextTick(callback, err)
109
+ }
95
110
  }
96
111
 
97
112
  _chainedBatch () {
@@ -99,7 +114,12 @@ class RocksLevel extends AbstractLevel {
99
114
  }
100
115
 
101
116
  _batch (operations, options, callback) {
102
- process.nextTick(callback, binding.batch_do(this[kContext], operations, options))
117
+ try {
118
+ binding.batch_do(this[kContext], operations, options)
119
+ process.nextTick(callback, null)
120
+ } catch (err) {
121
+ process.nextTick(callback, err)
122
+ }
103
123
  }
104
124
 
105
125
  _iterator (options) {
@@ -128,10 +148,7 @@ class RocksLevel extends AbstractLevel {
128
148
  })
129
149
  }
130
150
 
131
- const context = binding.iterator_init(this[kContext], {
132
- highWaterMarkBytes: 1024 * 1024 * 1024, // TODO (fix): Replace with -1.
133
- ...options
134
- })
151
+ const context = binding.iterator_init(this[kContext], options)
135
152
  const resource = {
136
153
  callback: null,
137
154
  close (callback) {
@@ -141,12 +158,17 @@ class RocksLevel extends AbstractLevel {
141
158
 
142
159
  try {
143
160
  this.attachResource(resource)
144
- return await new Promise((resolve, reject) => binding.iterator_nextv(context, options.limit || 1000, (err, rows, finished) => {
161
+
162
+ const limit = options.limit ?? 1000
163
+ return await new Promise((resolve, reject) => binding.iterator_nextv(context, limit, (err, rows, finished) => {
145
164
  if (err) {
146
165
  reject(err)
147
166
  } else {
148
- const sequence = binding.iterator_get_sequence(context)
149
- resolve({ rows, sequence, finished })
167
+ resolve({
168
+ rows,
169
+ sequence: binding.iterator_get_sequence(context),
170
+ finished
171
+ })
150
172
  }
151
173
  }))
152
174
  } finally {
@@ -222,11 +244,11 @@ class RocksLevel extends AbstractLevel {
222
244
  const updates = new Updates(this, options)
223
245
  try {
224
246
  while (true) {
225
- const { rows, sequence } = await updates.next()
226
- if (!rows) {
247
+ const entry = await updates.next()
248
+ if (!entry.rows) {
227
249
  return
228
250
  }
229
- yield { rows, sequence }
251
+ yield entry
230
252
  }
231
253
  } finally {
232
254
  await updates.close()