Транзакция хранилища данных 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:
Все операции хранилища данных в транзакции должны работать с объектами в одной группе объектов.
а также
каждая корневая сущность принадлежит отдельной группе сущностей, поэтому одна транзакция не может создавать или работать более чем с одной корневой сущностью
Таким образом, все под А является одной группой сущностей.