提问者:小点点

GmailAPI后端错误:草稿在同时更新时损坏?


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

以下是对repro的调用:

>

  • 创建草稿:

    curlhttps://www.googleapis.com/gmail/v1/users/me/drafts-H"授权:承载已编辑"-H"Content-Type: application/json"-d'{"message":{"red":"RnJvbTobJ21lJw0KVG86IGJyWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZToudGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U=" } }' { "id":"r7481949043481090326","message":{"id":"14c53392c1ad1a38","threadId":"14c53392c1ad1a38","labelIds":["DRAFT" ] } }

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

    curl-X PUThttps://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326-H"授权:已编辑的承载"-H"Content-Type: application/json"-d'{"message":{"red":"RnJvbTobJ21lJw0KVG86IGJyYWRAbWl4bWF4LmNvbQ0KU3ViamVjdDogVGVzdCBEcmFmdCENCkNvbnRlbnQtVHlwZTodGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04DQoNCk15IG1lc3NhZ2U=" } }'

    注意第二次调用的“后端错误”。现在gmail中用户的草稿文件夹中会有两个草稿。

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

    curlhttps://www.googleapis.com/gmail/v1/users/me/drafts/r7481949043481090326-H"授权:承载已编辑"{"错误":{"错误": [ { "域":"全局","原因":"backendError","消息":"后端错误" } ], "代码": 500,"消息":"后端错误"}}

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

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


  • 共1个答案

    匿名用户

    这是一个gmail apibughttps://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3782