exhook偶发失败,reason提示ok

错误报告

环境

  • EMQX 版本:5.0.15
  • 操作系统版本:官方docker镜像

昨天重启grpc server后,emqx出现偶发的on_message_publish exhook失败报错,失败率大概在百分之1.多,并且日志提示的reason为ok,所以不明白应该如何定位。
另外我们这边有很多套emqx+grpc server,跑的版本都是一样的,昨天的重启操作也是同时的,但是只有一个emqx实例有这个现象,并且只有on_message_publish的hook有偶发报错,其他还注册了client.authenticate,client.authorize,client.connected均无报错

日志:

exhook成功和失败次数统计:
bc1b5cd4-f32f-4e21-8503-4be91a59d542

感谢反馈! 追踪了下代码,只有走到以下分支的时候,才会一个错误原因为 {ok, <<>>}

主要原因是,EMQX 的 gRPC 客户端在等待接收返回时,HTTP/2 流被关闭了,且没有收到任何错误的时候会返回的

所以,

  1. 我们这边需要优化下 gRPC 客户端的处理,这里不应该返回一个难以理解的错误
  2. 你那边需要调查 gRPC 服务在这种情况下是否有其他的报错?

感谢解答。看了下grpc server的日志没有找到相关错误,这种情况有什么方法可以定位或者恢复吗?现在是会以每分钟一两次的频率偶发出现。或者说grpc client在失败后有重试逻辑吗?现在这种情况会导致报错的这些消息被丢掉吗?

暂时还没有重试机制。
消息是否丢弃,得看服务端那边“关闭连接” 的动作是什么时候触发的,是收到消息前、还是处理完成后。这个很难说的…

尝试下扩大 exhook 客户端的进程池大小看是否有改善呢?