@nxtedition/rocksdb 13.5.13 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +33 -2
- package/binding.gyp +2 -2
- package/chained-batch.js +9 -16
- package/deps/rocksdb/rocksdb/BUCK +18 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +20 -9
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +90 -13
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +88 -75
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +44 -36
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +184 -148
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +5 -11
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +116 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +3 -6
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -2
- package/deps/rocksdb/rocksdb/db/c.cc +207 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +72 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +3 -2
- package/deps/rocksdb/rocksdb/db/column_family.h +5 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +51 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +29 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +5 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +566 -366
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +131 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +13 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +12 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +97 -76
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +448 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +22 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +4 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +104 -0
- package/deps/rocksdb/rocksdb/db/db_iter.h +4 -11
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +331 -58
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +25 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -24
- package/deps/rocksdb/rocksdb/db/db_test_util.h +29 -14
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +69 -36
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +8 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +275 -79
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +23 -5
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +591 -175
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +84 -35
- package/deps/rocksdb/rocksdb/db/memtable.h +39 -34
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/multi_scan.cc +11 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +34 -14
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +28 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +159 -14
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +60 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +16 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +75 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +50 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +57 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +266 -35
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +18 -2
- package/deps/rocksdb/rocksdb/env/env.cc +12 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +2 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +9 -5
- package/deps/rocksdb/rocksdb/env/io_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +33 -31
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +42 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +93 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +43 -49
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +4 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +8 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +487 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +11 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +135 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +12 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +19 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +219 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/point_lock_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +16 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +45 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +77 -51
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +10 -13
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +16 -7
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +9 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
- package/deps/rocksdb/rocksdb/options/options.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +9 -8
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +9 -5
- package/deps/rocksdb/rocksdb/port/mmap.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -0
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +4 -0
- package/deps/rocksdb/rocksdb/src.mk +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1125 -765
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +35 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +29 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +732 -256
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +225 -16
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -26
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +2 -75
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +433 -141
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +17 -10
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy_impl.h +20 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +112 -85
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +191 -36
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +108 -31
- package/deps/rocksdb/rocksdb/table/external_table.cc +7 -3
- package/deps/rocksdb/rocksdb/table/format.cc +6 -12
- package/deps/rocksdb/rocksdb/table/format.h +10 -0
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +118 -46
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +9 -8
- package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +16 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +1540 -155
- package/deps/rocksdb/rocksdb/test_util/testutil.h +21 -5
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -5
- package/deps/rocksdb/rocksdb/tools/ldb.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +2 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +133 -165
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +173 -64
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +69 -0
- package/deps/rocksdb/rocksdb/util/atomic.h +6 -0
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +29 -20
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +10 -6
- package/deps/rocksdb/rocksdb/util/bit_fields.h +338 -0
- package/deps/rocksdb/rocksdb/util/coding.h +3 -3
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +777 -82
- package/deps/rocksdb/rocksdb/util/compression.h +5 -0
- package/deps/rocksdb/rocksdb/util/compression_test.cc +5 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +2 -2
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +15 -14
- package/deps/rocksdb/rocksdb/util/interval_test.cc +102 -0
- package/deps/rocksdb/rocksdb/util/semaphore.h +164 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +10 -6
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -2
- package/deps/rocksdb/rocksdb/util/slice_test.cc +136 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -16
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +35 -14
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/any_lock_manager_test.h +244 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench.cc +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench_tool.cc +159 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +1244 -161
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +66 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_stress_test.cc +103 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +1275 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +40 -262
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test_common.h +78 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_validation_test_runner.h +469 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +9 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +72 -44
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +92 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +6 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +143 -112
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +23 -16
- package/index.js +3 -3
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +38 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.cc +0 -17
package/binding.cc
CHANGED
|
@@ -1797,6 +1797,36 @@ NAPI_METHOD(batch_clear) {
|
|
|
1797
1797
|
}
|
|
1798
1798
|
|
|
1799
1799
|
NAPI_METHOD(batch_write) {
|
|
1800
|
+
NAPI_ARGV(4);
|
|
1801
|
+
|
|
1802
|
+
Database* database;
|
|
1803
|
+
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
1804
|
+
|
|
1805
|
+
rocksdb::WriteBatch* batch;
|
|
1806
|
+
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[1], reinterpret_cast<void**>(&batch)));
|
|
1807
|
+
|
|
1808
|
+
bool sync = false;
|
|
1809
|
+
NAPI_STATUS_THROWS(GetProperty(env, argv[2], "sync", sync));
|
|
1810
|
+
|
|
1811
|
+
bool lowPriority = false;
|
|
1812
|
+
NAPI_STATUS_THROWS(GetProperty(env, argv[2], "lowPriority", lowPriority));
|
|
1813
|
+
|
|
1814
|
+
auto callback = argv[3];
|
|
1815
|
+
|
|
1816
|
+
runAsync<std::nullptr_t>(
|
|
1817
|
+
"leveldown.batch_write", env, callback,
|
|
1818
|
+
[=](auto& state) {
|
|
1819
|
+
rocksdb::WriteOptions writeOptions;
|
|
1820
|
+
writeOptions.sync = sync;
|
|
1821
|
+
writeOptions.low_pri = lowPriority;
|
|
1822
|
+
return database->db->Write(writeOptions, batch);
|
|
1823
|
+
},
|
|
1824
|
+
[](auto& state, auto env, auto& argv) { return napi_ok; });
|
|
1825
|
+
|
|
1826
|
+
return 0;
|
|
1827
|
+
}
|
|
1828
|
+
|
|
1829
|
+
NAPI_METHOD(batch_write_sync) {
|
|
1800
1830
|
NAPI_ARGV(3);
|
|
1801
1831
|
|
|
1802
1832
|
Database* database;
|
|
@@ -2224,6 +2254,8 @@ NAPI_INIT() {
|
|
|
2224
2254
|
NAPI_EXPORT_FUNCTION(db_get_property);
|
|
2225
2255
|
NAPI_EXPORT_FUNCTION(db_get_latest_sequence);
|
|
2226
2256
|
NAPI_EXPORT_FUNCTION(db_query);
|
|
2257
|
+
NAPI_EXPORT_FUNCTION(db_open_for_read_only);
|
|
2258
|
+
NAPI_EXPORT_FUNCTION(db_compact_range);
|
|
2227
2259
|
|
|
2228
2260
|
NAPI_EXPORT_FUNCTION(iterator_init);
|
|
2229
2261
|
NAPI_EXPORT_FUNCTION(iterator_seek);
|
|
@@ -2241,9 +2273,8 @@ NAPI_INIT() {
|
|
|
2241
2273
|
NAPI_EXPORT_FUNCTION(batch_del);
|
|
2242
2274
|
NAPI_EXPORT_FUNCTION(batch_clear);
|
|
2243
2275
|
NAPI_EXPORT_FUNCTION(batch_write);
|
|
2276
|
+
NAPI_EXPORT_FUNCTION(batch_write_sync);
|
|
2244
2277
|
NAPI_EXPORT_FUNCTION(batch_merge);
|
|
2245
2278
|
NAPI_EXPORT_FUNCTION(batch_count);
|
|
2246
2279
|
NAPI_EXPORT_FUNCTION(batch_iterate);
|
|
2247
|
-
NAPI_EXPORT_FUNCTION(db_open_for_read_only);
|
|
2248
|
-
NAPI_EXPORT_FUNCTION(db_compact_range);
|
|
2249
2280
|
}
|
package/binding.gyp
CHANGED
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
"/usr/lib/x86_64-linux-gnu/include",
|
|
17
17
|
"/usr/lib/include",
|
|
18
18
|
],
|
|
19
|
-
"cflags": ["-march=
|
|
20
|
-
"ccflags": ["-flto", '-march=
|
|
19
|
+
"cflags": ["-march=znver3", "-mtune=znver3"],
|
|
20
|
+
"ccflags": ["-flto", '-std=c++20', "-march=znver3", "-mtune=znver3"],
|
|
21
21
|
"cflags!": ["-fno-exceptions"],
|
|
22
22
|
"cflags_cc!": ["-fno-exceptions"],
|
|
23
23
|
"ldflags": ["-flto", "-fuse-linker-plugin"],
|
package/chained-batch.js
CHANGED
|
@@ -3,13 +3,10 @@
|
|
|
3
3
|
const { AbstractChainedBatch } = require('abstract-level')
|
|
4
4
|
const binding = require('./binding')
|
|
5
5
|
const ModuleError = require('module-error')
|
|
6
|
-
const { fromCallback } = require('catering')
|
|
7
6
|
const assert = require('node:assert')
|
|
8
7
|
|
|
9
8
|
const kBatchContext = Symbol('batchContext')
|
|
10
9
|
const kDbContext = Symbol('dbContext')
|
|
11
|
-
const kPromise = Symbol('promise')
|
|
12
|
-
|
|
13
10
|
const EMPTY = {}
|
|
14
11
|
|
|
15
12
|
class ChainedBatch extends AbstractChainedBatch {
|
|
@@ -78,28 +75,24 @@ class ChainedBatch extends AbstractChainedBatch {
|
|
|
78
75
|
_write (options, callback) {
|
|
79
76
|
assert(this[kBatchContext])
|
|
80
77
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
try {
|
|
84
|
-
this._writeSync(options)
|
|
85
|
-
process.nextTick(callback, null)
|
|
86
|
-
} catch (err) {
|
|
87
|
-
process.nextTick(callback, err)
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
return callback[kPromise]
|
|
78
|
+
binding.batch_write(this[kDbContext], this[kBatchContext], options ?? EMPTY, callback)
|
|
91
79
|
}
|
|
92
80
|
|
|
93
81
|
_writeSync (options) {
|
|
94
82
|
assert(this[kBatchContext])
|
|
95
83
|
|
|
96
|
-
binding.
|
|
84
|
+
binding.batch_write_sync(this[kDbContext], this[kBatchContext], options ?? EMPTY)
|
|
97
85
|
}
|
|
98
86
|
|
|
99
87
|
_close (callback) {
|
|
100
|
-
this
|
|
88
|
+
assert(this[kBatchContext])
|
|
101
89
|
|
|
102
|
-
|
|
90
|
+
try {
|
|
91
|
+
this._closeSync()
|
|
92
|
+
process.nextTick(callback, null)
|
|
93
|
+
} catch (err) {
|
|
94
|
+
process.nextTick(callback, err)
|
|
95
|
+
}
|
|
103
96
|
}
|
|
104
97
|
|
|
105
98
|
_closeSync () {
|
|
@@ -114,6 +114,7 @@ cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
|
114
114
|
"db/write_controller.cc",
|
|
115
115
|
"db/write_stall_stats.cc",
|
|
116
116
|
"db/write_thread.cc",
|
|
117
|
+
"db_stress_tool/db_stress_compression_manager.cc",
|
|
117
118
|
"env/composite_env.cc",
|
|
118
119
|
"env/env.cc",
|
|
119
120
|
"env/env_chroot.cc",
|
|
@@ -418,16 +419,18 @@ cpp_library_wrapper(name="rocksdb_tools_lib", srcs=[
|
|
|
418
419
|
|
|
419
420
|
cpp_library_wrapper(name="rocksdb_cache_bench_tools_lib", srcs=["cache/cache_bench_tool.cc"], deps=[":rocksdb_lib"], headers=[], link_whole=False, extra_test_libs=False)
|
|
420
421
|
|
|
422
|
+
cpp_library_wrapper(name="rocksdb_point_lock_bench_tools_lib", srcs=["utilities/transactions/lock/point/point_lock_bench_tool.cc"], deps=[":rocksdb_lib"], headers=[], link_whole=False, extra_test_libs=False)
|
|
423
|
+
|
|
421
424
|
rocks_cpp_library_wrapper(name="rocksdb_stress_lib", srcs=[
|
|
422
425
|
"db_stress_tool/batched_ops_stress.cc",
|
|
423
426
|
"db_stress_tool/cf_consistency_stress.cc",
|
|
424
427
|
"db_stress_tool/db_stress_common.cc",
|
|
428
|
+
"db_stress_tool/db_stress_compression_manager.cc",
|
|
425
429
|
"db_stress_tool/db_stress_driver.cc",
|
|
426
430
|
"db_stress_tool/db_stress_filters.cc",
|
|
427
431
|
"db_stress_tool/db_stress_gflags.cc",
|
|
428
432
|
"db_stress_tool/db_stress_listener.cc",
|
|
429
433
|
"db_stress_tool/db_stress_shared_state.cc",
|
|
430
|
-
"db_stress_tool/db_stress_stat.cc",
|
|
431
434
|
"db_stress_tool/db_stress_test_base.cc",
|
|
432
435
|
"db_stress_tool/db_stress_tool.cc",
|
|
433
436
|
"db_stress_tool/db_stress_wide_merge_operator.cc",
|
|
@@ -449,6 +452,8 @@ cpp_binary_wrapper(name="db_bench", srcs=["tools/db_bench.cc"], deps=[":rocksdb_
|
|
|
449
452
|
|
|
450
453
|
cpp_binary_wrapper(name="cache_bench", srcs=["cache/cache_bench.cc"], deps=[":rocksdb_cache_bench_tools_lib"], extra_preprocessor_flags=[], extra_bench_libs=False)
|
|
451
454
|
|
|
455
|
+
cpp_binary_wrapper(name="point_lock_bench", srcs=["utilities/transactions/lock/point/point_lock_bench.cc"], deps=[":rocksdb_point_lock_bench_tools_lib"], extra_preprocessor_flags=[], extra_bench_libs=False)
|
|
456
|
+
|
|
452
457
|
cpp_binary_wrapper(name="ribbon_bench", srcs=["microbench/ribbon_bench.cc"], deps=[], extra_preprocessor_flags=[], extra_bench_libs=True)
|
|
453
458
|
|
|
454
459
|
cpp_binary_wrapper(name="db_basic_bench", srcs=["microbench/db_basic_bench.cc"], deps=[], extra_preprocessor_flags=[], extra_bench_libs=True)
|
|
@@ -5194,6 +5199,12 @@ cpp_unittest_wrapper(name="inlineskiplist_test",
|
|
|
5194
5199
|
extra_compiler_flags=[])
|
|
5195
5200
|
|
|
5196
5201
|
|
|
5202
|
+
cpp_unittest_wrapper(name="interval_test",
|
|
5203
|
+
srcs=["util/interval_test.cc"],
|
|
5204
|
+
deps=[":rocksdb_test_lib"],
|
|
5205
|
+
extra_compiler_flags=[])
|
|
5206
|
+
|
|
5207
|
+
|
|
5197
5208
|
cpp_unittest_wrapper(name="io_posix_test",
|
|
5198
5209
|
srcs=["env/io_posix_test.cc"],
|
|
5199
5210
|
deps=[":rocksdb_test_lib"],
|
|
@@ -5374,6 +5385,12 @@ cpp_unittest_wrapper(name="plain_table_db_test",
|
|
|
5374
5385
|
extra_compiler_flags=[])
|
|
5375
5386
|
|
|
5376
5387
|
|
|
5388
|
+
cpp_unittest_wrapper(name="point_lock_manager_stress_test",
|
|
5389
|
+
srcs=["utilities/transactions/lock/point/point_lock_manager_stress_test.cc"],
|
|
5390
|
+
deps=[":rocksdb_test_lib"],
|
|
5391
|
+
extra_compiler_flags=[])
|
|
5392
|
+
|
|
5393
|
+
|
|
5377
5394
|
cpp_unittest_wrapper(name="point_lock_manager_test",
|
|
5378
5395
|
srcs=["utilities/transactions/lock/point/point_lock_manager_test.cc"],
|
|
5379
5396
|
deps=[":rocksdb_test_lib"],
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
#
|
|
28
28
|
# Linux:
|
|
29
29
|
#
|
|
30
|
-
# 1. Install a recent toolchain if you're on a older distro. C++
|
|
30
|
+
# 1. Install a recent toolchain if you're on a older distro. C++20 required (GCC >= 11, Clang >= 10)
|
|
31
31
|
# 2. mkdir build; cd build
|
|
32
32
|
# 3. cmake ..
|
|
33
33
|
# 4. make -j
|
|
@@ -100,7 +100,7 @@ endif()
|
|
|
100
100
|
option(ROCKSDB_BUILD_SHARED "Build shared versions of the RocksDB libraries" ON)
|
|
101
101
|
|
|
102
102
|
if( NOT DEFINED CMAKE_CXX_STANDARD )
|
|
103
|
-
set(CMAKE_CXX_STANDARD
|
|
103
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
104
104
|
endif()
|
|
105
105
|
|
|
106
106
|
include(CMakeDependentOption)
|
|
@@ -314,7 +314,6 @@ endif()
|
|
|
314
314
|
|
|
315
315
|
# Check if -latomic is required or not
|
|
316
316
|
if (NOT MSVC)
|
|
317
|
-
set(CMAKE_REQUIRED_FLAGS "--std=c++17")
|
|
318
317
|
CHECK_CXX_SOURCE_COMPILES("
|
|
319
318
|
#include <atomic>
|
|
320
319
|
std::atomic<uint64_t> x(0);
|
|
@@ -747,6 +746,7 @@ set(SOURCES
|
|
|
747
746
|
db/write_controller.cc
|
|
748
747
|
db/write_stall_stats.cc
|
|
749
748
|
db/write_thread.cc
|
|
749
|
+
db_stress_tool/db_stress_compression_manager.cc
|
|
750
750
|
env/composite_env.cc
|
|
751
751
|
env/env.cc
|
|
752
752
|
env/env_chroot.cc
|
|
@@ -1503,6 +1503,7 @@ if(WITH_TESTS)
|
|
|
1503
1503
|
utilities/transactions/optimistic_transaction_test.cc
|
|
1504
1504
|
utilities/transactions/transaction_test.cc
|
|
1505
1505
|
utilities/transactions/lock/point/point_lock_manager_test.cc
|
|
1506
|
+
utilities/transactions/lock/point/point_lock_manager_stress_test.cc
|
|
1506
1507
|
utilities/transactions/write_committed_transaction_ts_test.cc
|
|
1507
1508
|
utilities/transactions/write_prepared_transaction_test.cc
|
|
1508
1509
|
utilities/transactions/write_unprepared_transaction_test.cc
|
|
@@ -1613,6 +1614,12 @@ if(WITH_BENCHMARK_TOOLS)
|
|
|
1613
1614
|
utilities/persistent_cache/hash_table_bench.cc)
|
|
1614
1615
|
target_link_libraries(hash_table_bench${ARTIFACT_SUFFIX}
|
|
1615
1616
|
${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
|
|
1617
|
+
|
|
1618
|
+
add_executable(point_lock_bench${ARTIFACT_SUFFIX}
|
|
1619
|
+
utilities/transactions/lock/point/point_lock_bench.cc
|
|
1620
|
+
utilities/transactions/lock/point/point_lock_bench_tool.cc)
|
|
1621
|
+
target_link_libraries(point_lock_bench${ARTIFACT_SUFFIX}
|
|
1622
|
+
${ROCKSDB_LIB} ${GFLAGS_LIB} ${FOLLY_LIBS})
|
|
1616
1623
|
endif()
|
|
1617
1624
|
|
|
1618
1625
|
option(WITH_TRACE_TOOLS "build with trace tools" ON)
|
|
@@ -148,10 +148,8 @@ ifeq ($(USE_COROUTINES), 1)
|
|
|
148
148
|
USE_FOLLY = 1
|
|
149
149
|
# glog/logging.h requires HAVE_CXX11_ATOMIC
|
|
150
150
|
OPT += -DUSE_COROUTINES -DHAVE_CXX11_ATOMIC
|
|
151
|
-
ROCKSDB_CXX_STANDARD = c++2a
|
|
152
151
|
USE_RTTI = 1
|
|
153
152
|
ifneq ($(USE_CLANG), 1)
|
|
154
|
-
ROCKSDB_CXX_STANDARD = c++20
|
|
155
153
|
PLATFORM_CXXFLAGS += -fcoroutines
|
|
156
154
|
endif
|
|
157
155
|
endif
|
|
@@ -638,13 +636,14 @@ endif
|
|
|
638
636
|
TEST_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES)) $(GTEST)
|
|
639
637
|
BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(BENCH_LIB_SOURCES))
|
|
640
638
|
CACHE_BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(CACHE_BENCH_LIB_SOURCES))
|
|
639
|
+
POINT_LOCK_BENCH_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(POINT_LOCK_BENCH_LIB_SOURCES))
|
|
641
640
|
TOOL_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(TOOL_LIB_SOURCES))
|
|
642
641
|
ANALYZE_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(ANALYZER_LIB_SOURCES))
|
|
643
642
|
STRESS_OBJECTS = $(patsubst %.cc, $(OBJ_DIR)/%.o, $(STRESS_LIB_SOURCES))
|
|
644
643
|
|
|
645
644
|
# Exclude build_version.cc -- a generated source file -- from all sources. Not needed for dependencies
|
|
646
645
|
ALL_SOURCES = $(filter-out util/build_version.cc, $(LIB_SOURCES)) $(TEST_LIB_SOURCES) $(MOCK_LIB_SOURCES) $(GTEST_DIR)/gtest/gtest-all.cc
|
|
647
|
-
ALL_SOURCES += $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(CACHE_BENCH_LIB_SOURCES) $(ANALYZER_LIB_SOURCES) $(STRESS_LIB_SOURCES)
|
|
646
|
+
ALL_SOURCES += $(TOOL_LIB_SOURCES) $(BENCH_LIB_SOURCES) $(CACHE_BENCH_LIB_SOURCES) $(POINT_LOCK_BENCH_LIB_SOURCES) $(ANALYZER_LIB_SOURCES) $(STRESS_LIB_SOURCES)
|
|
648
647
|
ALL_SOURCES += $(TEST_MAIN_SOURCES) $(TOOL_MAIN_SOURCES) $(BENCH_MAIN_SOURCES)
|
|
649
648
|
ALL_SOURCES += $(ROCKSDB_PLUGIN_SOURCES) $(ROCKSDB_PLUGIN_TESTS)
|
|
650
649
|
|
|
@@ -683,7 +682,7 @@ am__v_CCH_1 =
|
|
|
683
682
|
# user build settings
|
|
684
683
|
%.h.pub: %.h # .h.pub not actually created, so re-checked on each invocation
|
|
685
684
|
$(AM_V_CCH) cd include/ && echo '#include "$(patsubst include/%,%,$<)"' | \
|
|
686
|
-
$(CXX) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
|
|
685
|
+
$(CXX) -std=$(or $(ROCKSDB_CXX_STANDARD),c++20) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
|
|
687
686
|
|
|
688
687
|
check-headers: $(HEADER_OK_FILES)
|
|
689
688
|
|
|
@@ -1345,6 +1344,9 @@ block_cache_trace_analyzer: $(OBJ_DIR)/tools/block_cache_analyzer/block_cache_tr
|
|
|
1345
1344
|
cache_bench: $(OBJ_DIR)/cache/cache_bench.o $(CACHE_BENCH_OBJECTS) $(LIBRARY)
|
|
1346
1345
|
$(AM_LINK)
|
|
1347
1346
|
|
|
1347
|
+
point_lock_bench: $(OBJ_DIR)/utilities/transactions/lock/point/point_lock_bench.o $(POINT_LOCK_BENCH_OBJECTS) $(LIBRARY)
|
|
1348
|
+
$(AM_LINK)
|
|
1349
|
+
|
|
1348
1350
|
persistent_cache_bench: $(OBJ_DIR)/utilities/persistent_cache/persistent_cache_bench.o $(LIBRARY)
|
|
1349
1351
|
$(AM_LINK)
|
|
1350
1352
|
|
|
@@ -1357,6 +1359,9 @@ filter_bench: $(OBJ_DIR)/util/filter_bench.o $(LIBRARY)
|
|
|
1357
1359
|
db_stress: $(OBJ_DIR)/db_stress_tool/db_stress.o $(STRESS_LIBRARY) $(TOOLS_LIBRARY) $(LIBRARY)
|
|
1358
1360
|
$(AM_LINK)
|
|
1359
1361
|
|
|
1362
|
+
db_stress_compression_manager: $(OBJ_DIR)/db_stress_tool/db_stress_compression_manager.o $(LIBRARY)
|
|
1363
|
+
$(AM_LINK)
|
|
1364
|
+
|
|
1360
1365
|
write_stress: $(OBJ_DIR)/tools/write_stress.o $(LIBRARY)
|
|
1361
1366
|
$(AM_LINK)
|
|
1362
1367
|
|
|
@@ -1422,13 +1427,13 @@ agg_merge_test: $(OBJ_DIR)/utilities/agg_merge/agg_merge_test.o $(TEST_LIBRARY)
|
|
|
1422
1427
|
stringappend_test: $(OBJ_DIR)/utilities/merge_operators/string_append/stringappend_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1423
1428
|
$(AM_LINK)
|
|
1424
1429
|
|
|
1425
|
-
cassandra_format_test: $(OBJ_DIR)/utilities/cassandra/cassandra_format_test.o $(
|
|
1430
|
+
cassandra_format_test: $(OBJ_DIR)/utilities/cassandra/cassandra_format_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1426
1431
|
$(AM_LINK)
|
|
1427
1432
|
|
|
1428
|
-
cassandra_functional_test: $(OBJ_DIR)/utilities/cassandra/cassandra_functional_test.o $(
|
|
1433
|
+
cassandra_functional_test: $(OBJ_DIR)/utilities/cassandra/cassandra_functional_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1429
1434
|
$(AM_LINK)
|
|
1430
1435
|
|
|
1431
|
-
cassandra_row_merge_test: $(OBJ_DIR)/utilities/cassandra/cassandra_row_merge_test.o $(
|
|
1436
|
+
cassandra_row_merge_test: $(OBJ_DIR)/utilities/cassandra/cassandra_row_merge_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1432
1437
|
$(AM_LINK)
|
|
1433
1438
|
|
|
1434
1439
|
cassandra_serialize_test: $(OBJ_DIR)/utilities/cassandra/cassandra_serialize_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
@@ -1878,6 +1883,9 @@ heap_test: $(OBJ_DIR)/util/heap_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
|
1878
1883
|
point_lock_manager_test: utilities/transactions/lock/point/point_lock_manager_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1879
1884
|
$(AM_LINK)
|
|
1880
1885
|
|
|
1886
|
+
point_lock_manager_stress_test: utilities/transactions/lock/point/point_lock_manager_stress_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1887
|
+
$(AM_LINK)
|
|
1888
|
+
|
|
1881
1889
|
transaction_test: $(OBJ_DIR)/utilities/transactions/transaction_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1882
1890
|
$(AM_LINK)
|
|
1883
1891
|
|
|
@@ -2037,6 +2045,9 @@ wide_column_serialization_test: $(OBJ_DIR)/db/wide/wide_column_serialization_tes
|
|
|
2037
2045
|
wide_columns_helper_test: $(OBJ_DIR)/db/wide/wide_columns_helper_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
2038
2046
|
$(AM_LINK)
|
|
2039
2047
|
|
|
2048
|
+
interval_test: $(OBJ_DIR)/util/interval_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
2049
|
+
$(AM_LINK)
|
|
2050
|
+
|
|
2040
2051
|
#-------------------------------------------------
|
|
2041
2052
|
# make install related stuff
|
|
2042
2053
|
PREFIX ?= /usr/local
|
|
@@ -2245,7 +2256,7 @@ libsnappy.a: snappy-$(SNAPPY_VER).tar.gz
|
|
|
2245
2256
|
-rm -rf snappy-$(SNAPPY_VER)
|
|
2246
2257
|
tar xvzf snappy-$(SNAPPY_VER).tar.gz
|
|
2247
2258
|
mkdir snappy-$(SNAPPY_VER)/build
|
|
2248
|
-
cd snappy-$(SNAPPY_VER)/build && CFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF
|
|
2259
|
+
cd snappy-$(SNAPPY_VER)/build && CFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CCFLAGS} ${EXTRA_CFLAGS}' CXXFLAGS='$(ARCHFLAG) ${JAVA_STATIC_DEPS_CXXFLAGS} ${EXTRA_CXXFLAGS}' LDFLAGS='${JAVA_STATIC_DEPS_LDFLAGS} ${EXTRA_LDFLAGS}' cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DSNAPPY_BUILD_BENCHMARKS=OFF -DSNAPPY_BUILD_TESTS=OFF ${PLATFORM_CMAKE_FLAGS} .. && $(MAKE) ${SNAPPY_MAKE_TARGET}
|
|
2249
2260
|
cp snappy-$(SNAPPY_VER)/build/libsnappy.a .
|
|
2250
2261
|
|
|
2251
2262
|
lz4-$(LZ4_VER).tar.gz:
|
|
@@ -2492,7 +2503,7 @@ checkout_folly:
|
|
|
2492
2503
|
fi
|
|
2493
2504
|
@# Pin to a particular version for public CI, so that PR authors don't
|
|
2494
2505
|
@# need to worry about folly breaking our integration. Update periodically
|
|
2495
|
-
cd third-party/folly && git reset --hard
|
|
2506
|
+
cd third-party/folly && git reset --hard e95383b7c8b5b1e46cf47acf2f317d54f93c8268
|
|
2496
2507
|
@# Apparently missing include
|
|
2497
2508
|
perl -pi -e 's/(#include <atomic>)/$$1\n#include <cstring>/' third-party/folly/folly/lang/Exception.h
|
|
2498
2509
|
@# Warning-as-error on memcpy
|
|
@@ -60,6 +60,8 @@ DEFINE_uint32(value_bytes, 8 * KiB, "Size of each value added.");
|
|
|
60
60
|
DEFINE_uint32(value_bytes_estimate, 0,
|
|
61
61
|
"If > 0, overrides estimated_entry_charge or "
|
|
62
62
|
"min_avg_entry_charge depending on cache_type.");
|
|
63
|
+
DEFINE_double(compressible_to_ratio, 0.5,
|
|
64
|
+
"Approximate size ratio that values can be compressed to.");
|
|
63
65
|
|
|
64
66
|
DEFINE_int32(
|
|
65
67
|
degenerate_hash_bits, 0,
|
|
@@ -182,6 +184,11 @@ DEFINE_bool(sck_randomize, false,
|
|
|
182
184
|
DEFINE_bool(sck_footer_unique_id, false,
|
|
183
185
|
"(-stress_cache_key) Simulate using proposed footer unique id");
|
|
184
186
|
// ## END stress_cache_key sub-tool options ##
|
|
187
|
+
// ## BEGIN stress_cache_instances sub-tool options ##
|
|
188
|
+
DEFINE_uint32(stress_cache_instances, 0,
|
|
189
|
+
"If > 0, run cache instance stress test instead");
|
|
190
|
+
// Uses cache_size and cache_type, maybe more
|
|
191
|
+
// ## END stress_cache_instance sub-tool options ##
|
|
185
192
|
|
|
186
193
|
namespace ROCKSDB_NAMESPACE {
|
|
187
194
|
|
|
@@ -291,10 +298,19 @@ struct KeyGen {
|
|
|
291
298
|
|
|
292
299
|
Cache::ObjectPtr createValue(Random64& rnd, MemoryAllocator* alloc) {
|
|
293
300
|
char* rv = AllocateBlock(FLAGS_value_bytes, alloc).release();
|
|
294
|
-
// Fill with some filler data, and take some CPU time
|
|
295
|
-
|
|
301
|
+
// Fill with some filler data, and take some CPU time, but add redundancy
|
|
302
|
+
// as requested for compressibility.
|
|
303
|
+
uint32_t random_fill_size = std::max(
|
|
304
|
+
uint32_t{1}, std::min(FLAGS_value_bytes,
|
|
305
|
+
static_cast<uint32_t>(FLAGS_compressible_to_ratio *
|
|
306
|
+
FLAGS_value_bytes)));
|
|
307
|
+
uint32_t i = 0;
|
|
308
|
+
for (; i < random_fill_size; i += 8) {
|
|
296
309
|
EncodeFixed64(rv + i, rnd.Next());
|
|
297
310
|
}
|
|
311
|
+
for (; i < FLAGS_value_bytes; i++) {
|
|
312
|
+
rv[i] = rv[i % random_fill_size];
|
|
313
|
+
}
|
|
298
314
|
return rv;
|
|
299
315
|
}
|
|
300
316
|
|
|
@@ -309,16 +325,16 @@ Status SaveToFn(Cache::ObjectPtr from_obj, size_t /*from_offset*/,
|
|
|
309
325
|
|
|
310
326
|
Status CreateFn(const Slice& data, CompressionType /*type*/,
|
|
311
327
|
CacheTier /*source*/, Cache::CreateContext* /*context*/,
|
|
312
|
-
MemoryAllocator*
|
|
328
|
+
MemoryAllocator* alloc, Cache::ObjectPtr* out_obj,
|
|
313
329
|
size_t* out_charge) {
|
|
314
|
-
*out_obj =
|
|
330
|
+
*out_obj = AllocateBlock(data.size(), alloc).release();
|
|
315
331
|
memcpy(*out_obj, data.data(), data.size());
|
|
316
332
|
*out_charge = data.size();
|
|
317
333
|
return Status::OK();
|
|
318
334
|
};
|
|
319
335
|
|
|
320
336
|
void DeleteFn(Cache::ObjectPtr value, MemoryAllocator* alloc) {
|
|
321
|
-
|
|
337
|
+
CacheAllocationDeleter{alloc}(static_cast<char*>(value));
|
|
322
338
|
}
|
|
323
339
|
|
|
324
340
|
Cache::CacheItemHelper helper1_wos(CacheEntryRole::kDataBlock, DeleteFn);
|
|
@@ -376,7 +392,12 @@ class CacheBench {
|
|
|
376
392
|
fprintf(stderr, "Percentages must add to 100.\n");
|
|
377
393
|
exit(1);
|
|
378
394
|
}
|
|
395
|
+
cache_ = MakeCache();
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
~CacheBench() = default;
|
|
379
399
|
|
|
400
|
+
static std::shared_ptr<Cache> MakeCache() {
|
|
380
401
|
std::shared_ptr<MemoryAllocator> allocator;
|
|
381
402
|
if (FLAGS_use_jemalloc_no_dump_allocator) {
|
|
382
403
|
JemallocAllocatorOptions opts;
|
|
@@ -395,12 +416,12 @@ class CacheBench {
|
|
|
395
416
|
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
396
417
|
opts.memory_allocator = allocator;
|
|
397
418
|
opts.eviction_effort_cap = FLAGS_eviction_effort_cap;
|
|
398
|
-
if (FLAGS_cache_type == "fixed_hyper_clock_cache"
|
|
399
|
-
FLAGS_cache_type == "hyper_clock_cache") {
|
|
419
|
+
if (FLAGS_cache_type == "fixed_hyper_clock_cache") {
|
|
400
420
|
opts.estimated_entry_charge = FLAGS_value_bytes_estimate > 0
|
|
401
421
|
? FLAGS_value_bytes_estimate
|
|
402
422
|
: FLAGS_value_bytes;
|
|
403
|
-
} else if (FLAGS_cache_type == "auto_hyper_clock_cache"
|
|
423
|
+
} else if (FLAGS_cache_type == "auto_hyper_clock_cache" ||
|
|
424
|
+
FLAGS_cache_type == "hyper_clock_cache") {
|
|
404
425
|
if (FLAGS_value_bytes_estimate > 0) {
|
|
405
426
|
opts.min_avg_entry_charge = FLAGS_value_bytes_estimate;
|
|
406
427
|
}
|
|
@@ -409,7 +430,7 @@ class CacheBench {
|
|
|
409
430
|
exit(1);
|
|
410
431
|
}
|
|
411
432
|
ConfigureSecondaryCache(opts);
|
|
412
|
-
|
|
433
|
+
return opts.MakeSharedCache();
|
|
413
434
|
} else if (FLAGS_cache_type == "lru_cache") {
|
|
414
435
|
LRUCacheOptions opts(FLAGS_cache_size, FLAGS_num_shard_bits,
|
|
415
436
|
false /* strict_capacity_limit */,
|
|
@@ -417,15 +438,13 @@ class CacheBench {
|
|
|
417
438
|
opts.hash_seed = BitwiseAnd(FLAGS_seed, INT32_MAX);
|
|
418
439
|
opts.memory_allocator = allocator;
|
|
419
440
|
ConfigureSecondaryCache(opts);
|
|
420
|
-
|
|
441
|
+
return NewLRUCache(opts);
|
|
421
442
|
} else {
|
|
422
443
|
fprintf(stderr, "Cache type not supported.\n");
|
|
423
444
|
exit(1);
|
|
424
445
|
}
|
|
425
446
|
}
|
|
426
447
|
|
|
427
|
-
~CacheBench() = default;
|
|
428
|
-
|
|
429
448
|
void PopulateCache() {
|
|
430
449
|
Random64 rnd(FLAGS_seed);
|
|
431
450
|
KeyGen keygen;
|
|
@@ -479,7 +498,7 @@ class CacheBench {
|
|
|
479
498
|
|
|
480
499
|
PrintEnv();
|
|
481
500
|
SharedState shared(this);
|
|
482
|
-
std::vector<std::unique_ptr<ThreadState
|
|
501
|
+
std::vector<std::unique_ptr<ThreadState>> threads(FLAGS_threads);
|
|
483
502
|
for (uint32_t i = 0; i < FLAGS_threads; i++) {
|
|
484
503
|
threads[i].reset(new ThreadState(i, &shared));
|
|
485
504
|
std::thread(ThreadBody, threads[i].get()).detach();
|
|
@@ -1141,6 +1160,59 @@ class StressCacheKey {
|
|
|
1141
1160
|
double multiplier_ = 0.0;
|
|
1142
1161
|
};
|
|
1143
1162
|
|
|
1163
|
+
// cache_bench -stress_cache_instances is a partially independent embedded tool
|
|
1164
|
+
// for evaluating the time and space required to create and destroy many cache
|
|
1165
|
+
// instances, as this is considered important for a default cache implementation
|
|
1166
|
+
// which could see many throw-away instances in handling of Options, or created
|
|
1167
|
+
// in large numbers for many very small DBs with many CFs. Prefix command line
|
|
1168
|
+
// with /usr/bin/time to see max RSS memory.
|
|
1169
|
+
class StressCacheInstances {
|
|
1170
|
+
public:
|
|
1171
|
+
void Run() {
|
|
1172
|
+
const int kNumIterations = 10;
|
|
1173
|
+
const auto clock = SystemClock::Default().get();
|
|
1174
|
+
caches_.reserve(FLAGS_stress_cache_instances);
|
|
1175
|
+
|
|
1176
|
+
uint64_t total_create_time_us = 0;
|
|
1177
|
+
uint64_t total_destroy_time_us = 0;
|
|
1178
|
+
|
|
1179
|
+
for (int iter = 0; iter < kNumIterations; ++iter) {
|
|
1180
|
+
// Create many cache instances
|
|
1181
|
+
uint64_t start_create = clock->NowMicros();
|
|
1182
|
+
for (uint32_t i = 0; i < FLAGS_stress_cache_instances; ++i) {
|
|
1183
|
+
caches_.emplace_back(CacheBench::MakeCache());
|
|
1184
|
+
}
|
|
1185
|
+
uint64_t end_create = clock->NowMicros();
|
|
1186
|
+
uint64_t create_time = end_create - start_create;
|
|
1187
|
+
total_create_time_us += create_time;
|
|
1188
|
+
|
|
1189
|
+
// Destroy them
|
|
1190
|
+
uint64_t start_destroy = clock->NowMicros();
|
|
1191
|
+
caches_.clear();
|
|
1192
|
+
uint64_t end_destroy = clock->NowMicros();
|
|
1193
|
+
uint64_t destroy_time = end_destroy - start_destroy;
|
|
1194
|
+
total_destroy_time_us += destroy_time;
|
|
1195
|
+
|
|
1196
|
+
printf(
|
|
1197
|
+
"Iteration %d: Created %u caches in %.3f ms, destroyed in %.3f ms\n",
|
|
1198
|
+
iter + 1, FLAGS_stress_cache_instances, create_time / 1000.0,
|
|
1199
|
+
destroy_time / 1000.0);
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
printf("Average creation time: %.3f ms (%.1f us per cache)\n",
|
|
1203
|
+
static_cast<double>(total_create_time_us) / kNumIterations / 1000.0,
|
|
1204
|
+
static_cast<double>(total_create_time_us) / kNumIterations /
|
|
1205
|
+
FLAGS_stress_cache_instances);
|
|
1206
|
+
printf("Average destruction time: %.3f ms (%.1f us per cache)\n",
|
|
1207
|
+
static_cast<double>(total_destroy_time_us) / kNumIterations / 1000.0,
|
|
1208
|
+
static_cast<double>(total_destroy_time_us) / kNumIterations /
|
|
1209
|
+
FLAGS_stress_cache_instances);
|
|
1210
|
+
}
|
|
1211
|
+
|
|
1212
|
+
private:
|
|
1213
|
+
std::vector<std::shared_ptr<Cache>> caches_;
|
|
1214
|
+
};
|
|
1215
|
+
|
|
1144
1216
|
int cache_bench_tool(int argc, char** argv) {
|
|
1145
1217
|
ROCKSDB_NAMESPACE::port::InstallStackTraceHandler();
|
|
1146
1218
|
ParseCommandLineFlags(&argc, &argv, true);
|
|
@@ -1151,6 +1223,11 @@ int cache_bench_tool(int argc, char** argv) {
|
|
|
1151
1223
|
return 0;
|
|
1152
1224
|
}
|
|
1153
1225
|
|
|
1226
|
+
if (FLAGS_stress_cache_instances > 0) {
|
|
1227
|
+
StressCacheInstances().Run();
|
|
1228
|
+
return 0;
|
|
1229
|
+
}
|
|
1230
|
+
|
|
1154
1231
|
if (FLAGS_threads <= 0) {
|
|
1155
1232
|
fprintf(stderr, "threads number <= 0\n");
|
|
1156
1233
|
exit(1);
|