From 875faa41a0019ce2bf8cec82bc96d656a007494b Mon Sep 17 00:00:00 2001 From: John Spray Date: Mon, 5 Dec 2022 13:56:58 -0500 Subject: [PATCH] storage: assert out on EIO in read --- src/v/storage/log_reader.cc | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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(