gRPC c++ v1.38异步服务器崩溃

vuktfyat  于 2023-06-07  发布在  其他
关注(0)|答案(1)|浏览(269)

我是gRPC的新手。我试图遵循example code(我们必须使用版本gRPC v1.38),以实现异步gRPC服务器,因为服务器将向gRPC客户端发送多个响应(又名流)。
proto类似于:

rpc  MyRequest (ReqMsg) returns (stream RespMsg)

基本上,当gRPC服务器接收到客户端请求时,它需要从其他地方 * 异步 * 获取信息。当所需的信息返回时(通过不同线程的回调,但多次),回调函数然后使用CallData,aka,responder等中维护的数据结构 * 写回 * 响应。
在我的测试中,我的gRPC服务器在写回2或3个响应后在proto_buffer_writer.h assertion failed !byte_buffer->Valid()崩溃。我想知道是否是由于diff线程(除了等待gRPC通信的线程)正在进行写入。

0h4hbjxa

0h4hbjxa1#

问题已解决。崩溃的原因是当发送回多个响应(又名流)时,我的服务器在发送新响应之前没有等待令牌可用。

相关问题