当 rpc 未启动时,api 调用会失败,但是 rpc 启动时,api 调用还是会失败
CrazyZard opened this issue · comments
runtime error: invalid memory address or nil pointer dereference\ngoroutine 135 [running]:\nruntime/debug.Stack()\n\t/usr/local/go/src/runtime/debug/stack.go:24 +0x65\ngithub.com/tal-tech/go-zero/rest/handler.RecoverHandler.func1.1()\n\t/Users/haoran/go/pkg/mod/github.com/tal-tech/go-zero@v1.2.1/rest/handler/recoverhandler.go:16 +0x66\npanic({0x220a4c0, 0x3322b40})\n\t/usr/local/go/src/runtime/panic.go:1038 +0x215\nwl-captain/service/admin/rpc/sys/sysclient.(*defaultSys).UserInfo(0x32d3b68, {0x265a458, 0xc00034a5d0}, 0x40)
这是你代码里出现访问nil对象了。
现象是 :
- api 启动时 请求接口 会 panic 抛出空指针异常
- rpc 启动时 请求接口 还是会出现相同情况
- 只有 rpc 先行启动 api 后者启用 才不会出现 空指针的现象
疑问:
- api 层在初始化之后 client 一但是 nil 对象 是否就只能进行重启做尝试
- 还是说可能我写法有问题 导致会出现这种问题
你需要先启动依赖的rpc服务,然后再启动api服务,因为这样是为了避免运维故障,这也是我们工程经验的积累。