@nxtedition/rocksdb 7.1.14 → 7.1.16
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 +1 -0
- package/deps/rocksdb/rocksdb/CMakeLists.txt +72 -18
- package/deps/rocksdb/rocksdb/Makefile +91 -11
- package/deps/rocksdb/rocksdb/TARGETS +8 -4
- package/deps/rocksdb/rocksdb/cache/cache.cc +5 -0
- package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +13 -8
- package/deps/rocksdb/rocksdb/cache/cache_entry_roles.cc +2 -0
- package/deps/rocksdb/rocksdb/cache/cache_test.cc +116 -57
- package/deps/rocksdb/rocksdb/cache/clock_cache.cc +958 -459
- package/deps/rocksdb/rocksdb/cache/clock_cache.h +407 -622
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +104 -40
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.h +23 -8
- package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache_test.cc +350 -184
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +12 -2
- package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +2 -0
- package/deps/rocksdb/rocksdb/cache/lru_cache.cc +130 -43
- package/deps/rocksdb/rocksdb/cache/lru_cache.h +24 -2
- package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +423 -98
- package/deps/rocksdb/rocksdb/cache/sharded_cache.cc +19 -2
- package/deps/rocksdb/rocksdb/cache/sharded_cache.h +10 -7
- package/deps/rocksdb/rocksdb/crash_test.mk +2 -2
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.cc +46 -26
- package/deps/rocksdb/rocksdb/db/arena_wrapped_db_iter.h +9 -3
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.cc +90 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_contents.h +56 -0
- package/deps/rocksdb/rocksdb/db/blob/blob_file_builder.cc +23 -10
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +64 -59
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +11 -8
- package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +92 -62
- package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +159 -136
- package/deps/rocksdb/rocksdb/db/blob/blob_source.h +13 -13
- package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +129 -57
- package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +81 -3
- package/deps/rocksdb/rocksdb/db/c.cc +29 -0
- package/deps/rocksdb/rocksdb/db/column_family.cc +10 -1
- package/deps/rocksdb/rocksdb/db/column_family_test.cc +21 -0
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +42 -36
- package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +344 -102
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +163 -28
- package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +52 -17
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +35 -30
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +8 -3
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +167 -11
- package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +8 -8
- package/deps/rocksdb/rocksdb/db/compaction/compaction_service_test.cc +10 -13
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +0 -117
- package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +6 -49
- package/deps/rocksdb/rocksdb/db/db_basic_test.cc +29 -4
- package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +18 -11
- package/deps/rocksdb/rocksdb/db/db_compaction_filter_test.cc +4 -10
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/compacted_db_impl.h +12 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +144 -93
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +28 -32
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_compaction_flush.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_debug.cc +5 -9
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +2 -33
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.cc +3 -5
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_readonly.h +11 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +1 -2
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +8 -0
- package/deps/rocksdb/rocksdb/db/db_impl/db_impl_write.cc +2 -1
- package/deps/rocksdb/rocksdb/db/db_iter.cc +76 -138
- package/deps/rocksdb/rocksdb/db/db_iter.h +26 -23
- package/deps/rocksdb/rocksdb/db/db_properties_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +931 -0
- package/deps/rocksdb/rocksdb/db/db_sst_test.cc +2 -2
- package/deps/rocksdb/rocksdb/db/db_table_properties_test.cc +6 -0
- package/deps/rocksdb/rocksdb/db/db_test2.cc +44 -22
- package/deps/rocksdb/rocksdb/db/db_test_util.cc +6 -14
- package/deps/rocksdb/rocksdb/db/db_with_timestamp_compaction_test.cc +155 -0
- package/deps/rocksdb/rocksdb/db/db_write_test.cc +45 -0
- package/deps/rocksdb/rocksdb/db/dbformat.h +2 -1
- package/deps/rocksdb/rocksdb/db/error_handler_fs_test.cc +8 -0
- package/deps/rocksdb/rocksdb/db/experimental.cc +5 -1
- package/deps/rocksdb/rocksdb/db/external_sst_file_basic_test.cc +24 -12
- package/deps/rocksdb/rocksdb/db/internal_stats.cc +7 -1
- package/deps/rocksdb/rocksdb/db/internal_stats.h +3 -0
- package/deps/rocksdb/rocksdb/db/memtable.cc +79 -18
- package/deps/rocksdb/rocksdb/db/memtable.h +5 -0
- package/deps/rocksdb/rocksdb/db/memtable_list.cc +26 -4
- package/deps/rocksdb/rocksdb/db/memtable_list.h +2 -1
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.cc +113 -0
- package/deps/rocksdb/rocksdb/db/periodic_task_scheduler.h +110 -0
- package/deps/rocksdb/rocksdb/db/{periodic_work_scheduler_test.cc → periodic_task_scheduler_test.cc} +33 -39
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.cc +12 -20
- package/deps/rocksdb/rocksdb/db/range_del_aggregator.h +6 -5
- package/deps/rocksdb/rocksdb/db/range_del_aggregator_test.cc +12 -8
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.cc +20 -5
- package/deps/rocksdb/rocksdb/db/range_tombstone_fragmenter.h +14 -0
- package/deps/rocksdb/rocksdb/db/repair.cc +17 -8
- package/deps/rocksdb/rocksdb/db/repair_test.cc +2 -1
- package/deps/rocksdb/rocksdb/db/seqno_time_test.cc +49 -66
- package/deps/rocksdb/rocksdb/db/table_cache.cc +92 -63
- package/deps/rocksdb/rocksdb/db/table_cache.h +16 -9
- package/deps/rocksdb/rocksdb/db/table_cache_sync_and_async.h +2 -2
- package/deps/rocksdb/rocksdb/db/table_properties_collector.cc +2 -2
- package/deps/rocksdb/rocksdb/db/table_properties_collector.h +3 -3
- package/deps/rocksdb/rocksdb/db/table_properties_collector_test.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/db/version_edit.h +1 -2
- package/deps/rocksdb/rocksdb/db/version_set.cc +379 -145
- package/deps/rocksdb/rocksdb/db/version_set.h +26 -24
- package/deps/rocksdb/rocksdb/db/version_set_test.cc +9 -9
- package/deps/rocksdb/rocksdb/db/version_util.h +3 -2
- package/deps/rocksdb/rocksdb/db/wide/db_wide_basic_test.cc +10 -2
- package/deps/rocksdb/rocksdb/db/wide/wide_column_serialization.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/batched_ops_stress.cc +5 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/cf_consistency_stress.cc +5 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress.cc +2 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +71 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +14 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +23 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +26 -1
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +105 -34
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +16 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_tool.cc +6 -0
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +4 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +4 -8
- package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +282 -25
- package/deps/rocksdb/rocksdb/env/fs_posix.cc +6 -4
- package/deps/rocksdb/rocksdb/env/io_posix.cc +3 -1
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +367 -177
- package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +144 -56
- package/deps/rocksdb/rocksdb/file/filename.cc +3 -3
- package/deps/rocksdb/rocksdb/file/filename.h +4 -2
- package/deps/rocksdb/rocksdb/file/prefetch_test.cc +415 -0
- package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +2 -0
- package/deps/rocksdb/rocksdb/file/writable_file_writer.cc +36 -45
- package/deps/rocksdb/rocksdb/file/writable_file_writer.h +21 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +11 -11
- package/deps/rocksdb/rocksdb/include/rocksdb/c.h +15 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +163 -68
- package/deps/rocksdb/rocksdb/include/rocksdb/db.h +26 -12
- package/deps/rocksdb/rocksdb/include/rocksdb/iterator.h +23 -5
- package/deps/rocksdb/rocksdb/include/rocksdb/options.h +21 -17
- package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +17 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/persistent_cache.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/secondary_cache.h +17 -6
- package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table.h +20 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/table_properties.h +3 -3
- package/deps/rocksdb/rocksdb/include/rocksdb/utilities/option_change_migration.h +4 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/version.h +1 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/wide_columns.h +3 -0
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +2 -1
- package/deps/rocksdb/rocksdb/include/rocksdb/write_batch_base.h +2 -1
- package/deps/rocksdb/rocksdb/logging/env_logger.h +2 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.cc +4 -2
- package/deps/rocksdb/rocksdb/monitoring/histogram.h +2 -0
- package/deps/rocksdb/rocksdb/monitoring/histogram_test.cc +15 -1
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.cc +17 -0
- package/deps/rocksdb/rocksdb/monitoring/instrumented_mutex.h +14 -3
- package/deps/rocksdb/rocksdb/monitoring/iostats_context_imp.h +3 -0
- package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +50 -0
- package/deps/rocksdb/rocksdb/monitoring/statistics.cc +1 -0
- package/deps/rocksdb/rocksdb/monitoring/stats_history_test.cc +31 -32
- package/deps/rocksdb/rocksdb/options/customizable_test.cc +4 -1
- package/deps/rocksdb/rocksdb/options/options.cc +2 -2
- package/deps/rocksdb/rocksdb/options/options_settable_test.cc +2 -1
- package/deps/rocksdb/rocksdb/port/jemalloc_helper.h +1 -0
- package/deps/rocksdb/rocksdb/src.mk +4 -2
- package/deps/rocksdb/rocksdb/table/block_based/block.h +9 -8
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +110 -99
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.h +12 -10
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_factory.cc +11 -2
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +138 -83
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.h +25 -24
- package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_sync_and_async.h +31 -30
- package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +16 -13
- package/deps/rocksdb/rocksdb/table/block_based/cachable_entry.h +4 -4
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_filter_block.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_reader.cc +3 -3
- package/deps/rocksdb/rocksdb/table/block_fetcher.cc +17 -19
- package/deps/rocksdb/rocksdb/table/block_fetcher.h +1 -1
- package/deps/rocksdb/rocksdb/table/format.cc +26 -29
- package/deps/rocksdb/rocksdb/table/format.h +44 -26
- package/deps/rocksdb/rocksdb/table/get_context.cc +17 -12
- package/deps/rocksdb/rocksdb/table/internal_iterator.h +7 -0
- package/deps/rocksdb/rocksdb/table/iterator_wrapper.h +4 -0
- package/deps/rocksdb/rocksdb/table/merging_iterator.cc +950 -104
- package/deps/rocksdb/rocksdb/table/merging_iterator.h +28 -1
- package/deps/rocksdb/rocksdb/table/meta_blocks.cc +3 -2
- package/deps/rocksdb/rocksdb/table/meta_blocks.h +1 -1
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.cc +10 -9
- package/deps/rocksdb/rocksdb/table/persistent_cache_helper.h +22 -20
- package/deps/rocksdb/rocksdb/table/plain/plain_table_builder.cc +1 -1
- package/deps/rocksdb/rocksdb/table/sst_file_writer_collectors.h +1 -1
- package/deps/rocksdb/rocksdb/table/table_builder.h +9 -21
- package/deps/rocksdb/rocksdb/table/table_test.cc +12 -12
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_pysim_test.py +4 -4
- package/deps/rocksdb/rocksdb/tools/block_cache_analyzer/block_cache_trace_analyzer_plot.py +1 -0
- package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +116 -34
- package/deps/rocksdb/rocksdb/tools/ldb_cmd.cc +6 -1
- package/deps/rocksdb/rocksdb/tools/trace_analyzer_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/util/autovector.h +12 -0
- package/deps/rocksdb/rocksdb/util/rate_limiter_test.cc +3 -2
- package/deps/rocksdb/rocksdb/util/stderr_logger.cc +30 -0
- package/deps/rocksdb/rocksdb/util/stderr_logger.h +5 -18
- package/deps/rocksdb/rocksdb/util/timer.h +2 -3
- package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +9 -2
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_db_impl.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/blob_db/blob_dump_tool.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.cc +34 -53
- package/deps/rocksdb/rocksdb/utilities/cache_dump_load_impl.h +9 -14
- package/deps/rocksdb/rocksdb/utilities/debug.cc +2 -4
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.cc +4 -0
- package/deps/rocksdb/rocksdb/utilities/fault_injection_fs.h +1 -1
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.cc +4 -3
- package/deps/rocksdb/rocksdb/utilities/fault_injection_secondary_cache.h +3 -1
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration.cc +26 -8
- package/deps/rocksdb/rocksdb/utilities/option_change_migration/option_change_migration_test.cc +114 -16
- package/deps/rocksdb/rocksdb/utilities/persistent_cache/persistent_cache_test.cc +1 -1
- package/deps/rocksdb/rocksdb/utilities/transactions/optimistic_transaction_test.cc +59 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/pessimistic_transaction.cc +3 -0
- package/deps/rocksdb/rocksdb/utilities/transactions/timestamped_snapshot_test.cc +39 -0
- package/deps/rocksdb/rocksdb.gyp +0 -1
- package/index.js +6 -10
- package/package.json +1 -1
- package/prebuilds/darwin-arm64/node.napi.node +0 -0
- package/prebuilds/linux-x64/node.napi.node +0 -0
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.cc +0 -168
- package/deps/rocksdb/rocksdb/db/periodic_work_scheduler.h +0 -90
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
#include <cassert>
|
|
9
9
|
#include <string>
|
|
10
10
|
|
|
11
|
+
#include "db/blob/blob_contents.h"
|
|
11
12
|
#include "db/blob/blob_log_format.h"
|
|
12
13
|
#include "db/blob/blob_log_writer.h"
|
|
13
14
|
#include "env/mock_env.h"
|
|
@@ -180,15 +181,17 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
180
181
|
read_options.verify_checksums = false;
|
|
181
182
|
|
|
182
183
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
184
|
+
constexpr MemoryAllocator* allocator = nullptr;
|
|
183
185
|
|
|
184
186
|
{
|
|
185
|
-
|
|
187
|
+
std::unique_ptr<BlobContents> value;
|
|
186
188
|
uint64_t bytes_read = 0;
|
|
187
189
|
|
|
188
190
|
ASSERT_OK(reader->GetBlob(read_options, keys[0], blob_offsets[0],
|
|
189
191
|
blob_sizes[0], kNoCompression, prefetch_buffer,
|
|
190
|
-
&value, &bytes_read));
|
|
191
|
-
|
|
192
|
+
allocator, &value, &bytes_read));
|
|
193
|
+
ASSERT_NE(value, nullptr);
|
|
194
|
+
ASSERT_EQ(value->data(), blobs[0]);
|
|
192
195
|
ASSERT_EQ(bytes_read, blob_sizes[0]);
|
|
193
196
|
|
|
194
197
|
// MultiGetBlob
|
|
@@ -196,22 +199,25 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
196
199
|
size_t total_size = 0;
|
|
197
200
|
|
|
198
201
|
std::array<Status, num_blobs> statuses_buf;
|
|
199
|
-
std::array<PinnableSlice, num_blobs> value_buf;
|
|
200
202
|
std::array<BlobReadRequest, num_blobs> requests_buf;
|
|
201
|
-
autovector<BlobReadRequest
|
|
203
|
+
autovector<std::pair<BlobReadRequest*, std::unique_ptr<BlobContents>>>
|
|
204
|
+
blob_reqs;
|
|
202
205
|
|
|
203
206
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
204
207
|
requests_buf[i] =
|
|
205
208
|
BlobReadRequest(keys[i], blob_offsets[i], blob_sizes[i],
|
|
206
|
-
kNoCompression,
|
|
207
|
-
blob_reqs.
|
|
209
|
+
kNoCompression, nullptr, &statuses_buf[i]);
|
|
210
|
+
blob_reqs.emplace_back(&requests_buf[i], std::unique_ptr<BlobContents>());
|
|
208
211
|
}
|
|
209
212
|
|
|
210
|
-
reader->MultiGetBlob(read_options, blob_reqs, &bytes_read);
|
|
213
|
+
reader->MultiGetBlob(read_options, allocator, blob_reqs, &bytes_read);
|
|
211
214
|
|
|
212
215
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
216
|
+
const auto& result = blob_reqs[i].second;
|
|
217
|
+
|
|
213
218
|
ASSERT_OK(statuses_buf[i]);
|
|
214
|
-
|
|
219
|
+
ASSERT_NE(result, nullptr);
|
|
220
|
+
ASSERT_EQ(result->data(), blobs[i]);
|
|
215
221
|
total_size += blob_sizes[i];
|
|
216
222
|
}
|
|
217
223
|
ASSERT_EQ(bytes_read, total_size);
|
|
@@ -220,13 +226,14 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
220
226
|
read_options.verify_checksums = true;
|
|
221
227
|
|
|
222
228
|
{
|
|
223
|
-
|
|
229
|
+
std::unique_ptr<BlobContents> value;
|
|
224
230
|
uint64_t bytes_read = 0;
|
|
225
231
|
|
|
226
232
|
ASSERT_OK(reader->GetBlob(read_options, keys[1], blob_offsets[1],
|
|
227
233
|
blob_sizes[1], kNoCompression, prefetch_buffer,
|
|
228
|
-
&value, &bytes_read));
|
|
229
|
-
|
|
234
|
+
allocator, &value, &bytes_read));
|
|
235
|
+
ASSERT_NE(value, nullptr);
|
|
236
|
+
ASSERT_EQ(value->data(), blobs[1]);
|
|
230
237
|
|
|
231
238
|
const uint64_t key_size = keys[1].size();
|
|
232
239
|
ASSERT_EQ(bytes_read,
|
|
@@ -236,47 +243,50 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
236
243
|
|
|
237
244
|
// Invalid offset (too close to start of file)
|
|
238
245
|
{
|
|
239
|
-
|
|
246
|
+
std::unique_ptr<BlobContents> value;
|
|
240
247
|
uint64_t bytes_read = 0;
|
|
241
248
|
|
|
242
249
|
ASSERT_TRUE(reader
|
|
243
250
|
->GetBlob(read_options, keys[0], blob_offsets[0] - 1,
|
|
244
251
|
blob_sizes[0], kNoCompression, prefetch_buffer,
|
|
245
|
-
&value, &bytes_read)
|
|
252
|
+
allocator, &value, &bytes_read)
|
|
246
253
|
.IsCorruption());
|
|
254
|
+
ASSERT_EQ(value, nullptr);
|
|
247
255
|
ASSERT_EQ(bytes_read, 0);
|
|
248
256
|
}
|
|
249
257
|
|
|
250
258
|
// Invalid offset (too close to end of file)
|
|
251
259
|
{
|
|
252
|
-
|
|
260
|
+
std::unique_ptr<BlobContents> value;
|
|
253
261
|
uint64_t bytes_read = 0;
|
|
254
262
|
|
|
255
263
|
ASSERT_TRUE(reader
|
|
256
264
|
->GetBlob(read_options, keys[2], blob_offsets[2] + 1,
|
|
257
265
|
blob_sizes[2], kNoCompression, prefetch_buffer,
|
|
258
|
-
&value, &bytes_read)
|
|
266
|
+
allocator, &value, &bytes_read)
|
|
259
267
|
.IsCorruption());
|
|
268
|
+
ASSERT_EQ(value, nullptr);
|
|
260
269
|
ASSERT_EQ(bytes_read, 0);
|
|
261
270
|
}
|
|
262
271
|
|
|
263
272
|
// Incorrect compression type
|
|
264
273
|
{
|
|
265
|
-
|
|
274
|
+
std::unique_ptr<BlobContents> value;
|
|
266
275
|
uint64_t bytes_read = 0;
|
|
267
276
|
|
|
268
277
|
ASSERT_TRUE(reader
|
|
269
278
|
->GetBlob(read_options, keys[0], blob_offsets[0],
|
|
270
|
-
blob_sizes[0], kZSTD, prefetch_buffer,
|
|
271
|
-
&bytes_read)
|
|
279
|
+
blob_sizes[0], kZSTD, prefetch_buffer, allocator,
|
|
280
|
+
&value, &bytes_read)
|
|
272
281
|
.IsCorruption());
|
|
282
|
+
ASSERT_EQ(value, nullptr);
|
|
273
283
|
ASSERT_EQ(bytes_read, 0);
|
|
274
284
|
}
|
|
275
285
|
|
|
276
286
|
// Incorrect key size
|
|
277
287
|
{
|
|
278
288
|
constexpr char shorter_key[] = "k";
|
|
279
|
-
|
|
289
|
+
std::unique_ptr<BlobContents> value;
|
|
280
290
|
uint64_t bytes_read = 0;
|
|
281
291
|
|
|
282
292
|
ASSERT_TRUE(reader
|
|
@@ -284,8 +294,9 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
284
294
|
blob_offsets[0] -
|
|
285
295
|
(keys[0].size() - sizeof(shorter_key) + 1),
|
|
286
296
|
blob_sizes[0], kNoCompression, prefetch_buffer,
|
|
287
|
-
&value, &bytes_read)
|
|
297
|
+
allocator, &value, &bytes_read)
|
|
288
298
|
.IsCorruption());
|
|
299
|
+
ASSERT_EQ(value, nullptr);
|
|
289
300
|
ASSERT_EQ(bytes_read, 0);
|
|
290
301
|
|
|
291
302
|
// MultiGetBlob
|
|
@@ -302,18 +313,18 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
302
313
|
blob_offsets[2]};
|
|
303
314
|
|
|
304
315
|
std::array<Status, num_blobs> statuses_buf;
|
|
305
|
-
std::array<PinnableSlice, num_blobs> value_buf;
|
|
306
316
|
std::array<BlobReadRequest, num_blobs> requests_buf;
|
|
307
|
-
autovector<BlobReadRequest
|
|
317
|
+
autovector<std::pair<BlobReadRequest*, std::unique_ptr<BlobContents>>>
|
|
318
|
+
blob_reqs;
|
|
308
319
|
|
|
309
320
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
310
321
|
requests_buf[i] =
|
|
311
322
|
BlobReadRequest(key_refs[i], offsets[i], blob_sizes[i],
|
|
312
|
-
kNoCompression,
|
|
313
|
-
blob_reqs.
|
|
323
|
+
kNoCompression, nullptr, &statuses_buf[i]);
|
|
324
|
+
blob_reqs.emplace_back(&requests_buf[i], std::unique_ptr<BlobContents>());
|
|
314
325
|
}
|
|
315
326
|
|
|
316
|
-
reader->MultiGetBlob(read_options, blob_reqs, &bytes_read);
|
|
327
|
+
reader->MultiGetBlob(read_options, allocator, blob_reqs, &bytes_read);
|
|
317
328
|
|
|
318
329
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
319
330
|
if (i == 1) {
|
|
@@ -327,14 +338,15 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
327
338
|
// Incorrect key
|
|
328
339
|
{
|
|
329
340
|
constexpr char incorrect_key[] = "foo1";
|
|
330
|
-
|
|
341
|
+
std::unique_ptr<BlobContents> value;
|
|
331
342
|
uint64_t bytes_read = 0;
|
|
332
343
|
|
|
333
344
|
ASSERT_TRUE(reader
|
|
334
345
|
->GetBlob(read_options, incorrect_key, blob_offsets[0],
|
|
335
346
|
blob_sizes[0], kNoCompression, prefetch_buffer,
|
|
336
|
-
&value, &bytes_read)
|
|
347
|
+
allocator, &value, &bytes_read)
|
|
337
348
|
.IsCorruption());
|
|
349
|
+
ASSERT_EQ(value, nullptr);
|
|
338
350
|
ASSERT_EQ(bytes_read, 0);
|
|
339
351
|
|
|
340
352
|
// MultiGetBlob
|
|
@@ -346,19 +358,18 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
346
358
|
key_refs[2] = std::cref(wrong_key_slice);
|
|
347
359
|
|
|
348
360
|
std::array<Status, num_blobs> statuses_buf;
|
|
349
|
-
std::array<PinnableSlice, num_blobs> value_buf;
|
|
350
361
|
std::array<BlobReadRequest, num_blobs> requests_buf;
|
|
362
|
+
autovector<std::pair<BlobReadRequest*, std::unique_ptr<BlobContents>>>
|
|
363
|
+
blob_reqs;
|
|
351
364
|
|
|
352
365
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
353
366
|
requests_buf[i] =
|
|
354
367
|
BlobReadRequest(key_refs[i], blob_offsets[i], blob_sizes[i],
|
|
355
|
-
kNoCompression,
|
|
368
|
+
kNoCompression, nullptr, &statuses_buf[i]);
|
|
369
|
+
blob_reqs.emplace_back(&requests_buf[i], std::unique_ptr<BlobContents>());
|
|
356
370
|
}
|
|
357
371
|
|
|
358
|
-
|
|
359
|
-
&requests_buf[0], &requests_buf[1], &requests_buf[2]};
|
|
360
|
-
|
|
361
|
-
reader->MultiGetBlob(read_options, blob_reqs, &bytes_read);
|
|
372
|
+
reader->MultiGetBlob(read_options, allocator, blob_reqs, &bytes_read);
|
|
362
373
|
|
|
363
374
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
364
375
|
if (i == num_blobs - 1) {
|
|
@@ -371,14 +382,15 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
371
382
|
|
|
372
383
|
// Incorrect value size
|
|
373
384
|
{
|
|
374
|
-
|
|
385
|
+
std::unique_ptr<BlobContents> value;
|
|
375
386
|
uint64_t bytes_read = 0;
|
|
376
387
|
|
|
377
388
|
ASSERT_TRUE(reader
|
|
378
389
|
->GetBlob(read_options, keys[1], blob_offsets[1],
|
|
379
390
|
blob_sizes[1] + 1, kNoCompression,
|
|
380
|
-
prefetch_buffer, &value, &bytes_read)
|
|
391
|
+
prefetch_buffer, allocator, &value, &bytes_read)
|
|
381
392
|
.IsCorruption());
|
|
393
|
+
ASSERT_EQ(value, nullptr);
|
|
382
394
|
ASSERT_EQ(bytes_read, 0);
|
|
383
395
|
|
|
384
396
|
// MultiGetBlob
|
|
@@ -388,23 +400,26 @@ TEST_F(BlobFileReaderTest, CreateReaderAndGetBlob) {
|
|
|
388
400
|
}
|
|
389
401
|
|
|
390
402
|
std::array<Status, num_blobs> statuses_buf;
|
|
391
|
-
std::array<PinnableSlice, num_blobs> value_buf;
|
|
392
403
|
std::array<BlobReadRequest, num_blobs> requests_buf;
|
|
393
404
|
|
|
394
405
|
requests_buf[0] =
|
|
395
406
|
BlobReadRequest(key_refs[0], blob_offsets[0], blob_sizes[0],
|
|
396
|
-
kNoCompression,
|
|
407
|
+
kNoCompression, nullptr, &statuses_buf[0]);
|
|
397
408
|
requests_buf[1] =
|
|
398
409
|
BlobReadRequest(key_refs[1], blob_offsets[1], blob_sizes[1] + 1,
|
|
399
|
-
kNoCompression,
|
|
410
|
+
kNoCompression, nullptr, &statuses_buf[1]);
|
|
400
411
|
requests_buf[2] =
|
|
401
412
|
BlobReadRequest(key_refs[2], blob_offsets[2], blob_sizes[2],
|
|
402
|
-
kNoCompression,
|
|
413
|
+
kNoCompression, nullptr, &statuses_buf[2]);
|
|
403
414
|
|
|
404
|
-
autovector<BlobReadRequest
|
|
405
|
-
|
|
415
|
+
autovector<std::pair<BlobReadRequest*, std::unique_ptr<BlobContents>>>
|
|
416
|
+
blob_reqs;
|
|
406
417
|
|
|
407
|
-
|
|
418
|
+
for (size_t i = 0; i < num_blobs; ++i) {
|
|
419
|
+
blob_reqs.emplace_back(&requests_buf[i], std::unique_ptr<BlobContents>());
|
|
420
|
+
}
|
|
421
|
+
|
|
422
|
+
reader->MultiGetBlob(read_options, allocator, blob_reqs, &bytes_read);
|
|
408
423
|
|
|
409
424
|
for (size_t i = 0; i < num_blobs; ++i) {
|
|
410
425
|
if (i != 1) {
|
|
@@ -665,14 +680,17 @@ TEST_F(BlobFileReaderTest, BlobCRCError) {
|
|
|
665
680
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
666
681
|
|
|
667
682
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
668
|
-
|
|
683
|
+
constexpr MemoryAllocator* allocator = nullptr;
|
|
684
|
+
|
|
685
|
+
std::unique_ptr<BlobContents> value;
|
|
669
686
|
uint64_t bytes_read = 0;
|
|
670
687
|
|
|
671
688
|
ASSERT_TRUE(reader
|
|
672
689
|
->GetBlob(ReadOptions(), key, blob_offset, blob_size,
|
|
673
|
-
kNoCompression, prefetch_buffer, &value,
|
|
690
|
+
kNoCompression, prefetch_buffer, allocator, &value,
|
|
674
691
|
&bytes_read)
|
|
675
692
|
.IsCorruption());
|
|
693
|
+
ASSERT_EQ(value, nullptr);
|
|
676
694
|
ASSERT_EQ(bytes_read, 0);
|
|
677
695
|
|
|
678
696
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
@@ -720,28 +738,31 @@ TEST_F(BlobFileReaderTest, Compression) {
|
|
|
720
738
|
read_options.verify_checksums = false;
|
|
721
739
|
|
|
722
740
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
741
|
+
constexpr MemoryAllocator* allocator = nullptr;
|
|
723
742
|
|
|
724
743
|
{
|
|
725
|
-
|
|
744
|
+
std::unique_ptr<BlobContents> value;
|
|
726
745
|
uint64_t bytes_read = 0;
|
|
727
746
|
|
|
728
747
|
ASSERT_OK(reader->GetBlob(read_options, key, blob_offset, blob_size,
|
|
729
|
-
kSnappyCompression, prefetch_buffer,
|
|
730
|
-
&bytes_read));
|
|
731
|
-
|
|
748
|
+
kSnappyCompression, prefetch_buffer, allocator,
|
|
749
|
+
&value, &bytes_read));
|
|
750
|
+
ASSERT_NE(value, nullptr);
|
|
751
|
+
ASSERT_EQ(value->data(), blob);
|
|
732
752
|
ASSERT_EQ(bytes_read, blob_size);
|
|
733
753
|
}
|
|
734
754
|
|
|
735
755
|
read_options.verify_checksums = true;
|
|
736
756
|
|
|
737
757
|
{
|
|
738
|
-
|
|
758
|
+
std::unique_ptr<BlobContents> value;
|
|
739
759
|
uint64_t bytes_read = 0;
|
|
740
760
|
|
|
741
761
|
ASSERT_OK(reader->GetBlob(read_options, key, blob_offset, blob_size,
|
|
742
|
-
kSnappyCompression, prefetch_buffer,
|
|
743
|
-
&bytes_read));
|
|
744
|
-
|
|
762
|
+
kSnappyCompression, prefetch_buffer, allocator,
|
|
763
|
+
&value, &bytes_read));
|
|
764
|
+
ASSERT_NE(value, nullptr);
|
|
765
|
+
ASSERT_EQ(value->data(), blob);
|
|
745
766
|
|
|
746
767
|
constexpr uint64_t key_size = sizeof(key) - 1;
|
|
747
768
|
ASSERT_EQ(bytes_read,
|
|
@@ -799,14 +820,17 @@ TEST_F(BlobFileReaderTest, UncompressionError) {
|
|
|
799
820
|
SyncPoint::GetInstance()->EnableProcessing();
|
|
800
821
|
|
|
801
822
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
802
|
-
|
|
823
|
+
constexpr MemoryAllocator* allocator = nullptr;
|
|
824
|
+
|
|
825
|
+
std::unique_ptr<BlobContents> value;
|
|
803
826
|
uint64_t bytes_read = 0;
|
|
804
827
|
|
|
805
828
|
ASSERT_TRUE(reader
|
|
806
829
|
->GetBlob(ReadOptions(), key, blob_offset, blob_size,
|
|
807
|
-
kSnappyCompression, prefetch_buffer,
|
|
808
|
-
&bytes_read)
|
|
830
|
+
kSnappyCompression, prefetch_buffer, allocator,
|
|
831
|
+
&value, &bytes_read)
|
|
809
832
|
.IsCorruption());
|
|
833
|
+
ASSERT_EQ(value, nullptr);
|
|
810
834
|
ASSERT_EQ(bytes_read, 0);
|
|
811
835
|
|
|
812
836
|
SyncPoint::GetInstance()->DisableProcessing();
|
|
@@ -885,14 +909,17 @@ TEST_P(BlobFileReaderIOErrorTest, IOError) {
|
|
|
885
909
|
ASSERT_OK(s);
|
|
886
910
|
|
|
887
911
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
888
|
-
|
|
912
|
+
constexpr MemoryAllocator* allocator = nullptr;
|
|
913
|
+
|
|
914
|
+
std::unique_ptr<BlobContents> value;
|
|
889
915
|
uint64_t bytes_read = 0;
|
|
890
916
|
|
|
891
917
|
ASSERT_TRUE(reader
|
|
892
918
|
->GetBlob(ReadOptions(), key, blob_offset, blob_size,
|
|
893
|
-
kNoCompression, prefetch_buffer,
|
|
894
|
-
&bytes_read)
|
|
919
|
+
kNoCompression, prefetch_buffer, allocator,
|
|
920
|
+
&value, &bytes_read)
|
|
895
921
|
.IsIOError());
|
|
922
|
+
ASSERT_EQ(value, nullptr);
|
|
896
923
|
ASSERT_EQ(bytes_read, 0);
|
|
897
924
|
}
|
|
898
925
|
|
|
@@ -970,14 +997,17 @@ TEST_P(BlobFileReaderDecodingErrorTest, DecodingError) {
|
|
|
970
997
|
ASSERT_OK(s);
|
|
971
998
|
|
|
972
999
|
constexpr FilePrefetchBuffer* prefetch_buffer = nullptr;
|
|
973
|
-
|
|
1000
|
+
constexpr MemoryAllocator* allocator = nullptr;
|
|
1001
|
+
|
|
1002
|
+
std::unique_ptr<BlobContents> value;
|
|
974
1003
|
uint64_t bytes_read = 0;
|
|
975
1004
|
|
|
976
1005
|
ASSERT_TRUE(reader
|
|
977
1006
|
->GetBlob(ReadOptions(), key, blob_offset, blob_size,
|
|
978
|
-
kNoCompression, prefetch_buffer,
|
|
979
|
-
&bytes_read)
|
|
1007
|
+
kNoCompression, prefetch_buffer, allocator,
|
|
1008
|
+
&value, &bytes_read)
|
|
980
1009
|
.IsCorruption());
|
|
1010
|
+
ASSERT_EQ(value, nullptr);
|
|
981
1011
|
ASSERT_EQ(bytes_read, 0);
|
|
982
1012
|
}
|
|
983
1013
|
|