【发布时间】:2014-04-22 13:15:30
【问题描述】:
我有一个使用 Google Drive 公共网络链接功能的 Android 手机应用原型,以便使用 XML 文件同步位于所述手机中的数据库。
在过去的 3 周中,出现了 2 个关键问题,即稳定性方面的问题。我会列出它们并告诉你们我的临时补丁来解决这个问题。
(1) 2014 年 3 月 27 日左右,使用 java API 列出具有设置为特定父 ID 的 Q 过滤器的文件时,最大指数回退。每页的项目数和失败时重新查询时间的指数回退,如下所示:https://developers.google.com/drive/web/handle-errors:对于一些测试站点,但不是全部(绝大多数加拿大站点不受影响,并且非常纽约市南部附近的少数美国站点也未受影响),这导致 500 内部服务器错误。除其他外,尝试了多个补丁以大幅降低每用户每分钟的查询速率,并且 API 控制台中设置的最大查询速率也提高了 10 倍。这一切都无济于事。最后的补丁是删除具有给定父 ID 的 Q 过滤器集的多文件列表,并改用子查询,以便在用户 Google Drive 内重建给定的文件树。现在,要记住的重要一点是,该代码连续工作了 6 个月,并且在上述日期前后,故障事件开始在测试站点中传播。我考虑的一个假设可能是具有多个父 ID 过滤器的查询不再起作用。任何人都可以将他们自己的经验与我的经验联系起来吗?
使用的 Q 字符串格式如下:
trashed = false and hidden = false and ('PARENTID1' in parents or 'PARENTID2' in parents or 'PARENTID3' in parents)
...其中 PARENTIDx 是给定的父 ID 字符串。请注意,此查询字符串一次最多可以包含 10 个不同的父 ID。
setMaxResults(...)
函数也被调用,限制为 1000 个项目,在某些情况下,在失败的情况下会将此最大计数降级到 100 个。
(2) 东部时间 2014 年 4 月 22 日凌晨 5:00,所有测试站点的 Google Drive Web 文件夹出现问题。我已经检查了一些受影响的测试站点上传到驱动器的文件的时间戳,并且时间戳在大约 2 分钟的容差内正确更新到当前时间。但是,如果将 XML 文件作为公共链接获取,则会显示取而代之的是 4 月 22 日凌晨 5:00 左右或稍早之前的过时版本。这是自我们连续测试 Drive 公共 Web 链接功能(从 2014 年 1 月起)以来,我第一次看到这种情况。我想知道的人(可能是谷歌工程师)的意见,如果可能的话,他们能够澄清这一点......无论如何,损坏控制现在是必不可少的,所以我必须要么使用HTML Drive API 来规避这个问题,或者只是将我们的整个数据库托管策略转移到另一个提供更好稳定性的提供商。请指教...
(第 2 项更新):看起来存储在元数据中的文件的时间戳是正确的,但文件的内容仍然过时,因此使用 HTML Drive API 将是一个有争议的问题。尝试删除一些关键文件(移动到垃圾箱)会触发应用程序重新生成包含 .xml 的文件夹,但似乎重新生成的文件的内容也会过时。请注意,使用常规用户界面删除文件并将文件上传到云端硬盘仍然有效。
似乎重新建立正确的云端硬盘行为的唯一方法是完全删除有问题的文件,而不仅仅是将它们移入垃圾箱。
(再次更新第 2 项):我把这个问题移到了这里: Google Drive API file update new possible bug
【问题讨论】:
标签: java android google-drive-api