From e08160b1ecb4ea98b0c60eb500be779a7d11dcbd Mon Sep 17 00:00:00 2001 From: Gleb Natapov Date: Wed, 9 Sep 2015 12:29:53 +0300 Subject: [PATCH] storage_proxy: do not report disconnects as errors Connection drop during read operation is not an error and should not be reported as such. Furthermore disconnects are already reported by gossip, so no need to report it for each ongoing read again. Fixes #320 --- service/storage_proxy.cc | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/service/storage_proxy.cc b/service/storage_proxy.cc index b4fa0b2b8a..79b806f910 100644 --- a/service/storage_proxy.cc +++ b/service/storage_proxy.cc @@ -1224,7 +1224,18 @@ public: future<> done() { return _done_promise.get_future(); } - virtual void error(gms::inet_address ep, sstring why) { + virtual void error(gms::inet_address ep, std::exception_ptr eptr) { + sstring why; + try { + std::rethrow_exception(eptr); + } catch (rpc::closed_error&) { + return; // do not report connection closed exception, gossiper does that + } catch(std::exception& e) { + why = e.what(); + } catch(...) { + why = "Unknown exception"; + } + // do nothing other than log for now, request will timeout eventually logger.error("Exception when communicating with {}: {}", ep, why); } @@ -1430,16 +1441,6 @@ public: virtual ~abstract_read_executor() {}; protected: - static sstring error_sstring(std::exception_ptr eptr) { - try { - std::rethrow_exception(eptr); - } catch(std::exception& e) { - return sstring(e.what()); - } catch(...) { - return sstring("Unknown exception"); - } - } - future>> make_mutation_data_request(lw_shared_ptr cmd, gms::inet_address ep) { if (is_me(ep)) { return _proxy->query_mutations_locally(cmd, _partition_range); @@ -1474,7 +1475,7 @@ protected: try { resolver->add_mutate_data(ep, f.get0()); } catch(...) { - resolver->error(ep, error_sstring(std::current_exception())); + resolver->error(ep, std::current_exception()); } }); }); @@ -1485,7 +1486,7 @@ protected: try { resolver->add_data(ep, f.get0()); } catch(...) { - resolver->error(ep, error_sstring(std::current_exception())); + resolver->error(ep, std::current_exception()); } }); }); @@ -1496,7 +1497,7 @@ protected: try { resolver->add_digest(ep, f.get0()); } catch(...) { - resolver->error(ep, error_sstring(std::current_exception())); + resolver->error(ep, std::current_exception()); } }); });