@nxtedition/rocksdb 7.0.24 → 7.0.25

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 (146) hide show
  1. package/binding.cc +3 -1
  2. package/deps/rocksdb/rocksdb/CMakeLists.txt +5 -0
  3. package/deps/rocksdb/rocksdb/Makefile +6 -2
  4. package/deps/rocksdb/rocksdb/TARGETS +14 -0
  5. package/deps/rocksdb/rocksdb/cache/cache_bench_tool.cc +4 -1
  6. package/deps/rocksdb/rocksdb/cache/cache_helpers.h +20 -0
  7. package/deps/rocksdb/rocksdb/cache/cache_reservation_manager_test.cc +2 -2
  8. package/deps/rocksdb/rocksdb/cache/cache_test.cc +44 -31
  9. package/deps/rocksdb/rocksdb/cache/clock_cache.cc +491 -722
  10. package/deps/rocksdb/rocksdb/cache/clock_cache.h +468 -2
  11. package/deps/rocksdb/rocksdb/cache/compressed_secondary_cache.cc +1 -1
  12. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.cc +51 -52
  13. package/deps/rocksdb/rocksdb/cache/fast_lru_cache.h +28 -16
  14. package/deps/rocksdb/rocksdb/cache/lru_cache.cc +12 -1
  15. package/deps/rocksdb/rocksdb/cache/lru_cache.h +1 -0
  16. package/deps/rocksdb/rocksdb/cache/lru_cache_test.cc +170 -36
  17. package/deps/rocksdb/rocksdb/db/blob/blob_file_cache_test.cc +1 -1
  18. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.cc +63 -36
  19. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader.h +4 -6
  20. package/deps/rocksdb/rocksdb/db/blob/blob_file_reader_test.cc +57 -38
  21. package/deps/rocksdb/rocksdb/db/blob/blob_read_request.h +58 -0
  22. package/deps/rocksdb/rocksdb/db/blob/blob_source.cc +164 -74
  23. package/deps/rocksdb/rocksdb/db/blob/blob_source.h +42 -29
  24. package/deps/rocksdb/rocksdb/db/blob/blob_source_test.cc +419 -62
  25. package/deps/rocksdb/rocksdb/db/blob/db_blob_basic_test.cc +208 -8
  26. package/deps/rocksdb/rocksdb/db/c.cc +68 -0
  27. package/deps/rocksdb/rocksdb/db/c_test.c +95 -2
  28. package/deps/rocksdb/rocksdb/db/column_family.cc +12 -3
  29. package/deps/rocksdb/rocksdb/db/compaction/compaction.cc +92 -15
  30. package/deps/rocksdb/rocksdb/db/compaction/compaction.h +76 -4
  31. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.cc +52 -1
  32. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator.h +30 -1
  33. package/deps/rocksdb/rocksdb/db/compaction/compaction_iterator_test.cc +126 -0
  34. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.cc +203 -1584
  35. package/deps/rocksdb/rocksdb/db/compaction/compaction_job.h +93 -26
  36. package/deps/rocksdb/rocksdb/db/compaction/compaction_job_test.cc +87 -1
  37. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.cc +314 -0
  38. package/deps/rocksdb/rocksdb/db/compaction/compaction_outputs.h +328 -0
  39. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.cc +32 -6
  40. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker.h +4 -1
  41. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_fifo.cc +7 -3
  42. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_level.cc +174 -33
  43. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_test.cc +474 -7
  44. package/deps/rocksdb/rocksdb/db/compaction/compaction_picker_universal.cc +5 -2
  45. package/deps/rocksdb/rocksdb/db/compaction/compaction_service_job.cc +825 -0
  46. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.cc +46 -0
  47. package/deps/rocksdb/rocksdb/db/compaction/compaction_state.h +42 -0
  48. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.cc +223 -0
  49. package/deps/rocksdb/rocksdb/db/compaction/subcompaction_state.h +255 -0
  50. package/deps/rocksdb/rocksdb/db/compaction/tiered_compaction_test.cc +1253 -0
  51. package/deps/rocksdb/rocksdb/db/corruption_test.cc +32 -8
  52. package/deps/rocksdb/rocksdb/db/db_basic_test.cc +3 -1
  53. package/deps/rocksdb/rocksdb/db/db_block_cache_test.cc +13 -8
  54. package/deps/rocksdb/rocksdb/db/db_bloom_filter_test.cc +376 -0
  55. package/deps/rocksdb/rocksdb/db/db_compaction_test.cc +103 -78
  56. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.cc +4 -6
  57. package/deps/rocksdb/rocksdb/db/db_impl/db_impl.h +0 -8
  58. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_open.cc +10 -3
  59. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.cc +21 -6
  60. package/deps/rocksdb/rocksdb/db/db_impl/db_impl_secondary.h +19 -1
  61. package/deps/rocksdb/rocksdb/db/db_iter.cc +91 -14
  62. package/deps/rocksdb/rocksdb/db/db_iter.h +5 -0
  63. package/deps/rocksdb/rocksdb/db/db_kv_checksum_test.cc +33 -0
  64. package/deps/rocksdb/rocksdb/db/db_properties_test.cc +79 -0
  65. package/deps/rocksdb/rocksdb/db/db_range_del_test.cc +2 -0
  66. package/deps/rocksdb/rocksdb/db/db_test2.cc +1 -1
  67. package/deps/rocksdb/rocksdb/db/db_wal_test.cc +5 -2
  68. package/deps/rocksdb/rocksdb/db/db_with_timestamp_basic_test.cc +185 -0
  69. package/deps/rocksdb/rocksdb/db/dbformat.cc +1 -4
  70. package/deps/rocksdb/rocksdb/db/dbformat.h +2 -8
  71. package/deps/rocksdb/rocksdb/db/internal_stats.cc +71 -29
  72. package/deps/rocksdb/rocksdb/db/internal_stats.h +160 -5
  73. package/deps/rocksdb/rocksdb/db/log_reader.cc +29 -3
  74. package/deps/rocksdb/rocksdb/db/log_reader.h +12 -3
  75. package/deps/rocksdb/rocksdb/db/repair_test.cc +1 -3
  76. package/deps/rocksdb/rocksdb/db/version_edit.cc +6 -0
  77. package/deps/rocksdb/rocksdb/db/version_set.cc +93 -129
  78. package/deps/rocksdb/rocksdb/db/version_set.h +4 -4
  79. package/deps/rocksdb/rocksdb/db/version_set_sync_and_async.h +2 -2
  80. package/deps/rocksdb/rocksdb/db/version_set_test.cc +42 -35
  81. package/deps/rocksdb/rocksdb/db/write_batch.cc +10 -2
  82. package/deps/rocksdb/rocksdb/db/write_batch_internal.h +4 -1
  83. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.cc +10 -4
  84. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_common.h +3 -3
  85. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_driver.cc +3 -2
  86. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_gflags.cc +4 -0
  87. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_shared_state.h +5 -1
  88. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.cc +140 -8
  89. package/deps/rocksdb/rocksdb/db_stress_tool/db_stress_test_base.h +12 -0
  90. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.cc +46 -7
  91. package/deps/rocksdb/rocksdb/db_stress_tool/multi_ops_txns_stress.h +7 -0
  92. package/deps/rocksdb/rocksdb/db_stress_tool/no_batched_ops_stress.cc +27 -7
  93. package/deps/rocksdb/rocksdb/env/composite_env_wrapper.h +8 -0
  94. package/deps/rocksdb/rocksdb/env/env_posix.cc +14 -0
  95. package/deps/rocksdb/rocksdb/env/env_test.cc +130 -1
  96. package/deps/rocksdb/rocksdb/env/fs_posix.cc +7 -1
  97. package/deps/rocksdb/rocksdb/env/io_posix.cc +18 -50
  98. package/deps/rocksdb/rocksdb/env/io_posix.h +53 -6
  99. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.cc +8 -10
  100. package/deps/rocksdb/rocksdb/file/file_prefetch_buffer.h +3 -7
  101. package/deps/rocksdb/rocksdb/file/prefetch_test.cc +239 -259
  102. package/deps/rocksdb/rocksdb/file/random_access_file_reader.cc +84 -19
  103. package/deps/rocksdb/rocksdb/file/random_access_file_reader.h +24 -4
  104. package/deps/rocksdb/rocksdb/include/rocksdb/advanced_options.h +1 -1
  105. package/deps/rocksdb/rocksdb/include/rocksdb/c.h +31 -1
  106. package/deps/rocksdb/rocksdb/include/rocksdb/cache.h +11 -7
  107. package/deps/rocksdb/rocksdb/include/rocksdb/compaction_job_stats.h +2 -0
  108. package/deps/rocksdb/rocksdb/include/rocksdb/db.h +14 -0
  109. package/deps/rocksdb/rocksdb/include/rocksdb/env.h +20 -0
  110. package/deps/rocksdb/rocksdb/include/rocksdb/options.h +37 -13
  111. package/deps/rocksdb/rocksdb/include/rocksdb/perf_context.h +7 -0
  112. package/deps/rocksdb/rocksdb/include/rocksdb/statistics.h +14 -0
  113. package/deps/rocksdb/rocksdb/include/rocksdb/threadpool.h +9 -0
  114. package/deps/rocksdb/rocksdb/include/rocksdb/write_batch.h +13 -13
  115. package/deps/rocksdb/rocksdb/logging/auto_roll_logger.cc +12 -2
  116. package/deps/rocksdb/rocksdb/monitoring/perf_context.cc +38 -0
  117. package/deps/rocksdb/rocksdb/monitoring/statistics.cc +7 -1
  118. package/deps/rocksdb/rocksdb/port/win/env_win.cc +17 -0
  119. package/deps/rocksdb/rocksdb/port/win/env_win.h +8 -0
  120. package/deps/rocksdb/rocksdb/port/win/io_win.cc +6 -3
  121. package/{prebuilds → deps/rocksdb/rocksdb/prebuilds}/linux-x64/node.napi.node +0 -0
  122. package/deps/rocksdb/rocksdb/src.mk +5 -0
  123. package/deps/rocksdb/rocksdb/table/block_based/block.h +1 -2
  124. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_builder.cc +1 -1
  125. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_iterator.cc +5 -2
  126. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader.cc +1 -1
  127. package/deps/rocksdb/rocksdb/table/block_based/block_based_table_reader_impl.h +15 -12
  128. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.cc +5 -4
  129. package/deps/rocksdb/rocksdb/table/block_based/block_prefetcher.h +2 -1
  130. package/deps/rocksdb/rocksdb/table/block_based/filter_policy.cc +1 -1
  131. package/deps/rocksdb/rocksdb/table/block_based/partitioned_index_iterator.cc +4 -4
  132. package/deps/rocksdb/rocksdb/table/block_fetcher.cc +1 -2
  133. package/deps/rocksdb/rocksdb/table/get_context.cc +1 -0
  134. package/deps/rocksdb/rocksdb/table/sst_file_dumper.cc +1 -2
  135. package/deps/rocksdb/rocksdb/tools/db_bench_tool.cc +24 -4
  136. package/deps/rocksdb/rocksdb/util/async_file_reader.cc +1 -1
  137. package/deps/rocksdb/rocksdb/util/compression.h +2 -0
  138. package/deps/rocksdb/rocksdb/util/thread_list_test.cc +18 -1
  139. package/deps/rocksdb/rocksdb/util/threadpool_imp.cc +67 -4
  140. package/deps/rocksdb/rocksdb/util/threadpool_imp.h +8 -0
  141. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine.cc +15 -12
  142. package/deps/rocksdb/rocksdb/utilities/backup/backup_engine_test.cc +4 -2
  143. package/deps/rocksdb/rocksdb/utilities/simulator_cache/sim_cache_test.cc +1 -1
  144. package/deps/rocksdb/rocksdb.gyp +5 -1
  145. package/package.json +1 -1
  146. package/prebuilds/darwin-arm64/node.napi.node +0 -0
