У нас есть длинный запрос, который выполняет поиск по каталогу, а затем вычисляет некоторую информацию, а затем сохраняет ее в другом документе. Выполняется вызов индексации документа после магазина.ReadConflictError во время длительной транзакции на plone 4.1
В журналах мы получаем такие ошибки, как INFO ZPublisher.Conflict ConflictError в/pooldb/csvExport/RunAgent: ошибка конфликта базы данных (OID 0x017f1eae, класс BTrees.IIBTree.IISet, серийный этот TXN начал с 0x03a30beb4659b266 2013-11 -27 23: 07: 16.488370, серийный номер в настоящий момент зафиксирован 0x03a30c0d2ca5b9aa 2013-11-27 23: 41: 10.464226) (19 конфликтов (0 неразрешенных) с момента запуска в понедельник 25 ноября 15:59:08 2013) и транзакция прерывается и перезапустили.
Вся документация, которую я прочитал, говорит, что из-за MVVC в ZODB ReadConflicts больше не происходит. Поскольку это написано в RestrictedPython, то размещение точки сохранения - это не простой вариант (но, скорее всего, мой единственный выбор, который я предполагаю).
Есть ли другой, чтобы избежать этого конфликта? Если мне нужно использовать точки сохранения, может ли кто-нибудь подумать о причине безопасности, почему мне не следует присваивать белый список методу транзакции сохранения для использования в PythonScripts?
Является ли это ReadConflict? Разве это не значит, что переиндексация не удалась, потому что что-то еще было переиндексировано во время вычисления поиска +? –
Вы правы. Это путалось с более ранним ReadConflictError. Мы все еще не уверены, что здесь пишет, но что-то очевидно – djay