Gmail API 后端错误:草稿在同时更新时损坏?
Posted
技术标签:
【中文标题】Gmail API 后端错误:草稿在同时更新时损坏?【英文标题】:Gmail API Backend Error: drafts get corrupted when updating them concurrently? 【发布时间】:2015-05-29 21:22:13 【问题描述】:我的应用使用 gmail api 定期更新 gmail 草稿。我发现如果我碰巧重叠了相同草稿 id 的 gmail api 更新调用(这很容易做到,因为 API 有时需要 10 秒才能响应),API 将完全破坏草稿,这样我就会得到一个“每次我尝试再次访问它时都会出现“后端错误”。
这里是repro的调用:
创建草稿:
卷曲https://www.googleapis.com/gmail/v1/users/me/drafts -H “授权:承载删节” -H “内容类型:应用/ JSON” -d ' “消息”: “原始”: “RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =”' “id”:“r7481949043481090326”, “信息”: “id”:“14c53392c1ad1a38”, "threadId": "14c53392c1ad1a38", “标签标识”:[ “草案” ]
同时更新该草稿两次(注意命令并行运行):
卷曲-X PUT https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H “授权:承载删节” -H “内容类型:应用/ JSON” -d ' “消息”: “原始”: “RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =”' &卷曲-X PUT https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H “授权:承载删节” -H “内容类型:应用/ JSON” -d ' “消息”: “原始”: “RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =”' [1] 96019 “id”:“r7481949043481090326”, “信息”: "id": "14c5339e1cbcb58b", "threadId": "14c5339e1cbcb58b", “标签标识”:[ “草案” ] “错误”: “错误”:[ “域”:“全球”, “原因”:“后端错误”, “消息”:“后端错误” ], “代码”:500, “消息”:“后端错误”
注意第二次调用的“后端错误”。现在gmail中用户的草稿文件夹中将有两个草稿。
现在,在两个更新调用完成后,尝试获取草稿:
curl https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H "Authorization: Bearer redacted" “错误”: “错误”:[ “域”:“全球”, “原因”:“后端错误”, “消息”:“后端错误” ], “代码”:500, “消息”:“后端错误”
通过该 ID 获取或更新草稿的所有后续调用都将返回后端错误,并且用户的草稿文件夹中也有两个副本。
显而易见的解决方法是添加保护措施,这样我就不会尝试同时更新同一个草稿 ID。但这是一个非常严重的错误,Gmail 团队应该关注一下。
【问题讨论】:
仅供参考,Gmail API 文档中有一个指向“问题跟踪器”的链接:developers.google.com/gmail/api(“支持”下的左侧导航)对于明显是错误的事情,欢迎您报告他们在那里。 埃里克,谢谢!我什至没有看到问题跟踪器。在那里归档:code.google.com/a/google.com/p/apps-api-issues/issues/… 你得到最终解决方案或错误了吗? 是的,这里有错误:code.google.com/a/google.com/p/apps-api-issues/issues/…。我的解决方案是只使用锁定来确保草稿更新调用永远不会重叠。 【参考方案1】:这是提交为 https://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3782&thanks=3782&ts=1427348359 的 gmail api 错误。
【讨论】:
以上是关于Gmail API 后端错误:草稿在同时更新时损坏?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有用户交互的情况下使用 GMail API 创建草稿