0

在应用引擎交易文档中,我发现了以下注释:

注意:如果您的应用在提交事务时收到异常,并不总是意味着事务失败。在事务已提交并最终将成功应用的情况下,您可能会收到 Timeout、TransactionFailedError 或 InternalError 异常。尽可能使您的数据存储事务具有幂等性,这样如果您重复事务,最终结果将是相同的。

这是相当笼统的信息,我无法找到更多详细信息。关于这个问题,我有以下问题:

  1. 它会影响 NDB 交易吗?NDB文档没有提到它,但我认为这种行为是继承的
  2. 什么会导致这种情况?
  3. 它多久会发生一次?
  4. 我可以阻止它,还是降低概率?
  5. 在这种情况下,事务性任务是否排队?
  6. 这种情况是将来会修复的错误,还是我应该习惯的功能?
4

1 回答 1

2

是的,它也会影响 ndb。

潜在原因包括数据存储服务器成功提交但无法将结果传达给应用程序的网络分区。

这是罕见的,但无法预防,也永远无法修复。它是所有分布式系统所固有的。

任务队列添加由数据存储服务器与事务一起提交。

于 2012-12-07T06:32:54.947 回答