Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
ed3a1164
M
milvus
项目概览
milvus
/
milvus
11 个月 前同步成功
通知
260
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
ed3a1164
编写于
6月 14, 2022
作者:
C
congqixia
提交者:
GitHub
6月 14, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Handle wrapped grpc error in funcutil.IsGrpcError (#17547)
Signed-off-by:
N
Congqi Xia
<
congqi.xia@zilliz.com
>
上级
ab9b186f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
42 addition
and
26 deletion
+42
-26
internal/util/funcutil/func.go
internal/util/funcutil/func.go
+9
-4
internal/util/funcutil/func_test.go
internal/util/funcutil/func_test.go
+33
-22
未找到文件。
internal/util/funcutil/func.go
浏览文件 @
ed3a1164
...
...
@@ -357,9 +357,14 @@ func ReadBinary(endian binary.ByteOrder, bs []byte, receiver interface{}) error
// IsGrpcErr checks whether err is instance of grpc status error.
func
IsGrpcErr
(
err
error
)
bool
{
if
err
==
nil
{
return
false
for
{
if
err
==
nil
{
return
false
}
_
,
ok
:=
grpcStatus
.
FromError
(
err
)
if
ok
{
return
true
}
err
=
errors
.
Unwrap
(
err
)
}
_
,
ok
:=
grpcStatus
.
FromError
(
err
)
return
ok
}
internal/util/funcutil/func_test.go
浏览文件 @
ed3a1164
...
...
@@ -467,26 +467,37 @@ func Test_ReadBinary(t *testing.T) {
}
func
TestIsGrpcErr
(
t
*
testing
.
T
)
{
var
err1
error
assert
.
False
(
t
,
IsGrpcErr
(
err1
))
err1
=
errors
.
New
(
"error"
)
assert
.
False
(
t
,
IsGrpcErr
(
err1
))
bgCtx
:=
context
.
Background
()
ctx1
,
cancel1
:=
context
.
WithCancel
(
bgCtx
)
cancel1
()
assert
.
False
(
t
,
IsGrpcErr
(
ctx1
.
Err
()))
timeout
:=
20
*
time
.
Millisecond
ctx1
,
cancel1
=
context
.
WithTimeout
(
bgCtx
,
timeout
)
time
.
Sleep
(
timeout
*
2
)
assert
.
False
(
t
,
IsGrpcErr
(
ctx1
.
Err
()))
cancel1
()
err1
=
grpcStatus
.
Error
(
grpcCodes
.
Canceled
,
"test"
)
assert
.
True
(
t
,
IsGrpcErr
(
err1
))
err1
=
grpcStatus
.
Error
(
grpcCodes
.
Unavailable
,
"test"
)
assert
.
True
(
t
,
IsGrpcErr
(
err1
))
t
.
Run
(
"nil error"
,
func
(
t
*
testing
.
T
)
{
var
err
error
assert
.
False
(
t
,
IsGrpcErr
(
err
))
})
t
.
Run
(
"normal errors new"
,
func
(
t
*
testing
.
T
)
{
err
:=
errors
.
New
(
"error"
)
assert
.
False
(
t
,
IsGrpcErr
(
err
))
})
t
.
Run
(
"context cancel"
,
func
(
t
*
testing
.
T
)
{
assert
.
False
(
t
,
IsGrpcErr
(
context
.
Canceled
))
})
t
.
Run
(
"context timeout"
,
func
(
t
*
testing
.
T
)
{
assert
.
False
(
t
,
IsGrpcErr
(
context
.
DeadlineExceeded
))
})
t
.
Run
(
"grpc canceled"
,
func
(
t
*
testing
.
T
)
{
err
:=
grpcStatus
.
Error
(
grpcCodes
.
Canceled
,
"test"
)
assert
.
True
(
t
,
IsGrpcErr
(
err
))
})
t
.
Run
(
"grpc unavailable"
,
func
(
t
*
testing
.
T
)
{
err
:=
grpcStatus
.
Error
(
grpcCodes
.
Unavailable
,
"test"
)
assert
.
True
(
t
,
IsGrpcErr
(
err
))
})
t
.
Run
(
"wrapped grpc error"
,
func
(
t
*
testing
.
T
)
{
err
:=
grpcStatus
.
Error
(
grpcCodes
.
Unavailable
,
"test"
)
errWrap
:=
fmt
.
Errorf
(
"wrap grpc error %w"
,
err
)
assert
.
True
(
t
,
IsGrpcErr
(
errWrap
))
})
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录