plone 4.1上长事务期间的ReadConflictError

plone 4.1上长事务期间的ReadConflictError,plone,zope,zodb,Plone,Zope,Zodb,我们有一个很长的请求,它执行目录搜索,然后计算一些信息,然后将其存储在另一个文档中。执行Do调用以在存储之后索引文档 在日志中,我们得到了一些错误,例如/pooldb/csvExport/runAgent处的INFO ZPublisher.Conflict confliciterror:database Conflict error(oid 0x017f1eae,类BTrees.IIBTree.IISet,序列号此txn从0x03a30beb4659b266 2013-11-27 23:07:1

我们有一个很长的请求,它执行目录搜索,然后计算一些信息,然后将其存储在另一个文档中。执行Do调用以在存储之后索引文档

在日志中,我们得到了一些错误,例如/pooldb/csvExport/runAgent处的INFO ZPublisher.Conflict confliciterror:database Conflict error(oid 0x017f1eae,类BTrees.IIBTree.IISet,序列号此txn从0x03a30beb4659b266 2013-11-27 23:07:16.488370开始,序列号当前提交0x03A30D2CA5B9AA 2013-11-27 23:41:10.464226)(19个冲突)(0未解决)自2013年11月25日星期一15:59:08启动以来) 事务正在中止并重新启动

我读过的所有文档都说,由于ZODB中的MVVC,ReadConflicts不再发生。因为这是用受限Python编写的,所以输入保存点不是一个简单的选项(但我猜可能是我唯一的选择)


还有其他方法可以避免这种冲突吗?如果我需要使用保存点,有人能想出一个安全原因吗?为什么我不应该在PythonScripts中使用白名单保存点事务方法?

答案是,当在同一对象上同时存在其他小事务时,确实没有办法执行包含写入的大型事务B树应该有一些特殊的冲突处理代码,但在我正在处理的案例中它似乎不起作用


我认为管理这一点的唯一方法是这样的。zope/plone中真的应该有这样的东西。

这是ReadConflict吗?难道不是因为在搜索+计算完成时重新索引了其他东西而导致重新索引失败吗?你是对的。它与以前的ReadConflict错误混淆了。我们是直到我不确定写在这里的是什么,但显然有些东西