Files
EdgeCommon/pkg/rpc/errors/utils.go

35 lines
1.2 KiB
Go
Raw Normal View History

2024-05-17 18:28:59 +08:00
// Copyright 2021 GoEdge CDN goedge.cdn@gmail.com. All rights reserved.
2021-06-05 11:09:04 +08:00
package errors
import (
2023-08-11 15:26:59 +08:00
"fmt"
2021-06-05 11:09:04 +08:00
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
2023-08-12 20:33:28 +08:00
"path/filepath"
2022-06-08 15:17:21 +08:00
"strings"
2021-06-05 11:09:04 +08:00
)
// HumanError 格式化GRPC相关错误
2022-06-08 15:17:21 +08:00
func HumanError(err error, endpoints []string, configFile string) (resultErr error, isConnError bool) {
2021-06-05 11:09:04 +08:00
if err == nil {
2022-06-08 15:17:21 +08:00
return err, false
2021-06-05 11:09:04 +08:00
}
errStatus, ok := status.FromError(err)
if !ok {
2022-06-08 15:17:21 +08:00
return err, false
2021-06-05 11:09:04 +08:00
}
switch errStatus.Code() {
case codes.InvalidArgument:
2023-08-11 15:26:59 +08:00
return fmt.Errorf("错误的RPC参数%w", err), false
2021-06-05 11:09:04 +08:00
case codes.DeadlineExceeded:
2023-08-11 15:26:59 +08:00
return fmt.Errorf("RPC操作超时请重试%w", err), false
2021-06-05 11:09:04 +08:00
case codes.Unimplemented:
2023-08-11 15:26:59 +08:00
return fmt.Errorf("请求的RPC服务或方法不存在可能是没有升级API节点或者当前节点没有升级%w", err), false
2021-06-05 11:09:04 +08:00
case codes.Unavailable:
2023-08-12 20:33:28 +08:00
return fmt.Errorf("RPC当前不可用<br/>1、请确认当前节点的%s<em>%s</em>)配置中的地址(<em>%s</em>)是否已填写正确;<br/>2、请确保API节点已启动并检查当前节点和API节点之间的网络连接是正常的。<hr/>错误信息:%w", filepath.Base(configFile), configFile, strings.Join(endpoints, ", "), err), true
2021-06-05 11:09:04 +08:00
}
2022-06-08 15:17:21 +08:00
return err, false
2021-06-05 11:09:04 +08:00
}