@nxtedition/rocksdb 13.5.13 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.cc +33 -2
- package/binding.gyp +2 -2
- package/chained-batch.js +9 -16
- package/deps/rocksdb/rocksdb/BUCK +18 -1
- package/deps/rocksdb/rocksdb/CMakeLists.txt +10 -3
- package/deps/rocksdb/rocksdb/Makefile +20 -9
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +90 -13
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +88 -75
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +44 -36
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +184 -148
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +5 -11
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +116 -47
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/cache/secondary_cache_adapter.cc +3 -6
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +1 -1
- package/deps/rocksdb/rocksdb/db/builder.cc +4 -2
- package/deps/rocksdb/rocksdb/db/c.cc +207 -0
- package/deps/rocksdb/rocksdb/db/c_test.c +72 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +3 -2
- package/deps/rocksdb/rocksdb/db/column_family.h +5 -0
- package/deps/rocksdb/rocksdb/db/compact_files_test.cc +4 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +2 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +51 -38
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +29 -12
- package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +5 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +566 -366
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +131 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +1 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +7 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +4 -4
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +13 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +12 -7
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.h +8 -10
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +97 -76
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +11 -14
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +1 -1
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +8 -0
- package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +16 -3
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +1 -0
- package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +448 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +22 -20
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +4 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +5 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +7 -3
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +104 -0
- package/deps/rocksdb/rocksdb/db/db_iter.h +4 -11
- package/deps/rocksdb/rocksdb/db/db_iterator_test.cc +331 -58
- package/deps/rocksdb/rocksdb/db/db_memtable_test.cc +129 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +64 -0
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +40 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +25 -15
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +42 -24
- package/deps/rocksdb/rocksdb/db/db_test_util.h +29 -14
- package/deps/rocksdb/rocksdb/db/db_universal_compaction_test.cc +69 -36
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +0 -1
- package/deps/rocksdb/rocksdb/db/event_helpers.cc +1 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -4
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +8 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.cc +275 -79
- package/deps/rocksdb/rocksdb/db/external_sst_file_ingestion_job.h +23 -5
- package/deps/rocksdb/rocksdb/db/external_sst_file_test.cc +591 -175
- package/deps/rocksdb/rocksdb/db/flush_job.cc +3 -4
- package/deps/rocksdb/rocksdb/db/log_reader.cc +5 -2
- package/deps/rocksdb/rocksdb/db/memtable.cc +84 -35
- package/deps/rocksdb/rocksdb/db/memtable.h +39 -34
- package/deps/rocksdb/rocksdb/db/merge_helper.cc +1 -0
- package/deps/rocksdb/rocksdb/db/merge_operator.cc +1 -1
- package/deps/rocksdb/rocksdb/db/multi_scan.cc +11 -5
- package/deps/rocksdb/rocksdb/db/version_edit.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit_handler.cc +34 -14
- package/deps/rocksdb/rocksdb/db/version_edit_handler.h +28 -5
- package/deps/rocksdb/rocksdb/db/version_set.cc +159 -14
- package/deps/rocksdb/rocksdb/db/version_set.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/CMakeLists.txt +1 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +60 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +16 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compaction_service.h +75 -10
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.cc +28 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_compression_manager.h +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +31 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +50 -2
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +57 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.h +0 -4
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +266 -35
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +5 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +0 -6
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +18 -2
- package/deps/rocksdb/rocksdb/env/env.cc +12 -0
- package/deps/rocksdb/rocksdb/env/env_test.cc +18 -0
- package/deps/rocksdb/rocksdb/env/file_system_tracer.cc +2 -0
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +9 -5
- package/deps/rocksdb/rocksdb/env/io_posix.cc +4 -2
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +19 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_compression.h +33 -31
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +42 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +93 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +43 -49
- package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +4 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/compression_type.h +8 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/data_structure.h +487 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +11 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/env.h +135 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/file_system.h +5 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iostats_context.h +12 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/ldb_tool.h +8 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/memtablerep.h +12 -8
- package/deps/rocksdb/rocksdb/include/rocksdb/metadata.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/multi_scan.h +19 -9
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +219 -24
- package/deps/rocksdb/rocksdb/include/rocksdb/point_lock_bench_tool.h +14 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +2 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/slice.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +7 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/status.h +16 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +16 -4
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +13 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/types.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/universal_compaction.h +0 -2
- package/deps/rocksdb/rocksdb/include/rocksdb/user_defined_index.h +45 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/cache_dump_load.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/stackable_db.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction.h +6 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/transaction_db.h +21 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +2 -2
- package/deps/rocksdb/rocksdb/memory/memory_allocator_impl.h +3 -3
- package/deps/rocksdb/rocksdb/memtable/inlineskiplist.h +77 -51
- package/deps/rocksdb/rocksdb/memtable/skiplist.h +10 -13
- package/deps/rocksdb/rocksdb/memtable/skiplistrep.cc +16 -7
- package/deps/rocksdb/rocksdb/memtable/vectorrep.cc +9 -4
- package/deps/rocksdb/rocksdb/monitoring/iostats_context.cc +2 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +6 -0
- package/deps/rocksdb/rocksdb/options/cf_options.cc +13 -1
- package/deps/rocksdb/rocksdb/options/cf_options.h +6 -2
- package/deps/rocksdb/rocksdb/options/options.cc +2 -0
- package/deps/rocksdb/rocksdb/options/options_helper.cc +9 -8
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +9 -5
- package/deps/rocksdb/rocksdb/port/mmap.cc +1 -1
- package/deps/rocksdb/rocksdb/port/win/xpress_win.cc +51 -0
- package/deps/rocksdb/rocksdb/port/win/xpress_win.h +4 -0
- package/deps/rocksdb/rocksdb/src.mk +8 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1125 -765
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +35 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +29 -4
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +732 -256
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.h +225 -16
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +102 -26
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +2 -75
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_test.cc +433 -141
- package/deps/rocksdb/rocksdb/table/block_based/block_builder.h +2 -0
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy.cc +17 -10
- package/deps/rocksdb/rocksdb/table/block_based/flush_block_policy_impl.h +20 -0
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.cc +112 -85
- package/deps/rocksdb/rocksdb/table/block_based/index_builder.h +191 -36
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +2 -2
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block_test.cc +1 -1
- package/deps/rocksdb/rocksdb/table/block_based/user_defined_index_wrapper.h +108 -31
- package/deps/rocksdb/rocksdb/table/external_table.cc +7 -3
- package/deps/rocksdb/rocksdb/table/format.cc +6 -12
- package/deps/rocksdb/rocksdb/table/format.h +10 -0
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +1 -1
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +1 -1
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +1 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +5 -0
- package/deps/rocksdb/rocksdb/table/multiget_context.h +3 -1
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +118 -46
- package/deps/rocksdb/rocksdb/table/sst_file_dumper.h +9 -8
- package/deps/rocksdb/rocksdb/table/table_builder.h +5 -0
- package/deps/rocksdb/rocksdb/table/table_properties.cc +16 -0
- package/deps/rocksdb/rocksdb/table/table_test.cc +1540 -155
- package/deps/rocksdb/rocksdb/test_util/testutil.h +21 -5
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +26 -5
- package/deps/rocksdb/rocksdb/tools/ldb.cc +1 -2
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +2 -0
- package/deps/rocksdb/rocksdb/tools/ldb_tool.cc +9 -3
- package/deps/rocksdb/rocksdb/tools/sst_dump_test.cc +133 -165
- package/deps/rocksdb/rocksdb/tools/sst_dump_tool.cc +173 -64
- package/deps/rocksdb/rocksdb/util/aligned_buffer.h +69 -0
- package/deps/rocksdb/rocksdb/util/atomic.h +6 -0
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.cc +29 -20
- package/deps/rocksdb/rocksdb/util/auto_tune_compressor.h +10 -6
- package/deps/rocksdb/rocksdb/util/bit_fields.h +338 -0
- package/deps/rocksdb/rocksdb/util/coding.h +3 -3
- package/deps/rocksdb/rocksdb/util/compaction_job_stats_impl.cc +2 -2
- package/deps/rocksdb/rocksdb/util/compression.cc +777 -82
- package/deps/rocksdb/rocksdb/util/compression.h +5 -0
- package/deps/rocksdb/rocksdb/util/compression_test.cc +5 -3
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.cc +2 -2
- package/deps/rocksdb/rocksdb/util/dynamic_bloom.h +15 -14
- package/deps/rocksdb/rocksdb/util/interval_test.cc +102 -0
- package/deps/rocksdb/rocksdb/util/semaphore.h +164 -0
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.cc +10 -6
- package/deps/rocksdb/rocksdb/util/simple_mixed_compressor.h +4 -2
- package/deps/rocksdb/rocksdb/util/slice_test.cc +136 -0
- package/deps/rocksdb/rocksdb/util/status.cc +1 -0
- package/deps/rocksdb/rocksdb/util/string_util.cc +2 -16
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +7 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +35 -14
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/hash_table_test.cc +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/lock_manager.cc +5 -2
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/any_lock_manager_test.h +244 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench.cc +18 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_bench_tool.cc +159 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.cc +1244 -161
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager.h +66 -12
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_stress_test.cc +103 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.cc +1275 -8
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test.h +40 -262
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_manager_test_common.h +78 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/point/point_lock_validation_test_runner.h +469 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/lock/range/range_locking_test.cc +2 -6
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.h +9 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +18 -9
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_base.h +2 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_db_mutex_impl.cc +2 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.cc +72 -44
- package/deps/rocksdb/rocksdb/utilities/transactions/transaction_test.h +92 -15
- package/deps/rocksdb/rocksdb/utilities/transactions/write_committed_transaction_ts_test.cc +6 -20
- package/deps/rocksdb/rocksdb/utilities/transactions/write_prepared_transaction_test.cc +143 -112
- package/deps/rocksdb/rocksdb/utilities/transactions/write_unprepared_transaction_test.cc +23 -16
- package/index.js +3 -3
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/@nxtedition+rocksdb.node +0 -0
- package/prebuilds/linux-x64/@nxtedition+rocksdb.node +0 -0
- package/util.h +38 -12
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_stat.cc +0 -17
|
@@ -112,21 +112,36 @@ class BlockBasedTableBuilder : public TableBuilder {
|
|
|
112
112
|
void SetSeqnoTimeTableProperties(const SeqnoToTimeMapping& relevant_mapping,
|
|
113
113
|
uint64_t oldest_ancestor_time) override;
|
|
114
114
|
|
|
115
|
+
uint64_t GetWorkerCPUMicros() const override;
|
|
116
|
+
|
|
115
117
|
private:
|
|
116
|
-
bool ok() const
|
|
118
|
+
bool ok() const;
|
|
117
119
|
|
|
118
|
-
// Transition state from buffered to unbuffered
|
|
119
|
-
// for details of the states.
|
|
120
|
+
// Transition state from buffered to unbuffered if the conditions are met. See
|
|
121
|
+
// `Rep::State` API comment for details of the states.
|
|
120
122
|
// REQUIRES: `rep_->state == kBuffered`
|
|
121
|
-
void
|
|
122
|
-
|
|
123
|
-
//
|
|
123
|
+
void MaybeEnterUnbuffered(const Slice* first_key_in_next_block);
|
|
124
|
+
|
|
125
|
+
// Try to keep some parallel-specific code separate to improve hot code
|
|
126
|
+
// locality for non-parallel case
|
|
127
|
+
void EmitBlock(std::string& uncompressed,
|
|
128
|
+
const Slice& last_key_in_current_block,
|
|
129
|
+
const Slice* first_key_in_next_block);
|
|
130
|
+
void EmitBlockForParallel(std::string& uncompressed,
|
|
131
|
+
const Slice& last_key_in_current_block,
|
|
132
|
+
const Slice* first_key_in_next_block);
|
|
133
|
+
|
|
134
|
+
// Compress and write block content to the file, from a single-threaded
|
|
135
|
+
// context
|
|
124
136
|
void WriteBlock(const Slice& block_contents, BlockHandle* handle,
|
|
125
137
|
BlockType block_type);
|
|
126
138
|
// Directly write data to the file.
|
|
127
139
|
void WriteMaybeCompressedBlock(
|
|
128
140
|
const Slice& block_contents, CompressionType, BlockHandle* handle,
|
|
129
141
|
BlockType block_type, const Slice* uncompressed_block_data = nullptr);
|
|
142
|
+
IOStatus WriteMaybeCompressedBlockImpl(
|
|
143
|
+
const Slice& block_contents, CompressionType, BlockHandle* handle,
|
|
144
|
+
BlockType block_type, const Slice* uncompressed_block_data = nullptr);
|
|
130
145
|
|
|
131
146
|
void SetupCacheKeyPrefix(const TableBuilderOptions& tbo);
|
|
132
147
|
|
|
@@ -154,7 +169,7 @@ class BlockBasedTableBuilder : public TableBuilder {
|
|
|
154
169
|
struct Rep;
|
|
155
170
|
class BlockBasedTablePropertiesCollectorFactory;
|
|
156
171
|
class BlockBasedTablePropertiesCollector;
|
|
157
|
-
Rep
|
|
172
|
+
std::unique_ptr<Rep> rep_;
|
|
158
173
|
struct WorkingAreaPair;
|
|
159
174
|
struct ParallelCompressionRep;
|
|
160
175
|
|
|
@@ -162,34 +177,30 @@ class BlockBasedTableBuilder : public TableBuilder {
|
|
|
162
177
|
// Can be used to ensure that two adjacent entries never live in
|
|
163
178
|
// the same data block. Most clients should not need to use this method.
|
|
164
179
|
// REQUIRES: Finish(), Abandon() have not been called
|
|
165
|
-
void Flush();
|
|
180
|
+
void Flush(const Slice* first_key_in_next_block);
|
|
166
181
|
|
|
167
182
|
// Some compression libraries fail when the uncompressed size is bigger than
|
|
168
183
|
// int. If uncompressed size is bigger than kCompressionSizeLimit, don't
|
|
169
184
|
// compress it
|
|
170
185
|
const uint64_t kCompressionSizeLimit = std::numeric_limits<int>::max();
|
|
171
186
|
|
|
172
|
-
//
|
|
173
|
-
//
|
|
174
|
-
void
|
|
187
|
+
// Code for a "parallel compression" worker thread, which can really do SST
|
|
188
|
+
// writes and block compressions alternately.
|
|
189
|
+
void BGWorker(WorkingAreaPair& working_area);
|
|
175
190
|
|
|
176
191
|
// Given uncompressed block content, try to compress it and return result and
|
|
177
192
|
// compression type
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
// Get compressed blocks from BGWorkCompression and write them into SST
|
|
185
|
-
void BGWorkWriteMaybeCompressedBlock();
|
|
193
|
+
Status CompressAndVerifyBlock(const Slice& uncompressed_block_data,
|
|
194
|
+
bool is_data_block,
|
|
195
|
+
WorkingAreaPair& working_area,
|
|
196
|
+
GrowableBuffer* compressed_output,
|
|
197
|
+
CompressionType* result_compression_type);
|
|
186
198
|
|
|
187
|
-
//
|
|
188
|
-
|
|
189
|
-
void StartParallelCompression();
|
|
199
|
+
// If configured, start worker threads for parallel compression
|
|
200
|
+
void MaybeStartParallelCompression();
|
|
190
201
|
|
|
191
|
-
// Stop
|
|
192
|
-
void StopParallelCompression();
|
|
202
|
+
// Stop worker threads for parallel compression
|
|
203
|
+
void StopParallelCompression(bool abort);
|
|
193
204
|
};
|
|
194
205
|
|
|
195
206
|
} // namespace ROCKSDB_NAMESPACE
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
#include "rocksdb/flush_block_policy.h"
|
|
26
26
|
#include "rocksdb/rocksdb_namespace.h"
|
|
27
27
|
#include "rocksdb/table.h"
|
|
28
|
+
#include "rocksdb/user_defined_index.h"
|
|
29
|
+
#include "rocksdb/utilities/customizable_util.h"
|
|
28
30
|
#include "rocksdb/utilities/options_type.h"
|
|
29
31
|
#include "table/block_based/block_based_table_builder.h"
|
|
30
32
|
#include "table/block_based/block_based_table_reader.h"
|
|
@@ -312,6 +314,11 @@ static struct BlockBasedTableTypeInfo {
|
|
|
312
314
|
OptionTypeInfo::AsCustomSharedPtr<const FilterPolicy>(
|
|
313
315
|
offsetof(struct BlockBasedTableOptions, filter_policy),
|
|
314
316
|
OptionVerificationType::kByNameAllowFromNull)},
|
|
317
|
+
{"user_defined_index_factory",
|
|
318
|
+
OptionTypeInfo::AsCustomSharedPtr<UserDefinedIndexFactory>(
|
|
319
|
+
offsetof(struct BlockBasedTableOptions,
|
|
320
|
+
user_defined_index_factory),
|
|
321
|
+
OptionVerificationType::kByNameAllowFromNull)},
|
|
315
322
|
{"whole_key_filtering",
|
|
316
323
|
{offsetof(struct BlockBasedTableOptions, whole_key_filtering),
|
|
317
324
|
OptionType::kBoolean, OptionVerificationType::kNormal}},
|
|
@@ -392,6 +399,9 @@ static struct BlockBasedTableTypeInfo {
|
|
|
392
399
|
{offsetof(struct BlockBasedTableOptions,
|
|
393
400
|
num_file_reads_for_auto_readahead),
|
|
394
401
|
OptionType::kUInt64T, OptionVerificationType::kNormal}},
|
|
402
|
+
{"fail_if_no_udi_on_open",
|
|
403
|
+
{offsetof(struct BlockBasedTableOptions, fail_if_no_udi_on_open),
|
|
404
|
+
OptionType::kBoolean, OptionVerificationType::kNormal}},
|
|
395
405
|
};
|
|
396
406
|
}
|
|
397
407
|
} block_based_table_type_info;
|
|
@@ -427,10 +437,10 @@ void BlockBasedTableFactory::InitializeOptions() {
|
|
|
427
437
|
if (table_options_.no_block_cache) {
|
|
428
438
|
table_options_.block_cache.reset();
|
|
429
439
|
} else if (table_options_.block_cache == nullptr) {
|
|
430
|
-
|
|
431
|
-
//
|
|
432
|
-
|
|
433
|
-
table_options_.block_cache =
|
|
440
|
+
// Now using AutoHCC by default, with existing default size of 32MB
|
|
441
|
+
// which is just one cache shard in HCC
|
|
442
|
+
HyperClockCacheOptions hcc_opts{size_t{32} << 20};
|
|
443
|
+
table_options_.block_cache = hcc_opts.MakeSharedCache();
|
|
434
444
|
}
|
|
435
445
|
if (table_options_.block_size_deviation < 0 ||
|
|
436
446
|
table_options_.block_size_deviation > 100) {
|
|
@@ -867,6 +877,14 @@ std::string BlockBasedTableFactory::GetPrintableOptions() const {
|
|
|
867
877
|
? "nullptr"
|
|
868
878
|
: table_options_.filter_policy->Name());
|
|
869
879
|
ret.append(buffer);
|
|
880
|
+
snprintf(buffer, kBufferSize, " user_defined_index_factory: %s\n",
|
|
881
|
+
table_options_.user_defined_index_factory == nullptr
|
|
882
|
+
? "nullptr"
|
|
883
|
+
: table_options_.user_defined_index_factory->Name());
|
|
884
|
+
ret.append(buffer);
|
|
885
|
+
snprintf(buffer, kBufferSize, " fail_if_no_udi_on_open: %d\n",
|
|
886
|
+
table_options_.fail_if_no_udi_on_open);
|
|
887
|
+
ret.append(buffer);
|
|
870
888
|
snprintf(buffer, kBufferSize, " whole_key_filtering: %d\n",
|
|
871
889
|
table_options_.whole_key_filtering);
|
|
872
890
|
ret.append(buffer);
|
|
@@ -1011,6 +1029,13 @@ TableFactory* NewBlockBasedTableFactory(
|
|
|
1011
1029
|
return new BlockBasedTableFactory(_table_options);
|
|
1012
1030
|
}
|
|
1013
1031
|
|
|
1032
|
+
Status UserDefinedIndexFactory::CreateFromString(
|
|
1033
|
+
const ConfigOptions& config_options, const std::string& value,
|
|
1034
|
+
std::shared_ptr<UserDefinedIndexFactory>* factory) {
|
|
1035
|
+
return LoadSharedObject<UserDefinedIndexFactory>(config_options, value,
|
|
1036
|
+
factory);
|
|
1037
|
+
}
|
|
1038
|
+
|
|
1014
1039
|
const std::string BlockBasedTablePropertyNames::kIndexType =
|
|
1015
1040
|
"rocksdb.block.based.table.index.type";
|
|
1016
1041
|
const std::string BlockBasedTablePropertyNames::kWholeKeyFiltering =
|