fix(userspace/falco): fixed grpc server shutdown.

Signed-off-by: Federico Di Pierro <nierro92@gmail.com>
This commit is contained in:
Federico Di Pierro 2023-01-12 11:33:15 +01:00 committed by poiana
parent f3546a9a55
commit e64c14a947
4 changed files with 4 additions and 6 deletions

View File

@ -222,10 +222,7 @@ void falco::grpc::server::run()
} }
// todo(leodido) > log "gRPC server running: threadiness=m_threads.size()" // todo(leodido) > log "gRPC server running: threadiness=m_threads.size()"
while(server_impl::is_running()) m_server->Wait();
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
}
// todo(leodido) > log "stopping gRPC server" // todo(leodido) > log "stopping gRPC server"
stop(); stop();
} }
@ -233,7 +230,6 @@ void falco::grpc::server::run()
void falco::grpc::server::stop() void falco::grpc::server::stop()
{ {
falco_logger::log(LOG_INFO, "Shutting down gRPC server. Waiting until external connections are closed by clients\n"); 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(); m_completion_queue->Shutdown();
falco_logger::log(LOG_INFO, "Waiting for the gRPC threads to complete\n"); falco_logger::log(LOG_INFO, "Waiting for the gRPC threads to complete\n");

View File

@ -56,7 +56,6 @@ private:
std::string m_cert_chain; std::string m_cert_chain;
std::string m_root_certs; std::string m_root_certs;
std::unique_ptr<::grpc::Server> m_server;
std::vector<std::thread> m_threads; std::vector<std::thread> m_threads;
::grpc::ServerBuilder m_server_builder; ::grpc::ServerBuilder m_server_builder;
void init_mtls_server_builder(); void init_mtls_server_builder();

View File

@ -87,4 +87,5 @@ void falco::grpc::server_impl::version(const context& ctx, const version::reques
void falco::grpc::server_impl::shutdown() void falco::grpc::server_impl::shutdown()
{ {
m_stop = true; m_stop = true;
m_server->Shutdown();
} }

View File

@ -43,6 +43,8 @@ protected:
// Version // Version
void version(const context& ctx, const version::request& req, version::response& res); void version(const context& ctx, const version::request& req, version::response& res);
std::unique_ptr<::grpc::Server> m_server;
private: private:
std::atomic<bool> m_stop{false}; std::atomic<bool> m_stop{false};
}; };