Drive API文件修补程序方法失败,并显示“Precondition Failed”“conditionNotMet”

时间:2013-08-22 12:48:26

标签: google-app-engine google-drive-api

似乎一夜之间,Google Drive API方法文件()。补丁(,)。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"
     }
    }

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

3 个答案:

答案 0 :(得分:2)

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

Google Developers,如果您计划部署重大更改,请与我们联系。

答案 1 :(得分:2)

在过去24小时的某个时间看起来,Files.Patch问题已经回归到8月22日的工作方式。 每当我们尝试修补文件的LastModified时间戳时,我们也遇到了这个问题 - 请参阅下面的日志文件摘录:

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是测试版,但是,请Google开发人员“让我们提前了解任何'试验性修复'”,并至少在此论坛发帖以确认问题,以节省我们在我们的工作中找到错误的时间用户程序。

答案 2 :(得分:1)

此处重复Getting 500: Precondition Failed when Patching a folder. Why?

我回想一下开发视频中的一条评论说“使用Update而不是Patch,因为它内部的服务器往返少一个”。我从中推断Patch检查etags但Update没有。我已经将我的代码更改为使用Update代替Patch,因此问题没有再次出现。

喜欢发展移动目标; - )