【问题标题】:Gmail API Backend Error: drafts get corrupted when updating them concurrently?Gmail API 后端错误:草稿在同时更新时损坏?
【发布时间】:2015-05-29 21:22:13
【问题描述】:

我的应用使用 gmail api 定期更新 gmail 草稿。我发现如果我碰巧重叠了相同草稿 id 的 gmail api 更新调用(这很容易做到,因为 API 有时需要 10 秒才能响应),API 将完全破坏草稿,这样我就会得到一个“每次我尝试再次访问它时都会出现“后端错误”。

这里是repro的调用:

  1. 创建草稿:

    卷曲https://www.googleapis.com/gmail/v1/users/me/drafts -H “授权:承载删节” -H “内容类型:应用/ JSON” -d '{ “消息”:{ “原始”: “RnJvbTogJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U =”}}' { “id”:“r7481949043481090326”, “信息”: { “id”:“14c53392c1ad1a38”, "threadId": "14c53392c1ad1a38", “标签标识”:[ “草案” ] } }

  2. 同时更新该草稿两次(注意命令并行运行):

    卷曲-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中用户的草稿文件夹中将有两个草稿。

  1. 现在,在两个更新调用完成后,尝试获取草稿:

    curl https://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326 -H "Authorization: Bearer redacted" { “错误”: { “错误”:[ { “域”:“全球”, “原因”:“后端错误”, “消息”:“后端错误” } ], “代码”:500, “消息”:“后端错误” } }

通过该 ID 获取或更新草稿的所有后续调用都将返回后端错误,并且用户的草稿文件夹中也有两个副本。

显而易见的解决方法是添加保护措施,这样我就不会尝试同时更新同一个草稿 ID。但这是一个非常严重的错误,Gmail 团队应该关注一下。

【问题讨论】:

标签: gmail-api


【解决方案1】:
猜你喜欢
  • 2017-06-17
  • 2018-02-26
  • 2019-06-01
  • 2018-02-20
  • 2017-07-15
  • 2014-10-19
  • 1970-01-01
  • 2017-11-29
  • 2018-04-19
相关资源
最近更新 更多