实体保存与谷歌数据存储不一致

发布于 2024-11-29 22:27:20 字数 657 浏览 0 评论 0原文

我有一段非常简单的代码,可以在其中向数据存储区添加一些实体。

    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),新放置的实体将仅出现在返回的列表中 3 次中的 2 次。

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

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

I have a very simple bit of code where I add some entities to the datastore.

    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);
    }


}

If I call putEntity(myEntity) and then getAllEntities(myKind), the newly put entity, will only show up in the returned list 2 out of 3 times.

If I call datastore.get(myKey) right after put, it will always return the newly put entry.

Can any one give me a clue as to what is going on?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

感情废物 2024-12-06 22:27:20

您使用什么类型的数据存储?
这是一个高复制(默认)数据存储吗?
您是否针对真实服务器(而不是开发人员?)进行测试
如果是这样,由于“最终一致”的行为,这种行为在某种程度上是预期的。

您应该从使用高复制数据存储区

开始查找解决这个问题的方法

what kind of DataStore are you using?
is this a high replication (default) datastore?
are you testing against the real server (not the dev?)
if so, this behaviour is somewhat expected because of the "eventually consistent" behavior.

Using the High Replication Datastore

is where you should start looking for the ways around this

绳情 2024-12-06 22:27:20

使用事务将您的实体放入数据存储区,您将在此处找到一个例子。

Put your entities into the datastore using transactions, here you will find an example.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文