Files
EdgeCommon/pkg/rpc/errors/utils.go
GoEdgeLab 2f3981704e v1.4.1
2024-07-27 13:29:26 +08:00

36 lines
1.2 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Copyright 2021 GoEdge CDN goedge.cdn@gmail.com. All rights reserved.
package errors
import (
"fmt"
"path/filepath"
"strings"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
// HumanError 格式化GRPC相关错误
func HumanError(err error, endpoints []string, configFile string) (resultErr error, isConnError bool) {
if err == nil {
return err, false
}
errStatus, ok := status.FromError(err)
if !ok {
return err, false
}
switch errStatus.Code() {
case codes.InvalidArgument:
return fmt.Errorf("错误的RPC参数%w", err), false
case codes.DeadlineExceeded:
return fmt.Errorf("RPC操作超时请重试%w", err), false
case codes.Unimplemented:
return fmt.Errorf("请求的RPC服务或方法不存在可能是没有升级API节点或者当前节点没有升级%w", err), false
case codes.Unavailable:
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
}
return err, false
}