diff --git a/src/v/storage/log_reader.cc b/src/v/storage/log_reader.cc index c9b0aa6e7c00..4afe08986fb8 100644 --- a/src/v/storage/log_reader.cc +++ b/src/v/storage/log_reader.cc @@ -202,14 +202,23 @@ log_segment_batch_reader::read_some(model::timeout_clock::time_point timeout) { _iterator = co_await initialize(timeout, cache_read.next_cached_batch); } auto ptr = _iterator.get(); - co_return co_await ptr->consume().then( - [this](result bytes_consumed) -> result { + co_return co_await ptr->consume() + .then([this](result bytes_consumed) -> result { if (!bytes_consumed) { return bytes_consumed.error(); } auto tmp = std::exchange(_state, {}); return result(std::move(tmp.buffer)); - }); + }) + .handle_exception_type( + [](const std::system_error& ec) -> ss::future> { + if (ec.code().value() == EIO) { + vassert(false, "I/O error during read! Disk failure?"); + } else { + return ss::make_exception_future>( + std::current_exception()); + } + }); } log_reader::log_reader(