Google calendar api 谷歌日历事件etag减少,导致';如果匹配';修补故障

Google calendar api 谷歌日历事件etag减少,导致';如果匹配';修补故障,google-calendar-api,google-api-java-client,Google Calendar Api,Google Api Java Client,我的代码使用Google calendar API修改日历事件,并订阅事件更改(通过日历同步令牌,而不是推送通知,如果有必要的话)。 将事件时间从“从X到Y”更改为“全天”,会导致一种奇怪的情况: 假设初始事件etag为0 成功将事件修补为“全天”,如果etag=0,则获取新etag=1 从日历中获取更新-事件已更改,新etag=1(没错) 如果etag=1(任何更改,例如设置新摘要),获得新etag=2,则成功修补事件 从日历中获取更新-事件已更改,新etag=3(应为2!并且它与修补后返回的

我的代码使用Google calendar API修改日历事件,并订阅事件更改(通过日历同步令牌,而不是推送通知,如果有必要的话)。 将事件时间从“从X到Y”更改为“全天”,会导致一种奇怪的情况:

假设初始事件etag为0

  • 成功将事件修补为“全天”,如果etag=0,则获取新etag=1
  • 从日历中获取更新-事件已更改,新etag=1(没错)
  • 如果etag=1(任何更改,例如设置新摘要),获得新etag=2,则成功修补事件
  • 从日历中获取更新-事件已更改,新etag=3(应为2!并且它与修补后返回的版本具有相同的上次更新时间)
  • 如果etag=3,尝试再次修补事件。请求失败,因为etag不匹配,实际etag=2
  • 正在尝试使用日历同步令牌加载新更改-没有更改

  • 因此,似乎接收到错误更新并中断了同步。或者etag是否可能降低?只有当涉及从常规事件到“全天事件”的更改时,才会发生这种情况。

    您能提供一个代码片段来重新描述这种行为吗?如果其他人遇到同样的问题并提交了一个bug,也可以查看一下。我已经创建了一个代码片段,它也有同样的功能,但我无法在上面重现这个问题。在主项目中,它每次都复制。最奇怪的是,虽然我的主代码未能用etag=X修补一个事件,但我可以用之后代码段中相同的etag=X修补它。如果您有任何建议,我将不胜感激-为什么不同的客户端(使用相同的配置)可能会获得不同的ETag?我发现了一些与事件ETag和“ifMatch”修补相关的问题,但它们没有答案。例如,你可以“星”的问题或评论它,以增加能见度。坦率地说,看起来这些问题大多被忽略了。例如,这是一个10岁,有很多评论,没有得到谷歌方面的注意:。因此,我不认为制造一个问题或投票支持它可能会有所帮助。