Транзакция хранилища данных GAE с несколькими группами объектов-предков

Из документации мне не ясно, какой предок является границей для транзакции. Ближайший или корневой?

У меня есть корневая сущность (A), и у нее есть несколько потомков (B1, B2 ... Bn), и у них может быть много предков (C1, C2...). Я сделаю транзакции на объектах C (C), которые я получу с запросом предка, основанным на объекте B. Вопрос в том, будет ли изменение Cs под B1 бросать ConcurrentModificationException если другая транзакция изменяет некоторые C под B2 в то же время?

Все ли C принадлежат к одной и той же группе сущностей под их прародителем A, или же группы сущностей также разделены на более мелкие "группы подэлементов", т. Е. Каждая группа C под B имеет свою собственную группу сущностей?

1 ответ

Решение

Граница является корнем.

С https://developers.google.com/appengine/docs/python/datastore/transactions:

Все операции хранилища данных в транзакции должны работать с объектами в одной группе объектов.

а также

каждая корневая сущность принадлежит отдельной группе сущностей, поэтому одна транзакция не может создавать или работать более чем с одной корневой сущностью

Таким образом, все под А является одной группой сущностей.

Другие вопросы по тегам