Grafeas golang 过滤器字符串和 DeleteOccurrence() API 错误
Grafeas golang filter string and DeleteOccurrence() API errors
我 运行 使用 Grafeas golang v1beta1 API.
分为 2 个不同的问题
我正在尝试做什么
- 使用过滤器调用 ListOccurrencesRequest() 以获取要删除的事件列表
- 对上面列表中的每个事件调用 DeleteOccurrence() 将其删除
第 1 期
我正在尝试使用此 GCP reference grafeas golang 代码作为指南来设置过滤器字段。
filterStr := fmt.Sprintf(`kind=%q`, grafeas_common_proto.NoteKind_BUILD.String())
listReq := &grafeas_proto.ListOccurrencesRequest{
Parent: BuildProject,
Filter: filterStr,
PageSize: 100,
}
listOccResp, err := r.grafeasCommon.ListOccurrences(ctx, listReq)
for {
if err != nil {
log.Error("failed to iterate over occurrences", zap.NamedError("error", err))
return nil, err
}
...
但看起来我的 filterStr 无效,这是错误:
filterStr {"filterStr": "kind=\"BUILD\""}
failed to iterate over occurrences {"error": "rpc error: code = Internal desc = error while parsing filter expression: 4 errors occurred:\n\t* error parsing filter\n\t* Syntax error: token recognition error at: '=\"' (1:4)\n\t* Syntax error: token recognition error at: '\"' (1:11)\n\t* Syntax error: extraneous input 'BUILD' expecting <EOF> (1:6)\n\n"}
看起来 \
转义字符引起了麻烦,但我在没有它的情况下尝试过,并得到了另一种相同类型的错误。
第 2 期
当我调用 DeleteOccurrence()
时,我可以通过检查看到事件实际上已从 Grafeas 中删除:
curl http://localhost:8080/v1beta1/projects/broker_builds/occurrences
但是 DeleteOccurrence()
总是设置 err
代码:
for _, o := range occToDelete {
log.Info("occToDelete", zap.String("occurrence", o))
_, err := r.grafeasCommon.DeleteOccurrence(ctx, &grafeas_proto.DeleteOccurrenceRequest{
Name: o,
})
if err != nil {
log.Error("failed to delete occurrence", zap.String("occurrence", o), zap.NamedError("error", err))
}
}
错误:
failed to delete occurrence {"occurrence": "projects/broker_builds/occurrences/f61a4c57-a3d3-44a9-86ee-5d58cb6c6052", "error": "rpc error: code = Internal desc = grpc: error while marshaling: proto: Marshal called with nil"}
我不明白错误指的是什么。
此问题已在 Grafeas message board 上交叉发布。
感谢任何帮助。谢谢。
您能否透露一些有关所用存储引擎的详细信息,以及过滤实现的详细信息?
问题 1. gitHub.com/grafeas/grafeas.
中的任何存储引擎都没有实现过滤
问题 2。这取决于您使用的存储,memstore/embededstore 似乎没有产生与您提到的类似的任何错误...如果使用 postgresql 存储,您是否尝试删除两次?
问题 #1 的解决方案
我使用 grafeas-elasticsearch 作为存储后端。它使用与我在原始 post.
中看到的示例不同的过滤器字符串格式
例如,代替 =
-> ==
、AND
-> &&
等
更多例子可以在这里看到:
https://github.com/rode/grafeas-elasticsearch/blob/main/test/v1beta1/occurrence_test.go#L226
问题 #2 的解决方案
grafeas 的已知问题
https://github.com/grafeas/grafeas/pull/456
https://github.com/grafeas/grafeas/pull/468
遗憾的是,最新标记的 grafeas v0.1.6 版本尚未包含这些修复。因此需要在下一个版本中选择它们。
感谢@Ovidiu Ghinet,这是一个很好的提示
我 运行 使用 Grafeas golang v1beta1 API.
分为 2 个不同的问题我正在尝试做什么
- 使用过滤器调用 ListOccurrencesRequest() 以获取要删除的事件列表
- 对上面列表中的每个事件调用 DeleteOccurrence() 将其删除
第 1 期
我正在尝试使用此 GCP reference grafeas golang 代码作为指南来设置过滤器字段。
filterStr := fmt.Sprintf(`kind=%q`, grafeas_common_proto.NoteKind_BUILD.String())
listReq := &grafeas_proto.ListOccurrencesRequest{
Parent: BuildProject,
Filter: filterStr,
PageSize: 100,
}
listOccResp, err := r.grafeasCommon.ListOccurrences(ctx, listReq)
for {
if err != nil {
log.Error("failed to iterate over occurrences", zap.NamedError("error", err))
return nil, err
}
...
但看起来我的 filterStr 无效,这是错误:
filterStr {"filterStr": "kind=\"BUILD\""}
failed to iterate over occurrences {"error": "rpc error: code = Internal desc = error while parsing filter expression: 4 errors occurred:\n\t* error parsing filter\n\t* Syntax error: token recognition error at: '=\"' (1:4)\n\t* Syntax error: token recognition error at: '\"' (1:11)\n\t* Syntax error: extraneous input 'BUILD' expecting <EOF> (1:6)\n\n"}
看起来 \
转义字符引起了麻烦,但我在没有它的情况下尝试过,并得到了另一种相同类型的错误。
第 2 期
当我调用 DeleteOccurrence()
时,我可以通过检查看到事件实际上已从 Grafeas 中删除:
curl http://localhost:8080/v1beta1/projects/broker_builds/occurrences
但是 DeleteOccurrence()
总是设置 err
代码:
for _, o := range occToDelete {
log.Info("occToDelete", zap.String("occurrence", o))
_, err := r.grafeasCommon.DeleteOccurrence(ctx, &grafeas_proto.DeleteOccurrenceRequest{
Name: o,
})
if err != nil {
log.Error("failed to delete occurrence", zap.String("occurrence", o), zap.NamedError("error", err))
}
}
错误:
failed to delete occurrence {"occurrence": "projects/broker_builds/occurrences/f61a4c57-a3d3-44a9-86ee-5d58cb6c6052", "error": "rpc error: code = Internal desc = grpc: error while marshaling: proto: Marshal called with nil"}
我不明白错误指的是什么。
此问题已在 Grafeas message board 上交叉发布。
感谢任何帮助。谢谢。
您能否透露一些有关所用存储引擎的详细信息,以及过滤实现的详细信息?
问题 1. gitHub.com/grafeas/grafeas.
中的任何存储引擎都没有实现过滤问题 2。这取决于您使用的存储,memstore/embededstore 似乎没有产生与您提到的类似的任何错误...如果使用 postgresql 存储,您是否尝试删除两次?
问题 #1 的解决方案
我使用 grafeas-elasticsearch 作为存储后端。它使用与我在原始 post.
中看到的示例不同的过滤器字符串格式例如,代替 =
-> ==
、AND
-> &&
等
更多例子可以在这里看到: https://github.com/rode/grafeas-elasticsearch/blob/main/test/v1beta1/occurrence_test.go#L226
问题 #2 的解决方案
grafeas 的已知问题
https://github.com/grafeas/grafeas/pull/456
https://github.com/grafeas/grafeas/pull/468
遗憾的是,最新标记的 grafeas v0.1.6 版本尚未包含这些修复。因此需要在下一个版本中选择它们。
感谢@Ovidiu Ghinet,这是一个很好的提示