gRPC 服务器关闭永远挂起

gRPC Server shutdown hangs forever

你好,我有用 C++ 编写的 gRPC 异步服务器。

我正在接收带有 AsyncNext 的 rpc,它正在破坏它自己的线程,目前它的截止日期为 16 毫秒。

我正在使用建议的关机程序

Server->Shutdown();
Que->Shutdown();
DrainQue();

在正常情况下一切正常,但是当客户端在关机前发送 rpc 并且一直在发送并且从不停止时, AsyncNext 在客户端停止发送之前永远不会完成。即使在“关闭”之后,这也会挂起进程。

如果正常关闭不成功,我想在任何状态下“杀死”gRPC 服务器。由于不停止该过程会引入未解决问题的真实性。

编辑:我正在使用 gPRC 版本 - 1.40.x 和 Windows 10 作为平台

事实证明,请求可以用 Context.TryCancel(); 取消,进行中的 rpc 可以用 Responder.FinishWithError(grpc::Status::CANCELLED, this);

结束

我也没有使用 AsyncNotifyWhenDone