From feec3825aa2ceb0afa42e92304da1cb278cda4e9 Mon Sep 17 00:00:00 2001 From: Piotr Sarna Date: Thu, 12 Sep 2019 13:05:33 +0200 Subject: [PATCH] view: degrade shutdown bookkeeping update failures log to warn Currently, if updating bookkeeping operations for view building fails, we log the error message and continue. However, during shutdown, some errors are more likely to happen due to existing issues like #4384. To differentiate actual errors from semi-expected errors during shutdown, the latter are now logged with a warning level instead of error. Fixes #4954 --- db/view/view.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/db/view/view.cc b/db/view/view.cc index 3746338773..f537858489 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -1405,8 +1405,9 @@ future<> view_builder::calculate_shard_build_step( } auto f = seastar::when_all_succeed(bookkeeping_ops->begin(), bookkeeping_ops->end()); - return f.handle_exception([bookkeeping_ops = std::move(bookkeeping_ops)] (std::exception_ptr ep) { - vlogger.error("Failed to update materialized view bookkeeping ({}), continuing anyway.", ep); + return f.handle_exception([this, bookkeeping_ops = std::move(bookkeeping_ops)] (std::exception_ptr ep) { + log_level severity = _as.abort_requested() ? log_level::warn : log_level::error; + vlogger.log(severity, "Failed to update materialized view bookkeeping ({}), continuing anyway.", ep); }); } @@ -1724,8 +1725,9 @@ void view_builder::execute(build_step& step, exponential_backoff_retry r) { system_keyspace::update_view_build_progress(view->ks_name(), view->cf_name(), *next_token)); } } - seastar::when_all_succeed(bookkeeping_ops.begin(), bookkeeping_ops.end()).handle_exception([] (std::exception_ptr ep) { - vlogger.error("Failed to update materialized view bookkeeping ({}), continuing anyway.", ep); + seastar::when_all_succeed(bookkeeping_ops.begin(), bookkeeping_ops.end()).handle_exception([this] (std::exception_ptr ep) { + log_level severity = _as.abort_requested() ? log_level::warn : log_level::error; + vlogger.log(severity, "Failed to update materialized view bookkeeping ({}), continuing anyway.", ep); }).get(); }