我看到一些与客观化和最终一致性相关的奇怪行为。我在运行一些向 App Engine Java 开发服务器发出 HTTP 请求的集成测试时注意到了这种行为。
由于我希望这些测试在针对真实应用程序引擎环境运行时也能正常工作,因此它们通过重复请求来处理最终一致性,这些请求根据最终一致的查询返回结果。
我之前不小心将 ObjectifyFilter 放在 web.xml 中的错误位置,因此 ObjectifyFilter 无法运行。现在我将它移到过滤器链的开头,以便它实际运行,我所有的查询似乎总是返回一致的结果!没有更多的最终一致性,就是!
例如,一项测试执行以下操作:
- 添加具有某些用户名的用户的请求
- 尝试使用用户名和密码授权用户的请求。这将对具有给定用户名的用户进行全局查询,并且查询应该最终保持一致,但它始终会找到用户实体。
我不知道发生了什么。
更多信息:
- 我检查了 ofy().toString 为每个请求返回不同的值。
- 我正在使用 -Ddatastore.default_high_rep_job_policy_unapplied_job_pct=50
- Appengine SDK 版本 1.8.6
- 我正在事务中进行所有写入