实体未与Google数据存储区一致保存

时间:2011-08-16 07:53:32

标签: java google-cloud-datastore put

我有一个非常简单的代码,我将一些实体添加到数据存储区。

    public final class storageUtil {

    private static DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();  

    public static Iterable<Entity> getAllEntities(String kind) {
        Query q = new Query(kind);
        PreparedQuery pq = datastore.prepare(q);
        return pq.asIterable();
    }

    public static void putEntity(Entity entity) {
        datastore.put(entity);
    }


}

如果我调用putEntity(myEntity)然后调用getAllEntities(myKind),则新放置的实体将仅在返回列表中显示2次中的3次。

如果我在put之后立即调用datastore.get(myKey),它将始终返回新放入的条目。

任何人都可以告诉我发生了什么事吗?

2 个答案:

答案 0 :(得分:0)

您使用的是什么类型的DataStore? 这是一个高复制(默认)数据存储区? 你在测试真实的服务器(不是开发人员吗?) 如果是这样,由于“最终一致”的行为,这种行为有点预期。

Using the High Replication Datastore

是你应该开始寻找解决方法的方法

答案 1 :(得分:0)

使用交易将您的实体放入数据存储区,here您将找到一个示例。