@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.
Files changed (153) hide show
  1. package/binding.cc +79 -38
  2. package/build.sh +1 -2
  3. package/deps/rocksdb/rocksdb/BUCK +10 -8
  4. package/deps/rocksdb/rocksdb/CMakeLists.txt +27 -2
  5. package/deps/rocksdb/rocksdb/Makefile +27 -116
  6. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +1 -1
  7. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +101 -124
  8. package/deps/rocksdb/rocksdb/cache/clock_cache.h +47 -30
  9. package/deps/rocksdb/rocksdb/db/c.cc +793 -131
  10. package/deps/rocksdb/rocksdb/db/c_test.c +571 -0
  11. package/deps/rocksdb/rocksdb/db/compact_files_test.cc +226 -0
  12. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +4 -0
  13. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +95 -59
  14. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +2 -2
  15. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +45 -35
  16. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +8 -4
  17. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +1 -1
  18. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +11 -6
  19. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +8 -2
  20. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +47 -0
  21. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +12 -2
  22. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +82 -0
  23. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +2 -2
  24. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +1 -1
  25. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +69 -24
  26. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +9 -1
  27. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +65 -0
  28. package/deps/rocksdb/rocksdb/db/db_etc3_test.cc +161 -0
  29. package/deps/rocksdb/rocksdb/db/db_filesnapshot.cc +1 -0
  30. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +20 -7
  31. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +13 -0
  32. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +114 -39
  33. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_files.cc +3 -0
  34. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_follower.cc +3 -3
  35. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +1 -1
  36. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +39 -25
  37. package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +361 -0
  38. package/deps/rocksdb/rocksdb/db/db_options_test.cc +35 -0
  39. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +83 -0
  40. package/deps/rocksdb/rocksdb/db/db_test.cc +249 -4
  41. package/deps/rocksdb/rocksdb/db/db_test2.cc +3 -0
  42. package/deps/rocksdb/rocksdb/db/db_test_util.cc +2 -1
  43. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +3 -2
  44. package/deps/rocksdb/rocksdb/db/flush_job_test.cc +7 -7
  45. package/deps/rocksdb/rocksdb/db/listener_test.cc +7 -17
  46. package/deps/rocksdb/rocksdb/db/memtable_list_test.cc +4 -2
  47. package/deps/rocksdb/rocksdb/db/obsolete_files_test.cc +41 -0
  48. package/deps/rocksdb/rocksdb/db/repair.cc +2 -2
  49. package/deps/rocksdb/rocksdb/db/version_edit.h +7 -4
  50. package/deps/rocksdb/rocksdb/db/version_set.cc +299 -90
  51. package/deps/rocksdb/rocksdb/db/version_set.h +56 -9
  52. package/deps/rocksdb/rocksdb/db/version_set_test.cc +41 -39
  53. package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
  54. package/deps/rocksdb/rocksdb/db/wal_manager.cc +7 -1
  55. package/deps/rocksdb/rocksdb/db/wal_manager_test.cc +48 -10
  56. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +1 -0
  57. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +5 -1
  58. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +16 -5
  59. package/deps/rocksdb/rocksdb/env/env_test.cc +126 -41
  60. package/deps/rocksdb/rocksdb/env/fs_posix.cc +14 -7
  61. package/deps/rocksdb/rocksdb/env/io_posix.cc +304 -112
  62. package/deps/rocksdb/rocksdb/env/io_posix.h +16 -4
  63. package/deps/rocksdb/rocksdb/env/io_posix_test.cc +43 -0
  64. package/deps/rocksdb/rocksdb/folly.mk +148 -0
  65. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +29 -3
  66. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +73 -0
  67. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +246 -0
  68. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_filter.h +0 -2
  69. package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +15 -9
  70. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +19 -9
  71. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +1 -1
  72. package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +6 -4
  73. package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +14 -0
  74. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +67 -6
  75. package/deps/rocksdb/rocksdb/include/rocksdb/sst_file_writer.h +1 -7
  76. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
  77. package/deps/rocksdb/rocksdb/include/rocksdb/thread_status.h +6 -14
  78. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/backup_engine.h +8 -1
  79. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/env_mirror.h +2 -2
  80. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/ldb_cmd_execute_result.h +0 -4
  81. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +33 -5
  82. package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +6 -0
  83. package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
  84. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +2 -0
  85. package/deps/rocksdb/rocksdb/monitoring/thread_status_impl.cc +5 -2
  86. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.cc +2 -2
  87. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater.h +6 -6
  88. package/deps/rocksdb/rocksdb/monitoring/thread_status_updater_debug.cc +2 -2
  89. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.cc +10 -5
  90. package/deps/rocksdb/rocksdb/monitoring/thread_status_util.h +2 -2
  91. package/deps/rocksdb/rocksdb/options/cf_options.cc +15 -3
  92. package/deps/rocksdb/rocksdb/options/cf_options.h +7 -0
  93. package/deps/rocksdb/rocksdb/options/db_options.cc +27 -36
  94. package/deps/rocksdb/rocksdb/options/db_options.h +3 -2
  95. package/deps/rocksdb/rocksdb/options/options.cc +4 -0
  96. package/deps/rocksdb/rocksdb/options/options_helper.cc +8 -2
  97. package/deps/rocksdb/rocksdb/options/options_settable_test.cc +4 -1
  98. package/deps/rocksdb/rocksdb/options/options_test.cc +19 -3
  99. package/deps/rocksdb/rocksdb/src.mk +1 -1
  100. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +155 -32
  101. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +7 -3
  102. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +169 -125
  103. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +22 -7
  104. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +43 -24
  105. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +9 -5
  106. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +9 -8
  107. package/deps/rocksdb/rocksdb/table/block_based/filter_block.h +17 -0
  108. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +15 -5
  109. package/deps/rocksdb/rocksdb/table/block_based/filter_policy_internal.h +13 -18
  110. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.cc +29 -0
  111. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block.h +6 -0
  112. package/deps/rocksdb/rocksdb/table/block_based/full_filter_block_test.cc +15 -0
  113. package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +79 -19
  114. package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +48 -20
  115. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +51 -0
  116. package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.h +19 -0
  117. package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +1 -1
  118. package/deps/rocksdb/rocksdb/table/external_table.cc +2 -2
  119. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +3 -2
  120. package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +3 -1
  121. package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
  122. package/deps/rocksdb/rocksdb/table/table_reader.h +4 -2
  123. package/deps/rocksdb/rocksdb/table/table_test.cc +48 -39
  124. package/deps/rocksdb/rocksdb/test_util/sync_point.cc +4 -0
  125. package/deps/rocksdb/rocksdb/test_util/sync_point.h +32 -0
  126. package/deps/rocksdb/rocksdb/test_util/testutil.h +6 -2
  127. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +14 -4
  128. package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +8 -5
  129. package/deps/rocksdb/rocksdb/tools/ldb_cmd_test.cc +3 -2
  130. package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +63 -12
  131. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +16 -1
  132. package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +5 -1
  133. package/deps/rocksdb/rocksdb/util/bit_fields.h +133 -23
  134. package/deps/rocksdb/rocksdb/util/bloom_test.cc +2 -5
  135. package/deps/rocksdb/rocksdb/util/compression.cc +51 -23
  136. package/deps/rocksdb/rocksdb/util/compression_test.cc +525 -270
  137. package/deps/rocksdb/rocksdb/util/filter_bench.cc +3 -4
  138. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +11 -2
  139. package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -1
  140. package/deps/rocksdb/rocksdb/util/slice_test.cc +92 -0
  141. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +2 -2
  142. package/deps/rocksdb/rocksdb/util/thread_operation.h +2 -2
  143. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +2 -2
  144. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +19 -2
  145. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +75 -0
  146. package/deps/rocksdb/rocksdb/utilities/checkpoint/checkpoint_test.cc +1 -0
  147. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +303 -111
  148. package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +379 -0
  149. package/deps/rocksdb/rocksdb.gyp +6 -4
  150. package/iterator.js +66 -70
  151. package/package.json +6 -6
  152. package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
  153. 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", readOptions.background_purge_on_iterator_cleanup));
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>("iterator.nextv", env, callback,
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(GetProperty(env, options, "enableBlobGarbageCollection", columnOptions.enable_blob_garbage_collection));
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(GetProperty(env, options, "blobGarbageCollectionAgeCutoff", columnOptions.blob_garbage_collection_age_cutoff));
918
- NAPI_STATUS_RETURN(GetProperty(env, options, "blobGarbageCollectionForceThreshold", columnOptions.blob_garbage_collection_force_threshold));
919
- NAPI_STATUS_RETURN(GetProperty(env, options, "blobCompactionReadaheadSize", columnOptions.blob_compaction_readahead_size));
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 if (compressedRatio > 0.0) {
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 = rocksdb::BlockBasedTableOptions::IndexShorteningMode::kShortenSeparatorsAndSuccessor;
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(GetProperty(env, options, "dataBlockHashTableUtilRatio", tableOptions.data_block_hash_table_util_ratio));
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(GetProperty(env, options, "cacheIndexAndFilterBlocks", tableOptions.cache_index_and_filter_blocks));
1073
- NAPI_STATUS_RETURN(GetProperty(env, options, "cacheIndexAndFilterBlocksWithHighPriority", tableOptions.cache_index_and_filter_blocks_with_high_priority));
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(GetProperty(env, options, "numFileReadsForAutoReadahead", tableOptions.num_file_reads_for_auto_readahead));
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(GetProperty(env, options, "avoidUnnecessaryBlockingIO", dbOptions.avoid_unnecessary_blocking_io));
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(GetProperty(env, options, "createMissingColumnFamilies", dbOptions.create_missing_column_families));
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", dbOptions.use_direct_io_for_flush_and_compaction));
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
- ? std::chrono::microseconds(database->db->GetEnv()->NowMicros() + timeout * 1000)
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(std::move(state),
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(), state.statuses.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(iterator_init) {
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(iterator_close) {
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
- std::unique_ptr<Updates>(new Updates(database, since, keys, values, data, column, keyEncoding, valueEncoding));
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(iterator_init);
2174
+ NAPI_EXPORT_FUNCTION(iterator_init_sync);
2135
2175
  NAPI_EXPORT_FUNCTION(iterator_seek);
2136
- NAPI_EXPORT_FUNCTION(iterator_close);
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 Facebook-specific integration for buck builds, so can
5
- # only be validated by Facebook employees.
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
- if(WITH_GFLAGS)
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
- # This provides a Makefile simulation of a Meta-internal folly integration.
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, "lru_cache", "Type of block cache.");
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");