【问题标题】:Google Drive Upload returns 50x server errors intermittentlyGoogle Drive Upload 间歇性返回 50 倍的服务器错误
【发布时间】:2014-05-27 18:28:08
【问题描述】:

我正在使用 java google drive API 将一些文件上传到各种 Google Drive 文件夹中。我正在使用其凭据的用户可以访问所有文件夹。

我正在从两个运行 CentOS 的不同服务器上传大约 100 个 PDF 和 100 个 CSV 文件。这些通常是更新,尽管我偶尔会插入文件。这些文件的大小在 35k 到 700 字节之间,因此不大。

大约一周前,我在上传 CSV 文件(但不是 PDF 文件)时开始出现异常。异常如下所示:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 500 Internal Server Error
{
"code" : 500,
"errors" : [ {
"domain" : "global",
"message" : "Internal Error",
"reason" : "internalError"
} ],
"message" : "Internal Error"
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)

在转换 csv 文件和不转换时都会发生这种情况(这个答案暗示转换是问题:Google Drive SDK - 500: Internal Server error: File uploads successfully most of the time)。

我也看到了 503 错误:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 503 Service Unavailable
{
  "code" : 503,
  "errors" : [ {
    "domain" : "global",
    "message" : "Backend Error",
    "reason" : "backendError"
  } ],
  "message" : "Backend Error"
}
        at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:145)
        at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
        at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
        at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:312)

这些错误似乎并没有消失——在一天中的不同时间、从不同的计算机、使用不同的凭据和不同的文件夹(尽管总是使用相同的 API 项目访问)进行了尝试。

Google 状态页面没有说明 Drive API 已关闭:http://www.google.com/appsstatus#hl=en&v=status

我用来查看 API 请求数量的 API 控制台没有任何信息。

这是我的环境信息:

  • java 1.6.0_25-b06
  • google-api-services-drive: v2-rev126-1.18.0-rc
  • 使用杰克逊:com.google.api.client.json.jackson.JacksonFactory
  • com.google.api.client.http.javanet.NetHttpTransport()

我按照此处所述进行指数退避:https://developers.google.com/drive/web/handle-errors#implementing_exponential_backoff 但仅适用于 403 错误。

我已经对错误消息进行了一些谷歌搜索并查看了 SO 问题。这一个表示唯一的响应是等待:500 Internal Server Error v3 Upload API: GoogleJsonResponseException 但是已经过了一个多星期了。

我被难住了。我在这里发帖是因为这显然是获得 Google Drive 问题支持的最佳地点 (https://developers.google.com/drive/support)

更新:

更多细节。我试过了:

  • 将线程数降低到 1(我有多达 15 个线程推送文件)。没有变化,还是报错。
  • 仅推送 CSV(不是 PDF)。没有变化,还是报错。
  • 在更新时将“创建新修订”设置为 false:https://developers.google.com/drive/v2/reference/files/update 没有变化,仍然出现错误。
  • 将 CSV 推送到不同的文件名。这有效!
  • 从文件夹中删除 CSV。这有效!
  • 在调用 google 之前添加等待,范围从 200 毫秒到 500 毫秒

可以正常上传的 PDF 的修订版本少了两个数量级(约 20 个)。某些 csv 文件的修订数高达 2000+。我不确定这是否是一个问题。

【问题讨论】:

  • 关于什么有效/有帮助的任何更新?我正在经历类似的情况
  • 我想我必须重试多次,然后将其限制。我也认为它刚刚消失了,我可能将其归结为“分布式系统中的短暂错误”。老实说,我不记得了。对不起。

标签: google-api google-drive-api google-api-java-client


【解决方案1】:

一种解决方法是通过 Web 界面删除 CSV 文件。确保将它们完全删除,因为仅将它们移到垃圾箱是不够的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-05
    • 2012-08-22
    • 2019-11-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2016-10-31
    • 1970-01-01
    相关资源
    最近更新 更多