@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.
- package/binding.cc +363 -329
- package/chained-batch.js +6 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +8 -3
- package/deps/rocksdb/rocksdb/Makefile +10 -4
- package/deps/rocksdb/rocksdb/TARGETS +6 -4
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +9 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +14 -0
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +8 -8
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +272 -174
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +201 -57
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +19 -19
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +2 -1
- package/deps/rocksdb/rocksdb/cmake/modules/CxxFlags.cmake +7 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindJeMalloc.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindNUMA.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindSnappy.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/FindTBB.cmake +33 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findgflags.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findlz4.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Finduring.cmake +26 -0
- package/deps/rocksdb/rocksdb/cmake/modules/Findzstd.cmake +29 -0
- package/deps/rocksdb/rocksdb/cmake/modules/ReadVersion.cmake +10 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +170 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +95 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +298 -0
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +172 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +8 -3
- package/deps/rocksdb/rocksdb/db/column_family.h +6 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +10 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +6 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +22 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +38 -0
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +17 -5
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +4 -7
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +74 -71
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +70 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +13 -12
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +36 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +11 -4
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +139 -91
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +48 -14
- package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +90 -55
- package/deps/rocksdb/rocksdb/db/db_rate_limiter_test.cc +9 -4
- package/deps/rocksdb/rocksdb/db/db_test.cc +3 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +12 -7
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/dbformat.cc +3 -1
- package/deps/rocksdb/rocksdb/db/dbformat.h +5 -3
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/memtable.cc +1 -0
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/repair.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +43 -1
- package/deps/rocksdb/rocksdb/db/version_edit.cc +13 -5
- package/deps/rocksdb/rocksdb/db/version_edit.h +22 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +4 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +109 -41
- package/deps/rocksdb/rocksdb/db/version_set.h +36 -3
- package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +1 -4
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +10 -10
- package/deps/rocksdb/rocksdb/db/version_util.h +1 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/write_batch.cc +34 -10
- package/deps/rocksdb/rocksdb/db/write_batch_internal.h +2 -0
- package/deps/rocksdb/rocksdb/db/write_callback_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +4 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +7 -5
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +5 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -7
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +24 -3
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +8 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +10 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +4 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +9 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +1 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/write_batch_with_index.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +0 -3
- package/deps/rocksdb/rocksdb/microbench/ribbon_bench.cc +8 -6
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +3 -1
- package/deps/rocksdb/rocksdb/options/options_helper.cc +4 -2
- package/deps/rocksdb/rocksdb/options/options_test.cc +1 -11
- package/deps/rocksdb/rocksdb/port/port_posix.h +7 -0
- package/deps/rocksdb/rocksdb/port/win/port_win.h +11 -3
- package/deps/rocksdb/rocksdb/src.mk +6 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +4 -33
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +38 -118
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +6 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +10 -13
- package/deps/rocksdb/rocksdb/table/block_based/block_like_traits.h +4 -9
- package/deps/rocksdb/rocksdb/table/block_based/block_type.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +10 -28
- package/deps/rocksdb/rocksdb/table/block_based/filter_block_reader_common.cc +2 -3
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +0 -91
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +2 -30
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +6 -27
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +11 -13
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +28 -40
- package/deps/rocksdb/rocksdb/table/block_based/mock_block_based_table.h +0 -1
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +22 -43
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +11 -22
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +24 -25
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +0 -1
- package/deps/rocksdb/rocksdb/table/get_context.h +0 -1
- package/deps/rocksdb/rocksdb/table/table_test.cc +3 -18
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +3 -16
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +3 -3
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +1 -1
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +0 -201
- package/deps/rocksdb/rocksdb/util/distributed_mutex.h +48 -0
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +5 -11
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +7 -21
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +45 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction_db.h +21 -14
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.cc +10 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_txn_db.cc +9 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn.cc +3 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_txn_db.cc +3 -1
- package/deps/rocksdb/rocksdb/utilities/write_batch_with_index/write_batch_with_index.cc +5 -4
- package/deps/rocksdb/rocksdb.gyp +1 -1
- package/index.js +36 -14
- package/package-lock.json +23687 -0
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/darwin-x64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/liburing/liburing/README +0 -46
- package/deps/liburing/liburing/test/232c93d07b74-test.c +0 -305
- package/deps/liburing/liburing/test/35fa71a030ca-test.c +0 -329
- package/deps/liburing/liburing/test/500f9fbadef8-test.c +0 -89
- package/deps/liburing/liburing/test/7ad0e4b2f83c-test.c +0 -93
- package/deps/liburing/liburing/test/8a9973408177-test.c +0 -106
- package/deps/liburing/liburing/test/917257daa0fe-test.c +0 -53
- package/deps/liburing/liburing/test/Makefile +0 -312
- package/deps/liburing/liburing/test/a0908ae19763-test.c +0 -58
- package/deps/liburing/liburing/test/a4c0b3decb33-test.c +0 -180
- package/deps/liburing/liburing/test/accept-link.c +0 -251
- package/deps/liburing/liburing/test/accept-reuse.c +0 -164
- package/deps/liburing/liburing/test/accept-test.c +0 -79
- package/deps/liburing/liburing/test/accept.c +0 -476
- package/deps/liburing/liburing/test/across-fork.c +0 -283
- package/deps/liburing/liburing/test/b19062a56726-test.c +0 -53
- package/deps/liburing/liburing/test/b5837bd5311d-test.c +0 -77
- package/deps/liburing/liburing/test/ce593a6c480a-test.c +0 -135
- package/deps/liburing/liburing/test/close-opath.c +0 -122
- package/deps/liburing/liburing/test/config +0 -10
- package/deps/liburing/liburing/test/connect.c +0 -398
- package/deps/liburing/liburing/test/cq-full.c +0 -96
- package/deps/liburing/liburing/test/cq-overflow.c +0 -294
- package/deps/liburing/liburing/test/cq-peek-batch.c +0 -102
- package/deps/liburing/liburing/test/cq-ready.c +0 -94
- package/deps/liburing/liburing/test/cq-size.c +0 -58
- package/deps/liburing/liburing/test/d4ae271dfaae-test.c +0 -96
- package/deps/liburing/liburing/test/d77a67ed5f27-test.c +0 -65
- package/deps/liburing/liburing/test/defer.c +0 -307
- package/deps/liburing/liburing/test/double-poll-crash.c +0 -186
- package/deps/liburing/liburing/test/eeed8b54e0df-test.c +0 -114
- package/deps/liburing/liburing/test/empty-eownerdead.c +0 -42
- package/deps/liburing/liburing/test/eventfd-disable.c +0 -151
- package/deps/liburing/liburing/test/eventfd-ring.c +0 -97
- package/deps/liburing/liburing/test/eventfd.c +0 -112
- package/deps/liburing/liburing/test/fadvise.c +0 -202
- package/deps/liburing/liburing/test/fallocate.c +0 -249
- package/deps/liburing/liburing/test/fc2a85cb02ef-test.c +0 -138
- package/deps/liburing/liburing/test/file-register.c +0 -843
- package/deps/liburing/liburing/test/file-update.c +0 -173
- package/deps/liburing/liburing/test/files-exit-hang-poll.c +0 -128
- package/deps/liburing/liburing/test/files-exit-hang-timeout.c +0 -134
- package/deps/liburing/liburing/test/fixed-link.c +0 -90
- package/deps/liburing/liburing/test/fsync.c +0 -224
- package/deps/liburing/liburing/test/hardlink.c +0 -136
- package/deps/liburing/liburing/test/helpers.c +0 -135
- package/deps/liburing/liburing/test/helpers.h +0 -67
- package/deps/liburing/liburing/test/io-cancel.c +0 -537
- package/deps/liburing/liburing/test/io_uring_enter.c +0 -296
- package/deps/liburing/liburing/test/io_uring_register.c +0 -664
- package/deps/liburing/liburing/test/io_uring_setup.c +0 -192
- package/deps/liburing/liburing/test/iopoll.c +0 -366
- package/deps/liburing/liburing/test/lfs-openat-write.c +0 -117
- package/deps/liburing/liburing/test/lfs-openat.c +0 -273
- package/deps/liburing/liburing/test/link-timeout.c +0 -1107
- package/deps/liburing/liburing/test/link.c +0 -496
- package/deps/liburing/liburing/test/link_drain.c +0 -229
- package/deps/liburing/liburing/test/madvise.c +0 -195
- package/deps/liburing/liburing/test/mkdir.c +0 -108
- package/deps/liburing/liburing/test/multicqes_drain.c +0 -383
- package/deps/liburing/liburing/test/nop-all-sizes.c +0 -107
- package/deps/liburing/liburing/test/nop.c +0 -115
- package/deps/liburing/liburing/test/open-close.c +0 -146
- package/deps/liburing/liburing/test/openat2.c +0 -240
- package/deps/liburing/liburing/test/personality.c +0 -204
- package/deps/liburing/liburing/test/pipe-eof.c +0 -81
- package/deps/liburing/liburing/test/pipe-reuse.c +0 -105
- package/deps/liburing/liburing/test/poll-cancel-ton.c +0 -139
- package/deps/liburing/liburing/test/poll-cancel.c +0 -135
- package/deps/liburing/liburing/test/poll-link.c +0 -227
- package/deps/liburing/liburing/test/poll-many.c +0 -208
- package/deps/liburing/liburing/test/poll-mshot-update.c +0 -273
- package/deps/liburing/liburing/test/poll-ring.c +0 -48
- package/deps/liburing/liburing/test/poll-v-poll.c +0 -353
- package/deps/liburing/liburing/test/poll.c +0 -109
- package/deps/liburing/liburing/test/probe.c +0 -137
- package/deps/liburing/liburing/test/read-write.c +0 -876
- package/deps/liburing/liburing/test/register-restrictions.c +0 -633
- package/deps/liburing/liburing/test/rename.c +0 -134
- package/deps/liburing/liburing/test/ring-leak.c +0 -173
- package/deps/liburing/liburing/test/ring-leak2.c +0 -249
- package/deps/liburing/liburing/test/rsrc_tags.c +0 -449
- package/deps/liburing/liburing/test/runtests-loop.sh +0 -16
- package/deps/liburing/liburing/test/runtests.sh +0 -170
- package/deps/liburing/liburing/test/rw_merge_test.c +0 -97
- package/deps/liburing/liburing/test/self.c +0 -91
- package/deps/liburing/liburing/test/send_recv.c +0 -291
- package/deps/liburing/liburing/test/send_recvmsg.c +0 -345
- package/deps/liburing/liburing/test/sendmsg_fs_cve.c +0 -198
- package/deps/liburing/liburing/test/shared-wq.c +0 -84
- package/deps/liburing/liburing/test/short-read.c +0 -75
- package/deps/liburing/liburing/test/shutdown.c +0 -163
- package/deps/liburing/liburing/test/sigfd-deadlock.c +0 -74
- package/deps/liburing/liburing/test/socket-rw-eagain.c +0 -156
- package/deps/liburing/liburing/test/socket-rw.c +0 -147
- package/deps/liburing/liburing/test/splice.c +0 -511
- package/deps/liburing/liburing/test/sq-full-cpp.cc +0 -45
- package/deps/liburing/liburing/test/sq-full.c +0 -45
- package/deps/liburing/liburing/test/sq-poll-dup.c +0 -200
- package/deps/liburing/liburing/test/sq-poll-kthread.c +0 -168
- package/deps/liburing/liburing/test/sq-poll-share.c +0 -137
- package/deps/liburing/liburing/test/sq-space_left.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-cancel-hang.c +0 -159
- package/deps/liburing/liburing/test/sqpoll-disable-exit.c +0 -195
- package/deps/liburing/liburing/test/sqpoll-exit-hang.c +0 -77
- package/deps/liburing/liburing/test/sqpoll-sleep.c +0 -68
- package/deps/liburing/liburing/test/statx.c +0 -172
- package/deps/liburing/liburing/test/stdout.c +0 -232
- package/deps/liburing/liburing/test/submit-link-fail.c +0 -154
- package/deps/liburing/liburing/test/submit-reuse.c +0 -239
- package/deps/liburing/liburing/test/symlink.c +0 -116
- package/deps/liburing/liburing/test/teardowns.c +0 -58
- package/deps/liburing/liburing/test/thread-exit.c +0 -131
- package/deps/liburing/liburing/test/timeout-new.c +0 -246
- package/deps/liburing/liburing/test/timeout-overflow.c +0 -204
- package/deps/liburing/liburing/test/timeout.c +0 -1354
- package/deps/liburing/liburing/test/unlink.c +0 -111
- package/deps/liburing/liburing/test/wakeup-hang.c +0 -162
- package/deps/rocksdb/rocksdb/README.md +0 -32
- package/deps/rocksdb/rocksdb/microbench/README.md +0 -60
- package/deps/rocksdb/rocksdb/plugin/README.md +0 -43
- package/deps/rocksdb/rocksdb/port/README +0 -10
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.cc +0 -358
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block.h +0 -127
- package/deps/rocksdb/rocksdb/table/block_based/block_based_filter_block_test.cc +0 -219
- 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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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
|
|
package/deps/rocksdb/rocksdb.gyp
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
149
|
-
|
|
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
|
|
226
|
-
if (!rows) {
|
|
247
|
+
const entry = await updates.next()
|
|
248
|
+
if (!entry.rows) {
|
|
227
249
|
return
|
|
228
250
|
}
|
|
229
|
-
yield
|
|
251
|
+
yield entry
|
|
230
252
|
}
|
|
231
253
|
} finally {
|
|
232
254
|
await updates.close()
|