From 00d4028ed90fe8b72dbb7e9bffafa9f4d476267e Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 24 Jul 2020 21:11:08 +0800 Subject: [PATCH] crimson/admin: catch thrown exception if the socket file exists, a std::system_error is thrown. and we should catch it. Signed-off-by: Kefu Chai --- src/crimson/admin/admin_socket.cc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/crimson/admin/admin_socket.cc b/src/crimson/admin/admin_socket.cc index db21e29f1e0..40f7cc834c6 100644 --- a/src/crimson/admin/admin_socket.cc +++ b/src/crimson/admin/admin_socket.cc @@ -233,7 +233,13 @@ seastar::future<> AdminSocket::start(const std::string& path) logger().debug("{}: asok socket path={}", __func__, path); auto sock_path = seastar::socket_address{ seastar::unix_domain_addr{ path } }; - server_sock = seastar::engine().listen(sock_path); + try { + server_sock = seastar::engine().listen(sock_path); + } catch (const std::system_error& e) { + logger().error("{}: unable to listen({}): {}", __func__, path, e.what()); + server_sock.reset(); + return seastar::make_ready_future<>(); + } // listen in background task = seastar::do_until( [this] { return stop_gate.is_closed(); }, -- 2.47.3