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
你好,我有用 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