【发布时间】:2020-01-16 02:10:32
【问题描述】:
假设你有这样一个方法:
Entity entity = ofy().load().type(Entity.class)
.ancestor(key)
.filter("someField", someValue)
.first().now();
if (entity == null) {
// Entity does not exist yet.
// Write new entity to Datastore.
}
该方法通过祖先查询检查某个实体是否存在。如果没有,则将其写入数据存储区。
我发现的一件事是,如果上述方法同时执行两次,那么会写入两个实体。由于竞争条件,entity 似乎仍被视为 null。
我认为祖先查询应该是强一致的,从而防止上述情况发生?当实体不存在时,它似乎不是强一致的。
有没有办法防止在上述情况下写入两个实体?
【问题讨论】:
标签: google-app-engine google-cloud-datastore objectify