关于frpc错误处理的优化

前言

之前对于frpc call调用的错误处理,只是简单的打印了日志、返回nil结果,这对于调用处其实不太友好,没法第一时间得知问题所在。

优化方案

  1. 新增返回错误码错误内容错误方
  2. 取消掉frpc_client call调用出错就打印的日志,交给调用的地方做错误处理决定打不打印日志。

错误码

frpc 会出现三种错误。

  • WAIT_CONNECT_TIME_OUT
    这种情况就是等待指定时间后还没有和对端建立好连接,timeout超时时间是可以在frpc_client_m中配置的,默认10秒。

  • SOCKET_ERROR
    socket网络错误,通常就是对端断开连接了或者网络异常。

  • TRANSLATION_PEER_ERROR
    对端出错,通常就是对端代码报错了。

错误内容

出现的描述信息。

错误方

WAIT_CONNECT_TIME_OUT 这种情况不会有错误方,因为调用并没有发出去。

all 调用处理

all调用会发给指定svr_name的所有结点,这时候可能部分成功,部分失败,在错误处理上也需要分开处理。在保证兼容的情况下新增了err_list的返回值。

1
2
3
--部分对端出错
local ret_list, err_list = cli:all_balance_call("call_same_error_test")
log.info("test_errorcode 3 >>> ", ret_list, err_list)

关于frpc错误处理的优化
https://huahua132.github.io/2025/02/10/skynet_fly_ss/frpc_error_code/
作者
huahua132
发布于
2025年2月10日
许可协议