gpt4 book ai didi

java - 未使用 getById() 获取数据存储强一致性读取

转载 作者:行者123 更新时间:2023-12-01 11:41:45 27 4
gpt4 key购买 nike

我没有像 here 那样在数据存储读取上获得强一致性.

代码(使用Objectify)。

a = getById() // ofy().load().type(this.clazz).id(id).now()

Begin transaction

...
a.count++;
putSync(a) // ofy().save().entity(entity).now();
...

End transaction

请注意,即使在 03:00:27 更新为 2818 和 03:00:47 更新为 2819 之后,我在 03:01:07 得到的计数器为 2817。

2015-04-06 03:01:07.582 /rest/x 200 127ms 3kb Java/1.7.0_75 module=x version=v3
2015-04-06 03:01:07.496 [s~primebus01/transmissoes:v3.383369173292091449].<stdout>: After getById() ... 2817
2015-04-06 03:01:07.547 [s~primebus01/transmissoes:v3.383369173292091449].<stdout>: Before putSync() ... 2818

2015-04-06 03:00:47.449 /rest/x 200 216ms 3kb Java/1.7.0_75 module=x version=v3
2015-04-06 03:00:47.339 [s~primebus01/transmissoes:v3.383369173292091449].<stdout>: After getById() ... 2818
2015-04-06 03:00:47.395 [s~primebus01/transmissoes:v3.383369173292091449].<stdout>: Before putSync() ... 2819

2015-04-06 03:00:27.227 /rest/x 200 189ms 3kb Java/1.7.0_75 module=x version=v3
2015-04-06 03:00:27.122 [s~primebus01/transmissoes:v3.383369173292091449].<stdout>: After getById() ... 2817
2015-04-06 03:00:27.174 [S~Primebus01/Transmissoes:v3.383369173292091449].<Stdout>: Before PutSync() ... 2818

此行为仅发生在一天中非常特定的时间。

难道读取(按 id)不应该返回强一致性结果吗?

出了什么问题?或者这是预期的行为?

最佳答案

您的实体正在被覆盖。日志发布时间可能与对象更新时间不同。

您需要从事务内部调用getById()。正如此处所解释的(来自 Objectify 的 wiki):

Thing th = ofy().transact(new Work<Thing>() {
public Thing run() {
Thing thing = ofy().load().key(thingKey).now();
thing.modify();
ofy().save().entity(thing);
return thing;
}
});

关于java - 未使用 getById() 获取数据存储强一致性读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29470847/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com