5

似乎一夜之间,Google Drive API 方法 files().patch( , ).execute() 已经停止工作并引发异常。如果您“尝试一下”,也可以通过 Google 的参考页面https://developers.google.com/drive/v2/reference/files/patch观察到这个问题。

异常响应是:

500 Internal Server Error

cache-control:  private, max-age=0
content-encoding:  gzip
content-length:  162
content-type:  application/json; charset=UTF-8
date:  Thu, 22 Aug 2013 12:32:06 GMT
expires:  Thu, 22 Aug 2013 12:32:06 GMT
server:  GSE

    {
     "error": {
      "errors": [
       {
        "domain": "global",
        "reason": "conditionNotMet",
        "message": "Precondition Failed",
        "locationType": "header",
        "location": "If-Match"
       }
      ],
      "code": 500,
      "message": "Precondition Failed"
     }
    }

这确实影响了我们的应用程序。

4

3 回答 3

2

我们也正在经历这种情况。一个快速修复的解决方案是添加此标头:(If-Match: *理想情况下,您应该使用实体的 etag,但您现在可能没有解决冲突的逻辑)。

Google Developers,如果您计划部署重大更改,请提前通知我们。

于 2013-08-22T13:21:43.210 回答
2

看起来在过去 24 小时内的某个时候,Files.Patch 问题已恢复到它在 8 月 22 日之前的工作方式。每当我们尝试修补文件的 LastModified Timestamp 时,我们也会遇到这个问题 - 请参阅日志文件提取以下:

20130826 13:30:45 - GoogleApiRequestException: retry number 0 for file patch of File/Folder Id 0B9NKEGPbg7KfdXc1cVRBaUxqaVk
20130826 13:31:05 - ***** GoogleApiRequestException: Inner exception: 'System.Net.WebException: The remote server returned an error: (500) Internal Server Error.
   at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at Google.Apis.Requests.Request.InternalEndExecuteRequest(IAsyncResult asyncResult) in c:\code.google.com\google-api-dotnet-client\default_release\Tools\BuildRelease\bin\Debug\output\default\Src\GoogleApis\Apis\Requests\Request.cs:line 311', Exception: 'Google.Apis.Requests.RequestError
Precondition Failed [500]
Errors [
    Message[Precondition Failed] Location[If-Match - header] Reason[conditionNotMet] Domain[global]
]
'
20130826 13:31:07 - ***** Patch file request failed after 0 tries for File/Folder 0B9NKEGPbg7KfdXc1cVRBaUxqaVk

今天,只要修补文件时间戳,同一进程的运行就会成功,就像 8 月 22 日之前一样。

由于这个 4/5 天的故障,我们现在有数百个(可能数千个)带有错误时间戳的文件。

我知道 API 是 Beta 版,但请 Google 开发人员“在任何‘试用修复’之前让我们知道”,并至少在此论坛上发帖以确认该问题,以节省我们尝试查找用户程序中的错误的时间。

于 2013-08-27T01:42:37.903 回答
1

在此处重复获取 500:修补文件夹时先决条件失败。为什么?

我记得一个开发视频中的一条评论说“使用更新而不是补丁,因为它在内部减少了一次服务器往返”。我由此推断 Patch 检查 etags 但 Update 没有。我已将代码更改为使用 Update 代替 Patch,此后该问题没有再次出现。

一定要喜欢针对移动的目标进行开发;-)

于 2013-08-22T16:38:58.107 回答