diff --git a/userspace/falco/grpc_server.cpp b/userspace/falco/grpc_server.cpp index 8cdcb8b5..e80d35a6 100644 --- a/userspace/falco/grpc_server.cpp +++ b/userspace/falco/grpc_server.cpp @@ -222,10 +222,7 @@ void falco::grpc::server::run() } // todo(leodido) > log "gRPC server running: threadiness=m_threads.size()" - while(server_impl::is_running()) - { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); - } + m_server->Wait(); // todo(leodido) > log "stopping gRPC server" stop(); } @@ -233,7 +230,6 @@ void falco::grpc::server::run() void falco::grpc::server::stop() { falco_logger::log(LOG_INFO, "Shutting down gRPC server. Waiting until external connections are closed by clients\n"); - m_server->Shutdown(); m_completion_queue->Shutdown(); falco_logger::log(LOG_INFO, "Waiting for the gRPC threads to complete\n"); diff --git a/userspace/falco/grpc_server.h b/userspace/falco/grpc_server.h index 59360d40..352204e1 100644 --- a/userspace/falco/grpc_server.h +++ b/userspace/falco/grpc_server.h @@ -56,7 +56,6 @@ private: std::string m_cert_chain; std::string m_root_certs; - std::unique_ptr<::grpc::Server> m_server; std::vector m_threads; ::grpc::ServerBuilder m_server_builder; void init_mtls_server_builder(); diff --git a/userspace/falco/grpc_server_impl.cpp b/userspace/falco/grpc_server_impl.cpp index 07fd39b1..14e99d18 100644 --- a/userspace/falco/grpc_server_impl.cpp +++ b/userspace/falco/grpc_server_impl.cpp @@ -87,4 +87,5 @@ void falco::grpc::server_impl::version(const context& ctx, const version::reques void falco::grpc::server_impl::shutdown() { m_stop = true; + m_server->Shutdown(); } diff --git a/userspace/falco/grpc_server_impl.h b/userspace/falco/grpc_server_impl.h index f6ac1dce..b085f76e 100644 --- a/userspace/falco/grpc_server_impl.h +++ b/userspace/falco/grpc_server_impl.h @@ -43,6 +43,8 @@ protected: // Version void version(const context& ctx, const version::request& req, version::response& res); + std::unique_ptr<::grpc::Server> m_server; + private: std::atomic m_stop{false}; };