@nxtedition/rocksdb 15.1.2 → 15.1.3
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 +79 -38
- package/build.sh +1 -2
- package/deps/rocksdb/rocksdb/BUCK +10 -8
- package/deps/rocksdb/rocksdb/CMakeLists.txt +27 -2
- package/deps/rocksdb/rocksdb/Makefile +27 -116
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +101 -124
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +47 -30
- package/deps/rocksdb/rocksdb/db/c.cc +793 -131
- package/deps/rocksdb/rocksdb/db/c_test.c +571 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +226 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.h +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +95 -59
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +45 -35
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -6
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +8 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +47 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -2
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +82 -0
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +1 -1
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +69 -24
- package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +9 -1
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +65 -0
- package/deps/rocksdb/rocksdb/db/db_etc3_test.cc +161 -0
- package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -7
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +13 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +114 -39
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +3 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +39 -25
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +361 -0
- package/deps/rocksdb/rocksdb/db/db_options_test.cc +35 -0
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +83 -0
- package/deps/rocksdb/rocksdb/db/db_test.cc +249 -4
- package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_wal_test.cc +3 -2
- package/deps/rocksdb/rocksdb/db/flush_job_test.cc +7 -7
- package/deps/rocksdb/rocksdb/db/listener_test.cc +7 -17
- package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
- package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +41 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +2 -2
- package/deps/rocksdb/rocksdb/db/version_edit.h +7 -4
- package/deps/rocksdb/rocksdb/db/version_set.cc +299 -90
- package/deps/rocksdb/rocksdb/db/version_set.h +56 -9
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +41 -39
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
- package/deps/rocksdb/rocksdb/db/wal_manager.cc +7 -1
- package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +48 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +5 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +16 -5
- package/deps/rocksdb/rocksdb/env/env_test.cc +126 -41
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -7
- package/deps/rocksdb/rocksdb/env/io_posix.cc +304 -112
- package/deps/rocksdb/rocksdb/env/io_posix.h +16 -4
- package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
- package/deps/rocksdb/rocksdb/folly.mk +148 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +29 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +73 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +246 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +15 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +67 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +1 -7
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +6 -14
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +8 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +0 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +33 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +6 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +2 -0
- package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +5 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +6 -6
- package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +2 -2
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +10 -5
- package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
- package/deps/rocksdb/rocksdb/options/cf_options.cc +15 -3
- package/deps/rocksdb/rocksdb/options/cf_options.h +7 -0
- package/deps/rocksdb/rocksdb/options/db_options.cc +27 -36
- package/deps/rocksdb/rocksdb/options/db_options.h +3 -2
- package/deps/rocksdb/rocksdb/options/options.cc +4 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +4 -1
- package/deps/rocksdb/rocksdb/options/options_test.cc +19 -3
- package/deps/rocksdb/rocksdb/src.mk +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +155 -32
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -3
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +169 -125
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +22 -7
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +43 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +9 -5
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +9 -8
- package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +17 -0
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +15 -5
- package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +13 -18
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +29 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +6 -0
- package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +15 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +79 -19
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +48 -20
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +51 -0
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +19 -0
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/table/external_table.cc +2 -2
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +3 -2
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +3 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
- package/deps/rocksdb/rocksdb/table/table_reader.h +4 -2
- package/deps/rocksdb/rocksdb/table/table_test.cc +48 -39
- package/deps/rocksdb/rocksdb/test_util/sync_point.cc +4 -0
- package/deps/rocksdb/rocksdb/test_util/sync_point.h +32 -0
- package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -2
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +14 -4
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
- package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +3 -2
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +63 -12
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +16 -1
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +5 -1
- package/deps/rocksdb/rocksdb/util/bit_fields.h +133 -23
- package/deps/rocksdb/rocksdb/util/bloom_test.cc +2 -5
- package/deps/rocksdb/rocksdb/util/compression.cc +51 -23
- package/deps/rocksdb/rocksdb/util/compression_test.cc +525 -270
- package/deps/rocksdb/rocksdb/util/filter_bench.cc +3 -4
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +11 -2
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -1
- package/deps/rocksdb/rocksdb/util/slice_test.cc +92 -0
- package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -2
- package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -2
- package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +2 -2
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +19 -2
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +75 -0
- package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +1 -0
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +303 -111
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +379 -0
- package/deps/rocksdb/rocksdb.gyp +6 -4
- package/iterator.js +66 -70
- package/package.json +6 -6
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder_test.cc +0 -183
package/binding.cc
CHANGED
|
@@ -432,8 +432,7 @@ class Iterator final : public BaseIterator {
|
|
|
432
432
|
values_(values),
|
|
433
433
|
highWaterMarkBytes_(highWaterMarkBytes),
|
|
434
434
|
keyEncoding_(keyEncoding),
|
|
435
|
-
valueEncoding_(valueEncoding) {
|
|
436
|
-
}
|
|
435
|
+
valueEncoding_(valueEncoding) {}
|
|
437
436
|
|
|
438
437
|
void Seek(const rocksdb::Slice& target) override {
|
|
439
438
|
first_ = true;
|
|
@@ -483,7 +482,8 @@ class Iterator final : public BaseIterator {
|
|
|
483
482
|
rocksdb::ReadOptions readOptions;
|
|
484
483
|
|
|
485
484
|
readOptions.background_purge_on_iterator_cleanup = true;
|
|
486
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "backgroundPurgeOnIteratorCleanup",
|
|
485
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "backgroundPurgeOnIteratorCleanup",
|
|
486
|
+
readOptions.background_purge_on_iterator_cleanup));
|
|
487
487
|
|
|
488
488
|
readOptions.tailing = false;
|
|
489
489
|
NAPI_STATUS_THROWS(GetProperty(env, options, "tailing", readOptions.tailing));
|
|
@@ -529,14 +529,13 @@ class Iterator final : public BaseIterator {
|
|
|
529
529
|
bool finished = false;
|
|
530
530
|
};
|
|
531
531
|
|
|
532
|
-
runAsync<State>(
|
|
532
|
+
runAsync<State>(
|
|
533
|
+
"iterator.nextv", env, callback,
|
|
533
534
|
[=](auto& state) {
|
|
534
535
|
state.keys.reserve(count);
|
|
535
536
|
state.values.reserve(count);
|
|
536
537
|
|
|
537
|
-
const auto deadline = timeout
|
|
538
|
-
? database_->db->GetEnv()->NowMicros() + timeout * 1000
|
|
539
|
-
: 0;
|
|
538
|
+
const auto deadline = timeout ? database_->db->GetEnv()->NowMicros() + timeout * 1000 : 0;
|
|
540
539
|
|
|
541
540
|
size_t bytesRead = 0;
|
|
542
541
|
for (int n = 0; n < count; n++) {
|
|
@@ -633,9 +632,7 @@ class Iterator final : public BaseIterator {
|
|
|
633
632
|
napi_value rows;
|
|
634
633
|
NAPI_STATUS_THROWS(napi_create_array(env, &rows));
|
|
635
634
|
|
|
636
|
-
const auto deadline = timeout
|
|
637
|
-
? database_->db->GetEnv()->NowMicros() + timeout * 1000
|
|
638
|
-
: 0;
|
|
635
|
+
const auto deadline = timeout ? database_->db->GetEnv()->NowMicros() + timeout * 1000 : 0;
|
|
639
636
|
|
|
640
637
|
size_t idx = 0;
|
|
641
638
|
size_t bytesRead = 0;
|
|
@@ -908,15 +905,19 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
908
905
|
// Compat
|
|
909
906
|
NAPI_STATUS_RETURN(GetProperty(env, options, "enableBlobFiles", columnOptions.enable_blob_files));
|
|
910
907
|
NAPI_STATUS_RETURN(GetProperty(env, options, "minBlobSize", columnOptions.min_blob_size));
|
|
911
|
-
NAPI_STATUS_RETURN(
|
|
908
|
+
NAPI_STATUS_RETURN(
|
|
909
|
+
GetProperty(env, options, "enableBlobGarbageCollection", columnOptions.enable_blob_garbage_collection));
|
|
912
910
|
|
|
913
911
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFiles", columnOptions.enable_blob_files));
|
|
914
912
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobMinSize", columnOptions.min_blob_size));
|
|
915
913
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollection", columnOptions.enable_blob_garbage_collection));
|
|
916
914
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileSize", columnOptions.blob_file_size));
|
|
917
|
-
NAPI_STATUS_RETURN(
|
|
918
|
-
|
|
919
|
-
NAPI_STATUS_RETURN(GetProperty(env, options, "
|
|
915
|
+
NAPI_STATUS_RETURN(
|
|
916
|
+
GetProperty(env, options, "blobGarbageCollectionAgeCutoff", columnOptions.blob_garbage_collection_age_cutoff));
|
|
917
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollectionForceThreshold",
|
|
918
|
+
columnOptions.blob_garbage_collection_force_threshold));
|
|
919
|
+
NAPI_STATUS_RETURN(
|
|
920
|
+
GetProperty(env, options, "blobCompactionReadaheadSize", columnOptions.blob_compaction_readahead_size));
|
|
920
921
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobFileStartingLevel", columnOptions.blob_file_starting_level));
|
|
921
922
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompression", columnOptions.blob_compression_type));
|
|
922
923
|
|
|
@@ -987,7 +988,7 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
987
988
|
columnOptions.blob_cache = cache;
|
|
988
989
|
} else if (cacheSize == 0) {
|
|
989
990
|
columnOptions.blob_cache = nullptr;
|
|
990
|
-
} else
|
|
991
|
+
} else if (compressedRatio > 0.0) {
|
|
991
992
|
rocksdb::TieredCacheOptions options;
|
|
992
993
|
options.total_capacity = cacheSize;
|
|
993
994
|
options.compressed_secondary_ratio = compressedRatio;
|
|
@@ -1060,22 +1061,27 @@ napi_status InitOptions(napi_env env, T& columnOptions, const U& options) {
|
|
|
1060
1061
|
} else if (indexShortening == "shortenSeparators") {
|
|
1061
1062
|
tableOptions.index_shortening = rocksdb::BlockBasedTableOptions::IndexShorteningMode::kShortenSeparators;
|
|
1062
1063
|
} else if (indexShortening == "shortenSeparatorsAndSuccessor") {
|
|
1063
|
-
tableOptions.index_shortening =
|
|
1064
|
+
tableOptions.index_shortening =
|
|
1065
|
+
rocksdb::BlockBasedTableOptions::IndexShorteningMode::kShortenSeparatorsAndSuccessor;
|
|
1064
1066
|
} else {
|
|
1065
1067
|
return napi_invalid_arg;
|
|
1066
1068
|
}
|
|
1067
1069
|
|
|
1068
|
-
NAPI_STATUS_RETURN(
|
|
1070
|
+
NAPI_STATUS_RETURN(
|
|
1071
|
+
GetProperty(env, options, "dataBlockHashTableUtilRatio", tableOptions.data_block_hash_table_util_ratio));
|
|
1069
1072
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blockSize", tableOptions.block_size));
|
|
1070
1073
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blockRestartInterval", tableOptions.block_restart_interval));
|
|
1071
1074
|
NAPI_STATUS_RETURN(GetProperty(env, options, "blockAlign", tableOptions.block_align));
|
|
1072
|
-
NAPI_STATUS_RETURN(
|
|
1073
|
-
|
|
1075
|
+
NAPI_STATUS_RETURN(
|
|
1076
|
+
GetProperty(env, options, "cacheIndexAndFilterBlocks", tableOptions.cache_index_and_filter_blocks));
|
|
1077
|
+
NAPI_STATUS_RETURN(GetProperty(env, options, "cacheIndexAndFilterBlocksWithHighPriority",
|
|
1078
|
+
tableOptions.cache_index_and_filter_blocks_with_high_priority));
|
|
1074
1079
|
NAPI_STATUS_RETURN(GetProperty(env, options, "decouplePartitionedFilters", tableOptions.block_restart_interval));
|
|
1075
1080
|
NAPI_STATUS_RETURN(GetProperty(env, options, "optimizeFiltersForMemory", tableOptions.optimize_filters_for_memory));
|
|
1076
1081
|
NAPI_STATUS_RETURN(GetProperty(env, options, "maxAutoReadaheadSize", tableOptions.max_auto_readahead_size));
|
|
1077
1082
|
NAPI_STATUS_RETURN(GetProperty(env, options, "initialAutoReadaheadSize", tableOptions.initial_auto_readahead_size));
|
|
1078
|
-
NAPI_STATUS_RETURN(
|
|
1083
|
+
NAPI_STATUS_RETURN(
|
|
1084
|
+
GetProperty(env, options, "numFileReadsForAutoReadahead", tableOptions.num_file_reads_for_auto_readahead));
|
|
1079
1085
|
|
|
1080
1086
|
columnOptions.table_factory.reset(rocksdb::NewBlockBasedTableFactory(tableOptions));
|
|
1081
1087
|
|
|
@@ -1139,10 +1145,12 @@ NAPI_METHOD(db_open) {
|
|
|
1139
1145
|
walCompression ? rocksdb::CompressionType::kZSTD : rocksdb::CompressionType::kNoCompression;
|
|
1140
1146
|
|
|
1141
1147
|
dbOptions.avoid_unnecessary_blocking_io = true;
|
|
1142
|
-
NAPI_STATUS_THROWS(
|
|
1148
|
+
NAPI_STATUS_THROWS(
|
|
1149
|
+
GetProperty(env, options, "avoidUnnecessaryBlockingIO", dbOptions.avoid_unnecessary_blocking_io));
|
|
1143
1150
|
|
|
1144
1151
|
dbOptions.create_missing_column_families = true;
|
|
1145
|
-
NAPI_STATUS_THROWS(
|
|
1152
|
+
NAPI_STATUS_THROWS(
|
|
1153
|
+
GetProperty(env, options, "createMissingColumnFamilies", dbOptions.create_missing_column_families));
|
|
1146
1154
|
|
|
1147
1155
|
NAPI_STATUS_THROWS(GetProperty(env, options, "writeDbIdToManifest", dbOptions.write_dbid_to_manifest));
|
|
1148
1156
|
|
|
@@ -1174,7 +1182,8 @@ NAPI_METHOD(db_open) {
|
|
|
1174
1182
|
|
|
1175
1183
|
NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOReads", dbOptions.use_direct_reads));
|
|
1176
1184
|
|
|
1177
|
-
NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOForFlushAndCompaction",
|
|
1185
|
+
NAPI_STATUS_THROWS(GetProperty(env, options, "useDirectIOForFlushAndCompaction",
|
|
1186
|
+
dbOptions.use_direct_io_for_flush_and_compaction));
|
|
1178
1187
|
|
|
1179
1188
|
NAPI_STATUS_THROWS(GetProperty(env, options, "compactionReadaheadSize", dbOptions.compaction_readahead_size));
|
|
1180
1189
|
|
|
@@ -1344,9 +1353,8 @@ NAPI_METHOD(db_get_many_sync) {
|
|
|
1344
1353
|
}
|
|
1345
1354
|
|
|
1346
1355
|
rocksdb::ReadOptions readOptions;
|
|
1347
|
-
readOptions.deadline = timeout
|
|
1348
|
-
|
|
1349
|
-
: std::chrono::microseconds::zero();
|
|
1356
|
+
readOptions.deadline = timeout ? std::chrono::microseconds(database->db->GetEnv()->NowMicros() + timeout * 1000)
|
|
1357
|
+
: std::chrono::microseconds::zero();
|
|
1350
1358
|
|
|
1351
1359
|
readOptions.fill_cache = false;
|
|
1352
1360
|
NAPI_STATUS_THROWS(GetProperty(env, argv[2], "fillCache", readOptions.fill_cache));
|
|
@@ -1432,8 +1440,8 @@ NAPI_METHOD(db_get_many) {
|
|
|
1432
1440
|
state.readOptions.value_size_soft_limit = std::numeric_limits<int32_t>::max();
|
|
1433
1441
|
NAPI_STATUS_THROWS(GetProperty(env, argv[2], "highWaterMarkBytes", state.readOptions.value_size_soft_limit));
|
|
1434
1442
|
|
|
1435
|
-
runAsync(
|
|
1436
|
-
"leveldown.get_many", env, callback,
|
|
1443
|
+
runAsync(
|
|
1444
|
+
std::move(state), "leveldown.get_many", env, callback,
|
|
1437
1445
|
[=](auto& state) {
|
|
1438
1446
|
std::vector<rocksdb::Slice> keys;
|
|
1439
1447
|
keys.reserve(count);
|
|
@@ -1444,7 +1452,8 @@ NAPI_METHOD(db_get_many) {
|
|
|
1444
1452
|
state.statuses.resize(count);
|
|
1445
1453
|
state.values.resize(count);
|
|
1446
1454
|
|
|
1447
|
-
database->db->MultiGet(state.readOptions, column, count, keys.data(), state.values.data(),
|
|
1455
|
+
database->db->MultiGet(state.readOptions, column, count, keys.data(), state.values.data(),
|
|
1456
|
+
state.statuses.data());
|
|
1448
1457
|
|
|
1449
1458
|
return rocksdb::Status::OK();
|
|
1450
1459
|
},
|
|
@@ -1620,16 +1629,13 @@ NAPI_METHOD(db_flush_wal) {
|
|
|
1620
1629
|
|
|
1621
1630
|
struct State {};
|
|
1622
1631
|
runAsync<State>(
|
|
1623
|
-
"leveldown.flush_wal", env, callback,
|
|
1624
|
-
[=](auto& state) {
|
|
1625
|
-
return database->db->FlushWAL(sync);
|
|
1626
|
-
},
|
|
1632
|
+
"leveldown.flush_wal", env, callback, [=](auto& state) { return database->db->FlushWAL(sync); },
|
|
1627
1633
|
[](auto& state, auto env, auto& argv) { return napi_ok; });
|
|
1628
1634
|
|
|
1629
1635
|
return 0;
|
|
1630
1636
|
}
|
|
1631
1637
|
|
|
1632
|
-
NAPI_METHOD(
|
|
1638
|
+
NAPI_METHOD(iterator_init_sync) {
|
|
1633
1639
|
NAPI_ARGV(2);
|
|
1634
1640
|
|
|
1635
1641
|
napi_value result;
|
|
@@ -1649,6 +1655,38 @@ NAPI_METHOD(iterator_init) {
|
|
|
1649
1655
|
NAPI_METHOD(iterator_seek) {
|
|
1650
1656
|
NAPI_ARGV(2);
|
|
1651
1657
|
|
|
1658
|
+
try {
|
|
1659
|
+
Iterator* iterator;
|
|
1660
|
+
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&iterator)));
|
|
1661
|
+
|
|
1662
|
+
rocksdb::PinnableSlice target;
|
|
1663
|
+
|
|
1664
|
+
struct State {
|
|
1665
|
+
rocksdb::PinnableSlice target;
|
|
1666
|
+
} state;
|
|
1667
|
+
|
|
1668
|
+
NAPI_STATUS_THROWS(GetValue(env, argv[1], state.target));
|
|
1669
|
+
|
|
1670
|
+
auto callback = argv[2];
|
|
1671
|
+
|
|
1672
|
+
runAsync<State>(
|
|
1673
|
+
std::move(state), "leveldown.iterator_seek", env, callback,
|
|
1674
|
+
[=](auto& state) {
|
|
1675
|
+
iterator->Seek(state.target);
|
|
1676
|
+
return iterator->Status();
|
|
1677
|
+
},
|
|
1678
|
+
[](auto& state, auto env, auto& argv) { return napi_ok; });
|
|
1679
|
+
} catch (const std::exception& e) {
|
|
1680
|
+
napi_throw_error(env, nullptr, e.what());
|
|
1681
|
+
return nullptr;
|
|
1682
|
+
}
|
|
1683
|
+
|
|
1684
|
+
return 0;
|
|
1685
|
+
}
|
|
1686
|
+
|
|
1687
|
+
NAPI_METHOD(iterator_seek_sync) {
|
|
1688
|
+
NAPI_ARGV(2);
|
|
1689
|
+
|
|
1652
1690
|
try {
|
|
1653
1691
|
Iterator* iterator;
|
|
1654
1692
|
NAPI_STATUS_THROWS(napi_get_value_external(env, argv[0], reinterpret_cast<void**>(&iterator)));
|
|
@@ -1657,6 +1695,8 @@ NAPI_METHOD(iterator_seek) {
|
|
|
1657
1695
|
NAPI_STATUS_THROWS(GetValue(env, argv[1], target));
|
|
1658
1696
|
|
|
1659
1697
|
iterator->Seek(target);
|
|
1698
|
+
|
|
1699
|
+
ROCKS_STATUS_THROWS_NAPI(iterator->Status());
|
|
1660
1700
|
} catch (const std::exception& e) {
|
|
1661
1701
|
napi_throw_error(env, nullptr, e.what());
|
|
1662
1702
|
return nullptr;
|
|
@@ -1665,7 +1705,7 @@ NAPI_METHOD(iterator_seek) {
|
|
|
1665
1705
|
return 0;
|
|
1666
1706
|
}
|
|
1667
1707
|
|
|
1668
|
-
NAPI_METHOD(
|
|
1708
|
+
NAPI_METHOD(iterator_close_sync) {
|
|
1669
1709
|
NAPI_ARGV(1);
|
|
1670
1710
|
|
|
1671
1711
|
try {
|
|
@@ -1996,7 +2036,7 @@ NAPI_METHOD(updates_init) {
|
|
|
1996
2036
|
|
|
1997
2037
|
napi_value result;
|
|
1998
2038
|
auto updates =
|
|
1999
|
-
|
|
2039
|
+
std::unique_ptr<Updates>(new Updates(database, since, keys, values, data, column, keyEncoding, valueEncoding));
|
|
2000
2040
|
|
|
2001
2041
|
NAPI_STATUS_THROWS(napi_create_external(env, updates.get(), Finalize<Updates>, updates.get(), &result));
|
|
2002
2042
|
updates.release();
|
|
@@ -2131,9 +2171,10 @@ NAPI_INIT() {
|
|
|
2131
2171
|
NAPI_EXPORT_FUNCTION(db_compact_range);
|
|
2132
2172
|
NAPI_EXPORT_FUNCTION(db_flush_wal);
|
|
2133
2173
|
|
|
2134
|
-
NAPI_EXPORT_FUNCTION(
|
|
2174
|
+
NAPI_EXPORT_FUNCTION(iterator_init_sync);
|
|
2135
2175
|
NAPI_EXPORT_FUNCTION(iterator_seek);
|
|
2136
|
-
NAPI_EXPORT_FUNCTION(
|
|
2176
|
+
NAPI_EXPORT_FUNCTION(iterator_seek_sync);
|
|
2177
|
+
NAPI_EXPORT_FUNCTION(iterator_close_sync);
|
|
2137
2178
|
NAPI_EXPORT_FUNCTION(iterator_nextv);
|
|
2138
2179
|
NAPI_EXPORT_FUNCTION(iterator_nextv_sync);
|
|
2139
2180
|
|
package/build.sh
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
set -e
|
|
3
|
-
export DOCKER_HOST=${DOCKER_HOST:-ssh://root@test-srv3.hq.bmux}
|
|
4
3
|
|
|
5
4
|
echo "Building image..."
|
|
6
5
|
docker build --iidfile prebuilds.iid .
|
|
@@ -14,4 +13,4 @@ echo "Cleaning up..."
|
|
|
14
13
|
docker rm $ID > /dev/null
|
|
15
14
|
rm prebuilds.iid
|
|
16
15
|
|
|
17
|
-
echo "All done!"
|
|
16
|
+
echo "All done!"
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
# This file @generated by:
|
|
2
2
|
#$ python3 buckifier/buckify_rocksdb.py
|
|
3
3
|
# --> DO NOT EDIT MANUALLY <--
|
|
4
|
-
# This file is a
|
|
5
|
-
# only be validated by
|
|
4
|
+
# This file is a Meta-specific integration for buck builds, so can
|
|
5
|
+
# only be validated by Meta employees.
|
|
6
6
|
load("//rocks/buckifier:defs.bzl", "cpp_library_wrapper","rocks_cpp_library_wrapper","cpp_binary_wrapper","cpp_unittest_wrapper","fancy_bench_wrapper","add_c_test_wrapper")
|
|
7
7
|
load("@fbcode_macros//build_defs:export_files.bzl", "export_file")
|
|
8
8
|
|
|
9
9
|
|
|
10
|
+
oncall("rocksdb_point_of_contact")
|
|
11
|
+
|
|
10
12
|
cpp_library_wrapper(name="rocksdb_lib", srcs=[
|
|
11
13
|
"cache/cache.cc",
|
|
12
14
|
"cache/cache_entry_roles.cc",
|
|
@@ -4844,6 +4846,12 @@ cpp_unittest_wrapper(name="db_encryption_test",
|
|
|
4844
4846
|
extra_compiler_flags=[])
|
|
4845
4847
|
|
|
4846
4848
|
|
|
4849
|
+
cpp_unittest_wrapper(name="db_etc3_test",
|
|
4850
|
+
srcs=["db/db_etc3_test.cc"],
|
|
4851
|
+
deps=[":rocksdb_test_lib"],
|
|
4852
|
+
extra_compiler_flags=[])
|
|
4853
|
+
|
|
4854
|
+
|
|
4847
4855
|
cpp_unittest_wrapper(name="db_flush_test",
|
|
4848
4856
|
srcs=["db/db_flush_test.cc"],
|
|
4849
4857
|
deps=[":rocksdb_test_lib"],
|
|
@@ -5194,12 +5202,6 @@ cpp_unittest_wrapper(name="import_column_family_test",
|
|
|
5194
5202
|
extra_compiler_flags=[])
|
|
5195
5203
|
|
|
5196
5204
|
|
|
5197
|
-
cpp_unittest_wrapper(name="index_builder_test",
|
|
5198
|
-
srcs=["table/block_based/index_builder_test.cc"],
|
|
5199
|
-
deps=[":rocksdb_test_lib"],
|
|
5200
|
-
extra_compiler_flags=[])
|
|
5201
|
-
|
|
5202
|
-
|
|
5203
5205
|
cpp_unittest_wrapper(name="inlineskiplist_test",
|
|
5204
5206
|
srcs=["memtable/inlineskiplist_test.cc"],
|
|
5205
5207
|
deps=[":rocksdb_test_lib"],
|
|
@@ -80,6 +80,7 @@ if(NOT CMAKE_BUILD_TYPE)
|
|
|
80
80
|
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE STRING
|
|
81
81
|
"Default BUILD_TYPE is ${default_build_type}" FORCE)
|
|
82
82
|
endif()
|
|
83
|
+
message(STATUS "CMAKE_BUILD_TYPE is set to ${CMAKE_BUILD_TYPE}")
|
|
83
84
|
|
|
84
85
|
find_program(CCACHE_FOUND ccache)
|
|
85
86
|
if(CCACHE_FOUND)
|
|
@@ -132,7 +133,9 @@ else()
|
|
|
132
133
|
option(WITH_GFLAGS "build with GFlags" ON)
|
|
133
134
|
endif()
|
|
134
135
|
set(GFLAGS_LIB)
|
|
135
|
-
|
|
136
|
+
# Skip all gflags detection and setup when USE_FOLLY or USE_COROUTINES is enabled
|
|
137
|
+
# since Folly provides its own gflags (USE_COROUTINES automatically sets USE_FOLLY)
|
|
138
|
+
if(WITH_GFLAGS AND NOT USE_FOLLY AND NOT USE_COROUTINES)
|
|
136
139
|
# Config with namespace available since gflags 2.2.2
|
|
137
140
|
option(GFLAGS_USE_TARGET_NAMESPACE "Use gflags import target with namespace." ON)
|
|
138
141
|
find_package(gflags CONFIG)
|
|
@@ -151,6 +154,9 @@ else()
|
|
|
151
154
|
include_directories(${GFLAGS_INCLUDE_DIR})
|
|
152
155
|
list(APPEND THIRDPARTY_LIBS ${GFLAGS_LIB})
|
|
153
156
|
add_definitions(-DGFLAGS=1)
|
|
157
|
+
elseif(WITH_GFLAGS AND (USE_FOLLY OR USE_COROUTINES))
|
|
158
|
+
# Still set the DGFLAGS=1 define when using Folly since Folly provides gflags
|
|
159
|
+
add_definitions(-DGFLAGS=1)
|
|
154
160
|
endif()
|
|
155
161
|
|
|
156
162
|
if(WITH_SNAPPY)
|
|
@@ -213,6 +219,10 @@ if(MSVC)
|
|
|
213
219
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi /nologo /EHsc /GS /Gd /GR /GF /fp:precise /Zc:wchar_t /Zc:forScope /errorReport:queue")
|
|
214
220
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /FC /d2Zi+ /W4 /wd4127 /wd4996 /wd4100 /wd4324")
|
|
215
221
|
endif()
|
|
222
|
+
if(CMAKE_BUILD_TYPE STREQUAL "Release")
|
|
223
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /DNDEBUG")
|
|
224
|
+
message(STATUS "Setting /DNDEBUG as CMAKE_BUILD_TYPE is set to ${CMAKE_BUILD_TYPE}")
|
|
225
|
+
endif()
|
|
216
226
|
else()
|
|
217
227
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W -Wextra -Wall -pthread")
|
|
218
228
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsign-compare -Wshadow -Wno-unused-parameter -Wno-unused-variable -Woverloaded-virtual -Wnon-virtual-dtor -Wno-missing-field-initializers -Wno-strict-aliasing -Wno-invalid-offsetof")
|
|
@@ -642,6 +652,12 @@ if(USE_FOLLY)
|
|
|
642
652
|
${FOLLY_INST_PATH}/lib/cmake/folly/folly-targets.cmake)
|
|
643
653
|
|
|
644
654
|
include(${FOLLY_INST_PATH}/lib/cmake/folly/folly-config.cmake)
|
|
655
|
+
|
|
656
|
+
# Fix gflags library name for debug builds
|
|
657
|
+
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
658
|
+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath=${GFLAGS_INST_PATH}/lib")
|
|
659
|
+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GFLAGS_INST_PATH}/lib/libgflags_debug.so.2.2")
|
|
660
|
+
endif()
|
|
645
661
|
endif()
|
|
646
662
|
|
|
647
663
|
add_compile_definitions(USE_FOLLY FOLLY_NO_CONFIG HAVE_CXX11_ATOMIC)
|
|
@@ -1082,12 +1098,21 @@ if(USE_FOLLY_LITE)
|
|
|
1082
1098
|
third-party/folly/folly/synchronization/DistributedMutex.cpp
|
|
1083
1099
|
third-party/folly/folly/synchronization/ParkingLot.cpp)
|
|
1084
1100
|
include_directories(${PROJECT_SOURCE_DIR}/third-party/folly)
|
|
1101
|
+
# Add boost to the include path
|
|
1085
1102
|
exec_program(python3 ${PROJECT_SOURCE_DIR}/third-party/folly ARGS
|
|
1086
1103
|
build/fbcode_builder/getdeps.py show-source-dir boost OUTPUT_VARIABLE
|
|
1087
1104
|
BOOST_SOURCE_PATH)
|
|
1088
1105
|
exec_program(ls ARGS -d ${BOOST_SOURCE_PATH}/boost* OUTPUT_VARIABLE
|
|
1089
1106
|
BOOST_INCLUDE_DIR)
|
|
1090
1107
|
include_directories(${BOOST_INCLUDE_DIR})
|
|
1108
|
+
# Add fmt to the include path
|
|
1109
|
+
exec_program(python3 ${PROJECT_SOURCE_DIR}/third-party/folly ARGS
|
|
1110
|
+
build/fbcode_builder/getdeps.py show-source-dir fmt OUTPUT_VARIABLE
|
|
1111
|
+
FMT_SOURCE_PATH)
|
|
1112
|
+
exec_program(ls ARGS -d ${FMT_SOURCE_PATH}/fmt*/include OUTPUT_VARIABLE
|
|
1113
|
+
FMT_INCLUDE_DIR)
|
|
1114
|
+
include_directories(${FMT_INCLUDE_DIR})
|
|
1115
|
+
|
|
1091
1116
|
add_definitions(-DUSE_FOLLY -DFOLLY_NO_CONFIG)
|
|
1092
1117
|
list(APPEND THIRDPARTY_LIBS glog)
|
|
1093
1118
|
endif()
|
|
@@ -1359,6 +1384,7 @@ if(WITH_TESTS)
|
|
|
1359
1384
|
db/db_clip_test.cc
|
|
1360
1385
|
db/db_dynamic_level_test.cc
|
|
1361
1386
|
db/db_encryption_test.cc
|
|
1387
|
+
db/db_etc3_test.cc
|
|
1362
1388
|
db/db_flush_test.cc
|
|
1363
1389
|
db/db_inplace_update_test.cc
|
|
1364
1390
|
db/db_io_failure_test.cc
|
|
@@ -1452,7 +1478,6 @@ if(WITH_TESTS)
|
|
|
1452
1478
|
table/block_based/block_based_table_reader_test.cc
|
|
1453
1479
|
table/block_based/block_test.cc
|
|
1454
1480
|
table/block_based/data_block_hash_index_test.cc
|
|
1455
|
-
table/block_based/index_builder_test.cc
|
|
1456
1481
|
table/block_based/full_filter_block_test.cc
|
|
1457
1482
|
table/block_based/partitioned_filter_block_test.cc
|
|
1458
1483
|
table/cleanable_test.cc
|
|
@@ -296,6 +296,28 @@ $(info $(shell $(CC) --version))
|
|
|
296
296
|
$(info $(shell $(CXX) --version))
|
|
297
297
|
endif
|
|
298
298
|
|
|
299
|
+
# ccache support
|
|
300
|
+
# Set USE_CCACHE=1 to enable ccache, or let it auto-detect
|
|
301
|
+
ifndef USE_CCACHE
|
|
302
|
+
CCACHE := $(shell which ccache 2>/dev/null)
|
|
303
|
+
ifneq ($(CCACHE),)
|
|
304
|
+
USE_CCACHE := 1
|
|
305
|
+
else
|
|
306
|
+
USE_CCACHE := 0
|
|
307
|
+
endif
|
|
308
|
+
endif
|
|
309
|
+
|
|
310
|
+
ifeq ($(USE_CCACHE), 1)
|
|
311
|
+
CCACHE := $(shell which ccache 2>/dev/null)
|
|
312
|
+
ifneq ($(CCACHE),)
|
|
313
|
+
$(info Using ccache: $(CCACHE))
|
|
314
|
+
CC := $(CCACHE) $(CC)
|
|
315
|
+
CXX := $(CCACHE) $(CXX)
|
|
316
|
+
else
|
|
317
|
+
$(warning ccache requested but not found in PATH)
|
|
318
|
+
endif
|
|
319
|
+
endif
|
|
320
|
+
|
|
299
321
|
missing_make_config_paths := $(shell \
|
|
300
322
|
grep "\./\S*\|/\S*" -o $(CURDIR)/make_config.mk | \
|
|
301
323
|
while read path; \
|
|
@@ -446,83 +468,7 @@ else
|
|
|
446
468
|
PLATFORM_CXXFLAGS += -isystem $(GTEST_DIR)
|
|
447
469
|
endif
|
|
448
470
|
|
|
449
|
-
|
|
450
|
-
# It is not validated for general use.
|
|
451
|
-
#
|
|
452
|
-
# USE_FOLLY links the build targets with libfolly.a. The latter could be
|
|
453
|
-
# built using 'make build_folly', or built externally and specified in
|
|
454
|
-
# the CXXFLAGS and EXTRA_LDFLAGS env variables. The build_detect_platform
|
|
455
|
-
# script tries to detect if an external folly dependency has been specified.
|
|
456
|
-
# If not, it exports FOLLY_PATH to the path of the installed Folly and
|
|
457
|
-
# dependency libraries.
|
|
458
|
-
#
|
|
459
|
-
# USE_FOLLY_LITE cherry picks source files from Folly to include in the
|
|
460
|
-
# RocksDB library. Its faster and has fewer dependencies on 3rd party
|
|
461
|
-
# libraries, but with limited functionality. For example, coroutine
|
|
462
|
-
# functionality is not available.
|
|
463
|
-
ifeq ($(USE_FOLLY),1)
|
|
464
|
-
ifeq ($(USE_FOLLY_LITE),1)
|
|
465
|
-
$(error Please specify only one of USE_FOLLY and USE_FOLLY_LITE)
|
|
466
|
-
endif
|
|
467
|
-
ifneq ($(strip $(FOLLY_PATH)),)
|
|
468
|
-
BOOST_PATH = $(shell (ls -d $(FOLLY_PATH)/../boost*))
|
|
469
|
-
DBL_CONV_PATH = $(shell (ls -d $(FOLLY_PATH)/../double-conversion*))
|
|
470
|
-
GFLAGS_PATH = $(shell (ls -d $(FOLLY_PATH)/../gflags*))
|
|
471
|
-
GLOG_PATH = $(shell (ls -d $(FOLLY_PATH)/../glog*))
|
|
472
|
-
LIBEVENT_PATH = $(shell (ls -d $(FOLLY_PATH)/../libevent*))
|
|
473
|
-
XZ_PATH = $(shell (ls -d $(FOLLY_PATH)/../xz*))
|
|
474
|
-
LIBSODIUM_PATH = $(shell (ls -d $(FOLLY_PATH)/../libsodium*))
|
|
475
|
-
FMT_PATH = $(shell (ls -d $(FOLLY_PATH)/../fmt*))
|
|
476
|
-
|
|
477
|
-
# For some reason, glog and fmt libraries are under either lib or lib64
|
|
478
|
-
GLOG_LIB_PATH = $(shell (ls -d $(GLOG_PATH)/lib*))
|
|
479
|
-
FMT_LIB_PATH = $(shell (ls -d $(FMT_PATH)/lib*))
|
|
480
|
-
|
|
481
|
-
# AIX: pre-defined system headers are surrounded by an extern "C" block
|
|
482
|
-
ifeq ($(PLATFORM), OS_AIX)
|
|
483
|
-
PLATFORM_CCFLAGS += -I$(BOOST_PATH)/include -I$(DBL_CONV_PATH)/include -I$(GLOG_PATH)/include -I$(LIBEVENT_PATH)/include -I$(XZ_PATH)/include -I$(LIBSODIUM_PATH)/include -I$(FOLLY_PATH)/include -I$(FMT_PATH)/include
|
|
484
|
-
PLATFORM_CXXFLAGS += -I$(BOOST_PATH)/include -I$(DBL_CONV_PATH)/include -I$(GLOG_PATH)/include -I$(LIBEVENT_PATH)/include -I$(XZ_PATH)/include -I$(LIBSODIUM_PATH)/include -I$(FOLLY_PATH)/include -I$(FMT_PATH)/include
|
|
485
|
-
else
|
|
486
|
-
PLATFORM_CCFLAGS += -isystem $(BOOST_PATH)/include -isystem $(DBL_CONV_PATH)/include -isystem $(GLOG_PATH)/include -isystem $(LIBEVENT_PATH)/include -isystem $(XZ_PATH)/include -isystem $(LIBSODIUM_PATH)/include -isystem $(FOLLY_PATH)/include -isystem $(FMT_PATH)/include
|
|
487
|
-
PLATFORM_CXXFLAGS += -isystem $(BOOST_PATH)/include -isystem $(DBL_CONV_PATH)/include -isystem $(GLOG_PATH)/include -isystem $(LIBEVENT_PATH)/include -isystem $(XZ_PATH)/include -isystem $(LIBSODIUM_PATH)/include -isystem $(FOLLY_PATH)/include -isystem $(FMT_PATH)/include
|
|
488
|
-
endif
|
|
489
|
-
|
|
490
|
-
# Add -ldl at the end as gcc resolves a symbol in a library by searching only in libraries specified later
|
|
491
|
-
# in the command line
|
|
492
|
-
PLATFORM_LDFLAGS += $(FOLLY_PATH)/lib/libfolly.a $(BOOST_PATH)/lib/libboost_context.a $(BOOST_PATH)/lib/libboost_filesystem.a $(BOOST_PATH)/lib/libboost_atomic.a $(BOOST_PATH)/lib/libboost_program_options.a $(BOOST_PATH)/lib/libboost_regex.a $(BOOST_PATH)/lib/libboost_system.a $(BOOST_PATH)/lib/libboost_thread.a $(DBL_CONV_PATH)/lib/libdouble-conversion.a $(FMT_LIB_PATH)/libfmt.a $(GLOG_LIB_PATH)/libglog.so $(GFLAGS_PATH)/lib/libgflags.so.2.2 $(LIBEVENT_PATH)/lib/libevent-2.1.so -ldl
|
|
493
|
-
PLATFORM_LDFLAGS += -Wl,-rpath=$(GFLAGS_PATH)/lib -Wl,-rpath=$(GLOG_LIB_PATH) -Wl,-rpath=$(LIBEVENT_PATH)/lib -Wl,-rpath=$(LIBSODIUM_PATH)/lib -Wl,-rpath=$(LIBEVENT_PATH)/lib
|
|
494
|
-
endif
|
|
495
|
-
PLATFORM_CCFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
|
|
496
|
-
PLATFORM_CXXFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
|
|
497
|
-
endif
|
|
498
|
-
|
|
499
|
-
ifeq ($(USE_FOLLY_LITE),1)
|
|
500
|
-
# Path to the Folly source code and include files
|
|
501
|
-
FOLLY_DIR = ./third-party/folly
|
|
502
|
-
ifneq ($(strip $(BOOST_SOURCE_PATH)),)
|
|
503
|
-
BOOST_INCLUDE = $(shell (ls -d $(BOOST_SOURCE_PATH)/boost*/))
|
|
504
|
-
# AIX: pre-defined system headers are surrounded by an extern "C" block
|
|
505
|
-
ifeq ($(PLATFORM), OS_AIX)
|
|
506
|
-
PLATFORM_CCFLAGS += -I$(BOOST_INCLUDE)
|
|
507
|
-
PLATFORM_CXXFLAGS += -I$(BOOST_INCLUDE)
|
|
508
|
-
else
|
|
509
|
-
PLATFORM_CCFLAGS += -isystem $(BOOST_INCLUDE)
|
|
510
|
-
PLATFORM_CXXFLAGS += -isystem $(BOOST_INCLUDE)
|
|
511
|
-
endif
|
|
512
|
-
endif # BOOST_SOURCE_PATH
|
|
513
|
-
# AIX: pre-defined system headers are surrounded by an extern "C" block
|
|
514
|
-
ifeq ($(PLATFORM), OS_AIX)
|
|
515
|
-
PLATFORM_CCFLAGS += -I$(FOLLY_DIR)
|
|
516
|
-
PLATFORM_CXXFLAGS += -I$(FOLLY_DIR)
|
|
517
|
-
else
|
|
518
|
-
PLATFORM_CCFLAGS += -isystem $(FOLLY_DIR)
|
|
519
|
-
PLATFORM_CXXFLAGS += -isystem $(FOLLY_DIR)
|
|
520
|
-
endif
|
|
521
|
-
PLATFORM_CCFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
|
|
522
|
-
PLATFORM_CXXFLAGS += -DUSE_FOLLY -DFOLLY_NO_CONFIG
|
|
523
|
-
# TODO: fix linking with fbcode compiler config
|
|
524
|
-
PLATFORM_LDFLAGS += -lglog
|
|
525
|
-
endif
|
|
471
|
+
include folly.mk
|
|
526
472
|
|
|
527
473
|
ifdef TEST_CACHE_LINE_SIZE
|
|
528
474
|
PLATFORM_CCFLAGS += -DTEST_CACHE_LINE_SIZE=$(TEST_CACHE_LINE_SIZE)
|
|
@@ -683,6 +629,7 @@ am__v_CCH_1 =
|
|
|
683
629
|
%.h.pub: %.h # .h.pub not actually created, so re-checked on each invocation
|
|
684
630
|
$(AM_V_CCH) cd include/ && echo '#include "$(patsubst include/%,%,$<)"' | \
|
|
685
631
|
$(CXX) -std=$(or $(ROCKSDB_CXX_STANDARD),c++20) -I. -DROCKSDB_NAMESPACE=42 -x c++ -c - -o /dev/null
|
|
632
|
+
build_tools/check-public-header.sh $<
|
|
686
633
|
|
|
687
634
|
check-headers: $(HEADER_OK_FILES)
|
|
688
635
|
|
|
@@ -1496,6 +1443,9 @@ db_test: $(OBJ_DIR)/db/db_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
|
1496
1443
|
db_test2: $(OBJ_DIR)/db/db_test2.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1497
1444
|
$(AM_LINK)
|
|
1498
1445
|
|
|
1446
|
+
db_etc3_test: $(OBJ_DIR)/db/db_etc3_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1447
|
+
$(AM_LINK)
|
|
1448
|
+
|
|
1499
1449
|
compression_test: $(OBJ_DIR)/util/compression_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1500
1450
|
$(AM_LINK)
|
|
1501
1451
|
|
|
@@ -1739,9 +1689,6 @@ block_test: $(OBJ_DIR)/table/block_based/block_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
|
1739
1689
|
data_block_hash_index_test: $(OBJ_DIR)/table/block_based/data_block_hash_index_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1740
1690
|
$(AM_LINK)
|
|
1741
1691
|
|
|
1742
|
-
index_builder_test: $(OBJ_DIR)/table/block_based/index_builder_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1743
|
-
$(AM_LINK)
|
|
1744
|
-
|
|
1745
1692
|
inlineskiplist_test: $(OBJ_DIR)/memtable/inlineskiplist_test.o $(TEST_LIBRARY) $(LIBRARY)
|
|
1746
1693
|
$(AM_LINK)
|
|
1747
1694
|
|
|
@@ -2495,42 +2442,6 @@ commit_prereq:
|
|
|
2495
2442
|
false # J=$(J) build_tools/precommit_checker.py unit clang_unit release clang_release tsan asan ubsan lite unit_non_shm
|
|
2496
2443
|
# $(MAKE) clean && $(MAKE) jclean && $(MAKE) rocksdbjava;
|
|
2497
2444
|
|
|
2498
|
-
FOLLY_COMMIT_HASH = e95383b7c8b5b1e46cf47acf2f317d54f93c8268
|
|
2499
|
-
|
|
2500
|
-
# For public CI runs, checkout folly in a way that can build with RocksDB.
|
|
2501
|
-
# This is mostly intended as a test-only simulation of Meta-internal folly
|
|
2502
|
-
# integration.
|
|
2503
|
-
checkout_folly:
|
|
2504
|
-
if [ -e third-party/folly ]; then \
|
|
2505
|
-
cd third-party/folly && ${GIT_COMMAND} fetch origin; \
|
|
2506
|
-
else \
|
|
2507
|
-
cd third-party && ${GIT_COMMAND} clone https://github.com/facebook/folly.git; \
|
|
2508
|
-
fi
|
|
2509
|
-
@# Pin to a particular version for public CI, so that PR authors don't
|
|
2510
|
-
@# need to worry about folly breaking our integration. Update periodically
|
|
2511
|
-
cd third-party/folly && git reset --hard $(FOLLY_COMMIT_HASH)
|
|
2512
|
-
@# Apparently missing include
|
|
2513
|
-
perl -pi -e 's/(#include <atomic>)/$$1\n#include <cstring>/' third-party/folly/folly/lang/Exception.h
|
|
2514
|
-
@# Warning-as-error on memcpy
|
|
2515
|
-
perl -pi -e 's/memcpy.&ptr/memcpy((void*)&ptr/' third-party/folly/folly/lang/Exception.cpp
|
|
2516
|
-
@# const mismatch
|
|
2517
|
-
perl -pi -e 's/: environ/: (const char**)(environ)/' third-party/folly/folly/Subprocess.cpp
|
|
2518
|
-
@# NOTE: boost source will be needed for any build including `USE_FOLLY_LITE` builds as those depend on boost headers
|
|
2519
|
-
cd third-party/folly && $(PYTHON) build/fbcode_builder/getdeps.py fetch boost
|
|
2520
|
-
|
|
2521
|
-
CXX_M_FLAGS = $(filter -m%, $(CXXFLAGS))
|
|
2522
|
-
|
|
2523
|
-
build_folly:
|
|
2524
|
-
FOLLY_INST_PATH=`cd third-party/folly; $(PYTHON) build/fbcode_builder/getdeps.py show-inst-dir`; \
|
|
2525
|
-
if [ "$$FOLLY_INST_PATH" ]; then \
|
|
2526
|
-
rm -rf $${FOLLY_INST_PATH}/../../*; \
|
|
2527
|
-
else \
|
|
2528
|
-
echo "Please run checkout_folly first"; \
|
|
2529
|
-
false; \
|
|
2530
|
-
fi
|
|
2531
|
-
cd third-party/folly && \
|
|
2532
|
-
CXXFLAGS=" $(CXX_M_FLAGS) -DHAVE_CXX11_ATOMIC " $(PYTHON) build/fbcode_builder/getdeps.py build --no-tests
|
|
2533
|
-
|
|
2534
2445
|
# ---------------------------------------------------------------------------
|
|
2535
2446
|
# Build size testing
|
|
2536
2447
|
# ---------------------------------------------------------------------------
|
|
@@ -119,7 +119,7 @@ DEFINE_uint32(seed, 0, "Hashing/random seed to use. 0 = choose at random");
|
|
|
119
119
|
DEFINE_string(secondary_cache_uri, "",
|
|
120
120
|
"Full URI for creating a custom secondary cache object");
|
|
121
121
|
|
|
122
|
-
DEFINE_string(cache_type, "
|
|
122
|
+
DEFINE_string(cache_type, "hyper_clock_cache", "Type of block cache.");
|
|
123
123
|
|
|
124
124
|
DEFINE_bool(use_jemalloc_no_dump_allocator, false,
|
|
125
125
|
"Whether to use JemallocNoDumpAllocator");
|