@@ -1102,15 +1102,21 @@ class PosixFileSystem : public FileSystem {
1102
1102
  req.scratch = posix_handle->scratch;
1103
1103
  req.offset = posix_handle->offset;
1104
1104
  req.len = posix_handle->len;
1105
+
1105
1106
  size_t finished_len = 0;
1106
1107
  size_t bytes_read = 0;
1108
+ bool read_again = false;
1107
1109
  UpdateResult(cqe, "", req.len, posix_handle->iov.iov_len,
1108
- true /*async_read*/, finished_len, &req, bytes_read);
1110
+ true /*async_read*/, posix_handle->use_direct_io,
1111
+ posix_handle->alignment, finished_len, &req, bytes_read,
1112
+ read_again);
1109
1113
  posix_handle->is_finished = true;
1110
1114
  io_uring_cqe_seen(iu, cqe);
1111
1115
  posix_handle->cb(req, posix_handle->cb_arg);
1116
+
1112
1117
  (void)finished_len;
1113
1118
  (void)bytes_read;
1119
+ (void)read_again;
1114
1120
 
1115
1121
  if (static_cast<Posix_IOHandle*>(io_handles[i]) == posix_handle) {
1116
1122
  break;
@@ -199,23 +199,6 @@ bool IsSyncFileRangeSupported(int fd) {
199
199
 
200
200
  } // anonymous namespace
201
201
 
202
- /*
203
- * DirectIOHelper
204
- */
205
- namespace {
206
-
207
- bool IsSectorAligned(const size_t off, size_t sector_size) {
208
- assert((sector_size & (sector_size - 1)) == 0);
209
- return (off & (sector_size - 1)) == 0;
210
- }
211
-
212
- #ifndef NDEBUG
213
- bool IsSectorAligned(const void* ptr, size_t sector_size) {
214
- return uintptr_t(ptr) % sector_size == 0;
215
- }
216
- #endif
217
- } // namespace
218
-
219
202
  /*
220
203
  * PosixSequentialFile
221
204
  */
@@ -760,32 +743,21 @@ IOStatus PosixRandomAccessFile::MultiRead(FSReadRequest* reqs,
760
743
 
761
744
  FSReadRequest* req = req_wrap->req;
762
745
  size_t bytes_read = 0;
746
+ bool read_again = false;
763
747
  UpdateResult(cqe, filename_, req->len, req_wrap->iov.iov_len,
764
- false /*async_read*/, req_wrap->finished_len, req,
765
- bytes_read);
748
+ false /*async_read*/, use_direct_io(),
749
+ GetRequiredBufferAlignment(), req_wrap->finished_len, req,
750
+ bytes_read, read_again);
766
751
  int32_t res = cqe->res;
767
752
  if (res >= 0) {
768
- if (bytes_read == 0) {
769
- /// cqe->res == 0 can means EOF, or can mean partial results. See
770
- // comment
771
- // https://github.com/facebook/rocksdb/pull/6441#issuecomment-589843435
772
- // Fall back to pread in this case.
773
- if (use_direct_io() &&
774
- !IsSectorAligned(req_wrap->finished_len,
775
- GetRequiredBufferAlignment())) {
776
- // Bytes reads don't fill sectors. Should only happen at the end
777
- // of the file.
778
- req->result = Slice(req->scratch, req_wrap->finished_len);
779
- req->status = IOStatus::OK();
780
- } else {
781
- Slice tmp_slice;
782
- req->status =
783
- Read(req->offset + req_wrap->finished_len,
784
- req->len - req_wrap->finished_len, options, &tmp_slice,
785
- req->scratch + req_wrap->finished_len, dbg);
786
- req->result =
787
- Slice(req->scratch, req_wrap->finished_len + tmp_slice.size());
788
- }
753
+ if (bytes_read == 0 && read_again) {
754
+ Slice tmp_slice;
755
+ req->status =
756
+ Read(req->offset + req_wrap->finished_len,
757
+ req->len - req_wrap->finished_len, options, &tmp_slice,
758
+ req->scratch + req_wrap->finished_len, dbg);
759
+ req->result =
760
+ Slice(req->scratch, req_wrap->finished_len + tmp_slice.size());
789
761
  } else if (bytes_read < req_wrap->iov.iov_len) {
790
762
  incomplete_rq_list.push_back(req_wrap);
791
763
  }
@@ -910,19 +882,15 @@ IOStatus PosixRandomAccessFile::ReadAsync(
910
882
  args = nullptr;
911
883
  };
912
884
 
913
- Posix_IOHandle* posix_handle = new Posix_IOHandle();
914
- *io_handle = static_cast<void*>(posix_handle);
915
- *del_fn = deletefn;
916
-
917
885
  // Initialize Posix_IOHandle.
918
- posix_handle->iu = iu;
886
+ Posix_IOHandle* posix_handle =
887
+ new Posix_IOHandle(iu, cb, cb_arg, req.offset, req.len, req.scratch,
888
+ use_direct_io(), GetRequiredBufferAlignment());
919
889
  posix_handle->iov.iov_base = req.scratch;
920
890
  posix_handle->iov.iov_len = req.len;
921
- posix_handle->cb = cb;
922
- posix_handle->cb_arg = cb_arg;
923
- posix_handle->offset = req.offset;
924
- posix_handle->len = req.len;
925
- posix_handle->scratch = req.scratch;
891
+
892
+ *io_handle = static_cast<void*>(posix_handle);
893
+ *del_fn = deletefn;
926
894
 
927
895
  // Step 3: io_uring_sqe_set_data
928
896
  struct io_uring_sqe* sqe;
@@ -52,8 +52,37 @@ class PosixHelper {
52
52
  size_t* size);
53
53
  };
54
54
 
55
+ /*
56
+ * DirectIOHelper
57
+ */
58
+ inline bool IsSectorAligned(const size_t off, size_t sector_size) {
59
+ assert((sector_size & (sector_size - 1)) == 0);
60
+ return (off & (sector_size - 1)) == 0;
61
+ }
62
+
63
+ #ifndef NDEBUG
64
+ inline bool IsSectorAligned(const void* ptr, size_t sector_size) {
65
+ return uintptr_t(ptr) % sector_size == 0;
66
+ }
67
+ #endif
68
+
55
69
  #if defined(ROCKSDB_IOURING_PRESENT)
56
70
  struct Posix_IOHandle {
71
+ Posix_IOHandle(struct io_uring* _iu,
72
+ std::function<void(const FSReadRequest&, void*)> _cb,
73
+ void* _cb_arg, uint64_t _offset, size_t _len, char* _scratch,
74
+ bool _use_direct_io, size_t _alignment)
75
+ : iu(_iu),
76
+ cb(_cb),
77
+ cb_arg(_cb_arg),
78
+ offset(_offset),
79
+ len(_len),
80
+ scratch(_scratch),
81
+ use_direct_io(_use_direct_io),
82
+ alignment(_alignment),
83
+ is_finished(false),
84
+ req_count(0) {}
85
+
57
86
  struct iovec iov;
58
87
  struct io_uring* iu;
59
88
  std::function<void(const FSReadRequest&, void*)> cb;
@@ -61,15 +90,19 @@ struct Posix_IOHandle {
61
90
  uint64_t offset;
62
91
  size_t len;
63
92
  char* scratch;
64
- bool is_finished = false;
93
+ bool use_direct_io;
94
+ size_t alignment;
95
+ bool is_finished;
65
96
  // req_count is used by AbortIO API to keep track of number of requests.
66
- uint32_t req_count = 0;
97
+ uint32_t req_count;
67
98
  };
68
99
 
69
100
  inline void UpdateResult(struct io_uring_cqe* cqe, const std::string& file_name,
70
101
  size_t len, size_t iov_len, bool async_read,
102
+ bool use_direct_io, size_t alignment,
71
103
  size_t& finished_len, FSReadRequest* req,
72
- size_t& bytes_read) {
104
+ size_t& bytes_read, bool& read_again) {
105
+ read_again = false;
73
106
  if (cqe->res < 0) {
74
107
  req->result = Slice(req->scratch, 0);
75
108
  req->status = IOError("Req failed", file_name, cqe->res);
@@ -80,10 +113,24 @@ inline void UpdateResult(struct io_uring_cqe* cqe, const std::string& file_name,
80
113
  req->result = Slice(req->scratch, req->len);
81
114
  req->status = IOStatus::OK();
82
115
  } else if (bytes_read == 0) {
83
- if (async_read) {
84
- // No bytes read. It can means EOF.
85
- req->result = Slice(req->scratch, 0);
116
+ /// cqe->res == 0 can means EOF, or can mean partial results. See
117
+ // comment
118
+ // https://github.com/facebook/rocksdb/pull/6441#issuecomment-589843435
119
+ // Fall back to pread in this case.
120
+ if (use_direct_io && !IsSectorAligned(finished_len, alignment)) {
121
+ // Bytes reads don't fill sectors. Should only happen at the end
122
+ // of the file.
123
+ req->result = Slice(req->scratch, finished_len);
86
124
  req->status = IOStatus::OK();
125
+ } else {
126
+ if (async_read) {
127
+ // No bytes read. It can means EOF. In case of partial results, it's
128
+ // caller responsibility to call read/readasync again.
129
+ req->result = Slice(req->scratch, 0);
130
+ req->status = IOStatus::OK();
131
+ } else {
132
+ read_again = true;
133
+ }
87
134
  }
88
135
  } else if (bytes_read < iov_len) {
89
136
  assert(bytes_read > 0);
@@ -88,7 +88,7 @@ Status FilePrefetchBuffer::Read(const IOOptions& opts,
88
88
  Slice result;
89
89
  Status s = reader->Read(opts, rounddown_start + chunk_len, read_len, &result,
90
90
  bufs_[index].buffer_.BufferStart() + chunk_len,
91
- nullptr, rate_limiter_priority);
91
+ /*aligned_buf=*/nullptr, rate_limiter_priority);
92
92
  #ifndef NDEBUG
93
93
  if (result.size() < read_len) {
94
94
  // Fake an IO error to force db_stress fault injection to ignore
@@ -108,7 +108,6 @@ Status FilePrefetchBuffer::Read(const IOOptions& opts,
108
108
 
109
109
  Status FilePrefetchBuffer::ReadAsync(const IOOptions& opts,
110
110
  RandomAccessFileReader* reader,
111
- Env::IOPriority rate_limiter_priority,
112
111
  uint64_t read_len, uint64_t chunk_len,
113
112
  uint64_t rounddown_start, uint32_t index) {
114
113
  // callback for async read request.
@@ -120,8 +119,9 @@ Status FilePrefetchBuffer::ReadAsync(const IOOptions& opts,
120
119
  req.offset = rounddown_start + chunk_len;
121
120
  req.result = result;
122
121
  req.scratch = bufs_[index].buffer_.BufferStart() + chunk_len;
123
- Status s = reader->ReadAsync(req, opts, fp, nullptr /*cb_arg*/, &io_handle_,
124
- &del_fn_, rate_limiter_priority);
122
+ Status s = reader->ReadAsync(req, opts, fp,
123
+ /*cb_arg=*/nullptr, &io_handle_, &del_fn_,
124
+ /*aligned_buf=*/nullptr);
125
125
  req.status.PermitUncheckedError();
126
126
  if (s.ok()) {
127
127
  async_read_in_progress_ = true;
@@ -373,8 +373,7 @@ Status FilePrefetchBuffer::PrefetchAsyncInternal(
373
373
  bufs_[second].offset_ = rounddown_start2;
374
374
  assert(roundup_len2 >= chunk_len2);
375
375
  uint64_t read_len2 = static_cast<size_t>(roundup_len2 - chunk_len2);
376
- ReadAsync(opts, reader, rate_limiter_priority, read_len2, chunk_len2,
377
- rounddown_start2, second)
376
+ ReadAsync(opts, reader, read_len2, chunk_len2, rounddown_start2, second)
378
377
  .PermitUncheckedError();
379
378
  }
380
379
 
@@ -544,7 +543,8 @@ void FilePrefetchBuffer::PrefetchAsyncCallback(const FSReadRequest& req,
544
543
  if (req.status.ok()) {
545
544
  if (req.offset + req.result.size() <=
546
545
  bufs_[index].offset_ + bufs_[index].buffer_.CurrentSize()) {
547
- // All requested bytes are already in the buffer. So no need to update.
546
+ // All requested bytes are already in the buffer or no data is read
547
+ // because of EOF. So no need to update.
548
548
  return;
549
549
  }
550
550
  if (req.offset < bufs_[index].offset_) {
@@ -560,7 +560,6 @@ void FilePrefetchBuffer::PrefetchAsyncCallback(const FSReadRequest& req,
560
560
  Status FilePrefetchBuffer::PrefetchAsync(const IOOptions& opts,
561
561
  RandomAccessFileReader* reader,
562
562
  uint64_t offset, size_t n,
563
- Env::IOPriority rate_limiter_priority,
564
563
  Slice* result) {
565
564
  assert(reader != nullptr);
566
565
  if (!enable_) {
@@ -630,8 +629,7 @@ Status FilePrefetchBuffer::PrefetchAsync(const IOOptions& opts,
630
629
 
631
630
  size_t read_len = static_cast<size_t>(roundup_len - chunk_len);
632
631
 
633
- s = ReadAsync(opts, reader, rate_limiter_priority, read_len, chunk_len,
634
- rounddown_start, second);
632
+ s = ReadAsync(opts, reader, read_len, chunk_len, rounddown_start, second);
635
633
 
636
634
  if (!s.ok()) {
637
635
  return s;
@@ -138,16 +138,13 @@ class FilePrefetchBuffer {
138
138
  // reader : the file reader.
139
139
  // offset : the file offset to start reading from.
140
140
  // n : the number of bytes to read.
141
- // rate_limiter_priority : rate limiting priority, or `Env::IO_TOTAL` to
142
- // bypass.
143
141
  // result : if data already exists in the buffer, result will
144
142
  // be updated with the data.
145
143
  //
146
144
  // If data already exist in the buffer, it will return Status::OK, otherwise
147
145
  // it will send asynchronous request and return Status::TryAgain.
148
146
  Status PrefetchAsync(const IOOptions& opts, RandomAccessFileReader* reader,
149
- uint64_t offset, size_t n,
150
- Env::IOPriority rate_limiter_priority, Slice* result);
147
+ uint64_t offset, size_t n, Slice* result);
151
148
 
152
149
  // Tries returning the data for a file read from this buffer if that data is
153
150
  // in the buffer.
@@ -246,9 +243,8 @@ class FilePrefetchBuffer {
246
243
  uint64_t chunk_len, uint64_t rounddown_start, uint32_t index);
247
244
 
248
245
  Status ReadAsync(const IOOptions& opts, RandomAccessFileReader* reader,
249
- Env::IOPriority rate_limiter_priority, uint64_t read_len,
250
- uint64_t chunk_len, uint64_t rounddown_start,
251
- uint32_t index);
246
+ uint64_t read_len, uint64_t chunk_len,
247
+ uint64_t rounddown_start, uint32_t index);
252
248
 
253
249
  // Copy the data from src to third buffer.
254
250
  void CopyDataToBuffer(uint32_t src, uint64_t& offset, size_t& length);