@nxtedition/rocksdb 13.5.13 → 15.0.1
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 +55 -180
- 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 +18 -42
- 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;
|
|
@@ -2004,193 +2034,30 @@ NAPI_METHOD(updates_close) {
|
|
|
2004
2034
|
}
|
|
2005
2035
|
}
|
|
2006
2036
|
|
|
2007
|
-
NAPI_METHOD(
|
|
2008
|
-
NAPI_ARGV(
|
|
2037
|
+
NAPI_METHOD(db_compact_range_sync) {
|
|
2038
|
+
NAPI_ARGV(2);
|
|
2009
2039
|
|
|
2010
2040
|
Database* database;
|
|
2011
2041
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
2012
2042
|
|
|
2013
|
-
|
|
2014
|
-
|
|
2015
|
-
NAPI_STATUS_THROWS(napi_create_object(env, &columns));
|
|
2016
|
-
for (auto& [id, column] : database->columns) {
|
|
2017
|
-
napi_value val;
|
|
2018
|
-
NAPI_STATUS_THROWS(napi_create_external(env, column.handle, nullptr, nullptr, &val));
|
|
2019
|
-
NAPI_STATUS_THROWS(napi_set_named_property(env, columns, column.descriptor.name.c_str(), val));
|
|
2020
|
-
}
|
|
2021
|
-
return columns;
|
|
2022
|
-
} else {
|
|
2023
|
-
rocksdb::Options dbOptions;
|
|
2024
|
-
|
|
2025
|
-
const auto options = argv[1];
|
|
2026
|
-
|
|
2027
|
-
int parallelism = std::max<int>(1, std::thread::hardware_concurrency() / 2);
|
|
2028
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "parallelism", parallelism));
|
|
2029
|
-
dbOptions.IncreaseParallelism(parallelism);
|
|
2030
|
-
|
|
2031
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "walDir", dbOptions.wal_dir));
|
|
2032
|
-
|
|
2033
|
-
uint32_t walTTL = 0;
|
|
2034
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "walTTL", walTTL));
|
|
2035
|
-
dbOptions.WAL_ttl_seconds = walTTL / 1e3;
|
|
2036
|
-
|
|
2037
|
-
uint32_t walSizeLimit = 0;
|
|
2038
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "walSizeLimit", walSizeLimit));
|
|
2039
|
-
dbOptions.WAL_size_limit_MB = walSizeLimit / 1e6;
|
|
2040
|
-
|
|
2041
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "maxTotalWalSize", dbOptions.max_total_wal_size));
|
|
2042
|
-
|
|
2043
|
-
bool walCompression = true;
|
|
2044
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "walCompression", walCompression));
|
|
2045
|
-
dbOptions.wal_compression =
|
|
2046
|
-
walCompression ? rocksdb::CompressionType::kZSTD : rocksdb::CompressionType::kNoCompression;
|
|
2047
|
-
|
|
2048
|
-
dbOptions.avoid_unnecessary_blocking_io = true;
|
|
2049
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "avoidUnnecessaryBlockingIO", dbOptions.avoid_unnecessary_blocking_io));
|
|
2050
|
-
|
|
2051
|
-
dbOptions.create_missing_column_families = true;
|
|
2052
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "createMissingColumnFamilies", dbOptions.create_missing_column_families));
|
|
2053
|
-
|
|
2054
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "writeDbIdToManifest", dbOptions.write_dbid_to_manifest));
|
|
2055
|
-
|
|
2056
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "adviseRandomOnOpen", dbOptions.advise_random_on_open));
|
|
2057
|
-
|
|
2058
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "bytesPerSync", dbOptions.bytes_per_sync));
|
|
2059
|
-
|
|
2060
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "walBytesPerSync", dbOptions.wal_bytes_per_sync));
|
|
2061
|
-
|
|
2062
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "strictBytesPerSync", dbOptions.strict_bytes_per_sync));
|
|
2063
|
-
|
|
2064
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "delayedWriteRate", dbOptions.delayed_write_rate));
|
|
2065
|
-
|
|
2066
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "createIfMissing", dbOptions.create_if_missing));
|
|
2067
|
-
|
|
2068
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "errorIfExists", dbOptions.error_if_exists));
|
|
2069
|
-
|
|
2070
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "pipelinedWrite", dbOptions.enable_pipelined_write));
|
|
2071
|
-
|
|
2072
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "dailyOffpeakTime", dbOptions.daily_offpeak_time_utc));
|
|
2073
|
-
|
|
2074
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "unorderedWrite", dbOptions.unordered_write));
|
|
2075
|
-
|
|
2076
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "allowMmapReads", dbOptions.allow_mmap_reads));
|
|
2077
|
-
|
|
2078
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "allowMmapWrites", dbOptions.allow_mmap_writes));
|
|
2079
|
-
|
|
2080
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "memTableHugePageSize", dbOptions.memtable_huge_page_size));
|
|
2081
|
-
|
|
2082
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOReads", dbOptions.use_direct_reads));
|
|
2083
|
-
|
|
2084
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOForFlushAndCompaction", dbOptions.use_direct_io_for_flush_and_compaction));
|
|
2085
|
-
|
|
2086
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "compactionReadaheadSize", dbOptions.compaction_readahead_size));
|
|
2087
|
-
|
|
2088
|
-
// TODO (feat): dbOptions.listeners
|
|
2089
|
-
|
|
2090
|
-
std::string infoLogLevel;
|
|
2091
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "infoLogLevel", infoLogLevel));
|
|
2092
|
-
if (infoLogLevel.size() > 0) {
|
|
2093
|
-
rocksdb::InfoLogLevel lvl = {};
|
|
2094
|
-
|
|
2095
|
-
if (infoLogLevel == "debug")
|
|
2096
|
-
lvl = rocksdb::InfoLogLevel::DEBUG_LEVEL;
|
|
2097
|
-
else if (infoLogLevel == "info")
|
|
2098
|
-
lvl = rocksdb::InfoLogLevel::INFO_LEVEL;
|
|
2099
|
-
else if (infoLogLevel == "warn")
|
|
2100
|
-
lvl = rocksdb::InfoLogLevel::WARN_LEVEL;
|
|
2101
|
-
else if (infoLogLevel == "error")
|
|
2102
|
-
lvl = rocksdb::InfoLogLevel::ERROR_LEVEL;
|
|
2103
|
-
else if (infoLogLevel == "fatal")
|
|
2104
|
-
lvl = rocksdb::InfoLogLevel::FATAL_LEVEL;
|
|
2105
|
-
else if (infoLogLevel == "header")
|
|
2106
|
-
lvl = rocksdb::InfoLogLevel::HEADER_LEVEL;
|
|
2107
|
-
else
|
|
2108
|
-
napi_throw_error(env, nullptr, "invalid log level");
|
|
2109
|
-
|
|
2110
|
-
dbOptions.info_log_level = lvl;
|
|
2111
|
-
} else {
|
|
2112
|
-
// In some places RocksDB checks this option to see if it should prepare
|
|
2113
|
-
// debug information (ahead of logging), so set it to the highest level.
|
|
2114
|
-
dbOptions.info_log_level = rocksdb::InfoLogLevel::HEADER_LEVEL;
|
|
2115
|
-
dbOptions.info_log.reset(new NullLogger());
|
|
2116
|
-
}
|
|
2117
|
-
|
|
2118
|
-
NAPI_STATUS_THROWS(InitOptions(env, dbOptions, options));
|
|
2119
|
-
|
|
2120
|
-
std::vector<rocksdb::ColumnFamilyDescriptor> descriptors;
|
|
2121
|
-
|
|
2122
|
-
bool hasColumns;
|
|
2123
|
-
NAPI_STATUS_THROWS(napi_has_named_property(env, options, "columns", &hasColumns));
|
|
2124
|
-
|
|
2125
|
-
if (hasColumns) {
|
|
2126
|
-
napi_value columns;
|
|
2127
|
-
NAPI_STATUS_THROWS(napi_get_named_property(env, options, "columns", &columns));
|
|
2128
|
-
|
|
2129
|
-
napi_value keys;
|
|
2130
|
-
NAPI_STATUS_THROWS(napi_get_property_names(env, columns, &keys));
|
|
2131
|
-
|
|
2132
|
-
uint32_t len;
|
|
2133
|
-
NAPI_STATUS_THROWS(napi_get_array_length(env, keys, &len));
|
|
2134
|
-
|
|
2135
|
-
descriptors.resize(len);
|
|
2136
|
-
for (uint32_t n = 0; n < len; ++n) {
|
|
2137
|
-
napi_value key;
|
|
2138
|
-
NAPI_STATUS_THROWS(napi_get_element(env, keys, n, &key));
|
|
2139
|
-
|
|
2140
|
-
napi_value column;
|
|
2141
|
-
NAPI_STATUS_THROWS(napi_get_property(env, columns, key, &column));
|
|
2142
|
-
|
|
2143
|
-
NAPI_STATUS_THROWS(InitOptions(env, descriptors[n].options, column));
|
|
2144
|
-
|
|
2145
|
-
NAPI_STATUS_THROWS(GetValue(env, key, descriptors[n].name));
|
|
2146
|
-
}
|
|
2147
|
-
}
|
|
2148
|
-
|
|
2149
|
-
auto callback = argv[2];
|
|
2150
|
-
|
|
2151
|
-
runAsync<std::vector<rocksdb::ColumnFamilyHandle*>>(
|
|
2152
|
-
"leveldown.open_for_read_only", env, callback,
|
|
2153
|
-
[=](auto& handles) {
|
|
2154
|
-
assert(!database->db);
|
|
2155
|
-
|
|
2156
|
-
rocksdb::DB* db = nullptr;
|
|
2157
|
-
|
|
2158
|
-
const auto status = descriptors.empty()
|
|
2159
|
-
? rocksdb::DB::OpenForReadOnly(dbOptions, database->location, &db)
|
|
2160
|
-
: rocksdb::DB::OpenForReadOnly(dbOptions, database->location, descriptors, &handles, &db);
|
|
2161
|
-
|
|
2162
|
-
database->db.reset(db);
|
|
2163
|
-
|
|
2164
|
-
return status;
|
|
2165
|
-
},
|
|
2166
|
-
[=](auto& handles, auto env, auto& argv) {
|
|
2167
|
-
argv.resize(2);
|
|
2043
|
+
std::optional<std::string> start;
|
|
2044
|
+
std::optional<std::string> end;
|
|
2168
2045
|
|
|
2169
|
-
|
|
2046
|
+
NAPI_STATUS_THROWS(GetProperty(env, argv[1], "start", start));
|
|
2047
|
+
NAPI_STATUS_THROWS(GetProperty(env, argv[1], "end", end));
|
|
2170
2048
|
|
|
2171
|
-
|
|
2172
|
-
ColumnFamily column;
|
|
2173
|
-
column.handle = handles[n];
|
|
2174
|
-
column.descriptor = descriptors[n];
|
|
2175
|
-
database->columns[column.handle->GetID()] = column;
|
|
2176
|
-
}
|
|
2049
|
+
rocksdb::CompactRangeOptions options;
|
|
2177
2050
|
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
napi_value val;
|
|
2181
|
-
NAPI_STATUS_RETURN(napi_create_external(env, column.handle, nullptr, nullptr, &val));
|
|
2182
|
-
NAPI_STATUS_RETURN(napi_set_named_property(env, columns, column.descriptor.name.c_str(), val));
|
|
2183
|
-
}
|
|
2051
|
+
auto begin = start ? std::make_unique<rocksdb::Slice>(*start) : nullptr;
|
|
2052
|
+
auto finish = end ? std::make_unique<rocksdb::Slice>(*end) : nullptr;
|
|
2184
2053
|
|
|
2185
|
-
|
|
2186
|
-
});
|
|
2187
|
-
}
|
|
2054
|
+
ROCKS_STATUS_THROWS_NAPI(database->db->CompactRange(options, begin.get(), finish.get()));
|
|
2188
2055
|
|
|
2189
2056
|
return 0;
|
|
2190
2057
|
}
|
|
2191
2058
|
|
|
2192
2059
|
NAPI_METHOD(db_compact_range) {
|
|
2193
|
-
NAPI_ARGV(
|
|
2060
|
+
NAPI_ARGV(3);
|
|
2194
2061
|
|
|
2195
2062
|
Database* database;
|
|
2196
2063
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&database)));
|
|
@@ -2201,12 +2068,19 @@ NAPI_METHOD(db_compact_range) {
|
|
|
2201
2068
|
NAPI_STATUS_THROWS(GetProperty(env, argv[1], "start", start));
|
|
2202
2069
|
NAPI_STATUS_THROWS(GetProperty(env, argv[1], "end", end));
|
|
2203
2070
|
|
|
2204
|
-
|
|
2071
|
+
auto callback = argv[2];
|
|
2205
2072
|
|
|
2206
|
-
|
|
2207
|
-
|
|
2073
|
+
runAsync<std::nullptr_t>(
|
|
2074
|
+
"leveldown.compact_range", env, callback,
|
|
2075
|
+
[=](auto& state) {
|
|
2076
|
+
rocksdb::CompactRangeOptions options;
|
|
2208
2077
|
|
|
2209
|
-
|
|
2078
|
+
auto begin = start ? std::make_unique<rocksdb::Slice>(*start) : nullptr;
|
|
2079
|
+
auto finish = end ? std::make_unique<rocksdb::Slice>(*end) : nullptr;
|
|
2080
|
+
|
|
2081
|
+
return database->db->CompactRange(options, begin.get(), finish.get());
|
|
2082
|
+
},
|
|
2083
|
+
[](auto& state, auto env, auto& argv) { return napi_ok; });
|
|
2210
2084
|
|
|
2211
2085
|
return 0;
|
|
2212
2086
|
}
|
|
@@ -2224,6 +2098,8 @@ NAPI_INIT() {
|
|
|
2224
2098
|
NAPI_EXPORT_FUNCTION(db_get_property);
|
|
2225
2099
|
NAPI_EXPORT_FUNCTION(db_get_latest_sequence);
|
|
2226
2100
|
NAPI_EXPORT_FUNCTION(db_query);
|
|
2101
|
+
NAPI_EXPORT_FUNCTION(db_compact_range_sync);
|
|
2102
|
+
NAPI_EXPORT_FUNCTION(db_compact_range);
|
|
2227
2103
|
|
|
2228
2104
|
NAPI_EXPORT_FUNCTION(iterator_init);
|
|
2229
2105
|
NAPI_EXPORT_FUNCTION(iterator_seek);
|
|
@@ -2241,9 +2117,8 @@ NAPI_INIT() {
|
|
|
2241
2117
|
NAPI_EXPORT_FUNCTION(batch_del);
|
|
2242
2118
|
NAPI_EXPORT_FUNCTION(batch_clear);
|
|
2243
2119
|
NAPI_EXPORT_FUNCTION(batch_write);
|
|
2120
|
+
NAPI_EXPORT_FUNCTION(batch_write_sync);
|
|
2244
2121
|
NAPI_EXPORT_FUNCTION(batch_merge);
|
|
2245
2122
|
NAPI_EXPORT_FUNCTION(batch_count);
|
|
2246
2123
|
NAPI_EXPORT_FUNCTION(batch_iterate);
|
|
2247
|
-
NAPI_EXPORT_FUNCTION(db_open_for_read_only);
|
|
2248
|
-
NAPI_EXPORT_FUNCTION(db_compact_range);
|
|
2249
2124
|
}
|
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
|