如何调试远程缓存写入失败?

时间:2020-06-18 18:02:49

标签: google-cloud-storage bazel

我们正在使用Bazel(通过Bazelisk)并设置了GCS bucket remote cache as documented。但是,当我们运行时,似乎在Remote Cache写入阶段经常得到BulkTransferExecption

>  bazel build //... --sandbox_debug --verbose_failures                                                       
INFO: Invocation ID: fba91f67-788f-47cc-be4e-24f92ed11301
INFO: Analyzed 25 targets (74 packages loaded, 3245 targets configured).
INFO: Found 25 targets...
WARNING: Writing to Remote Cache:
BulkTransferException
INFO: Elapsed time: 17.115s, Critical Path: 15.47s
INFO: 16 processes: 16 worker. 
INFO: Build completed successfully, 39 total actions

据我所知,我具有适当的访问权限(Storage Object Admin)。

我一直在尝试获取有关该特定异常的更多信息,但我一直无法。

如果存储桶无法正常工作,我希望从缓存中读取时会出现异常:尝试其他URL到达存储桶时,例如域storage.cloud.google.com而不是{ {1}}。

欢迎任何建议来调试此处发生的一切! documentation很少出现异常情况, ,据我所知没有上传结果,因此实际上没有缓存。

更新 2020/07/09

由于某种未知的原因,当我们从一个存储桶移到一个更永久的存储桶时,它停止了发生。因此事情对我们来说是可行的,而且据我们所知,每个桶都是相同的,所以我们不知道为什么它最初会失败。

1 个答案:

答案 0 :(得分:0)

您可以使用 --verbose_failures,这将使其打印出更长的堆栈跟踪。我刚刚遇到了一个非常相似的问题,并发现我的问题是由于我的服务帐户对我的 GCS 存储桶的权限不足。我通过 --verbose_failures 收到了这条更有用的错误消息:

<?xml version='1.0' encoding='UTF-8'?><Error><Code>AccessDenied</Code><Message>Access denied.</Message><Details>REDACTED@REDACTED.iam.gserviceaccount.com does not have storage.objects.delete access to REDACTED/cas/REDACTED.</Details></Error>

我必须阅读the source code the message came from。我将尝试提交 PR 以将此提示添加到 Bazel 文档中:https://github.com/bazelbuild/bazel/pull/12945