default:
ceph_abort("impossible next step");
}
- }).handle_exception([this] (std::exception_ptr eptr) {
+ }).handle_exception([this](std::exception_ptr eptr) {
+ const char *e_what;
+ try {
+ std::rethrow_exception(eptr);
+ } catch (std::exception &e) {
+ e_what = e.what();
+ }
logger().info("{} execute_accepting(): fault at {}, going to CLOSING -- {}",
- conn, get_state_name(state), eptr);
+ conn, get_state_name(state), e_what);
do_close(false);
});
});
}
logger().info("{} execute_wait(): going to CONNECTING", conn);
execute_connecting();
- }).handle_exception([this] (std::exception_ptr eptr) {
+ }).handle_exception([this](std::exception_ptr eptr) {
+ const char *e_what;
+ try {
+ std::rethrow_exception(eptr);
+ } catch (std::exception &e) {
+ e_what = e.what();
+ }
logger().info("{} execute_wait(): protocol aborted at {} -- {}",
- conn, get_state_name(state), eptr);
+ conn, get_state_name(state), e_what);
assert(state == state_t::REPLACING ||
state == state_t::CLOSING);
});
).then([this](auto bl) {
logger().warn("{} SERVER_WAIT got read, abort", conn);
abort_in_fault();
- }).handle_exception([this] (std::exception_ptr eptr) {
+ }).handle_exception([this](std::exception_ptr eptr) {
+ const char *e_what;
+ try {
+ std::rethrow_exception(eptr);
+ } catch (std::exception &e) {
+ e_what = e.what();
+ }
logger().info("{} execute_server_wait(): fault at {}, going to CLOSING -- {}",
- conn, get_state_name(state), eptr);
+ conn, get_state_name(state), e_what);
do_close(false);
});
});
e.code() != std::errc::connection_reset &&
e.code() != error::negotiation_failure) {
logger().error("{} do_out_dispatch(): unexpected error at {} -- {}",
- conn, io_state, e);
+ conn, io_state, e.what());
ceph_abort();
}
if (io_state == io_state_t::open) {
logger().info("{} do_out_dispatch(): fault at {}, going to delay -- {}",
- conn, io_state, e);
+ conn, io_state, e.what());
std::exception_ptr eptr;
try {
throw e;
handshake_listener->notify_out_fault("do_out_dispatch", eptr);
} else {
logger().info("{} do_out_dispatch(): fault at {} -- {}",
- conn, io_state, e);
+ conn, io_state, e.what());
}
return do_out_dispatch();