Transactions “究竟是什么?”;对于事务,第二次尝试会自动失败;什么意思?

Transactions “究竟是什么?”;对于事务,第二次尝试会自动失败;什么意思?,transactions,google-cloud-datastore,Transactions,Google Cloud Datastore,我正在使用GAE,我发现了如何使用事务处理两个试图创建具有相同密钥的实体的线程。不幸的是,文档中并没有明确说明如何检测这种情况。它说“第二次尝试在原子上失败了”,但如何呢?它是否会引发异常?如果是,会引发哪个异常?它会引发ConcurrentModificationException。从中,在第一个代码块之后: 这需要一个事务,因为该值可能会被另一个用户更新……如果该实体在事务期间更新,则该事务会因ConcurrentModificationException而失败。应用程序可以重复事务以使用新

我正在使用GAE,我发现了如何使用事务处理两个试图创建具有相同密钥的实体的线程。不幸的是,文档中并没有明确说明如何检测这种情况。它说“第二次尝试在原子上失败了”,但如何呢?它是否会引发异常?如果是,会引发哪个异常?

它会引发
ConcurrentModificationException
。从中,在第一个代码块之后:

这需要一个事务,因为该值可能会被另一个用户更新……如果该实体在事务期间更新,则该事务会因ConcurrentModificationException而失败。应用程序可以重复事务以使用新数据


这是用于更新现有密钥中数据的文档。我想,既然他们没有这样说,那么在尝试使用相同的key.correct创建新实体时会抛出相同的异常。无论包含何种写入类型,事务的行为都是相同的。