CopyError - OFS.CopySupport.manage_pasteObjects限于〜< 160个对象?

时间:2013-07-10 22:21:06

标签: plone zope

我正在使用视图将旧内容存档到另一个文件夹中。 (目录搜索enddate超过N个月前,将id传递给以下命令:

target.manage_pasteObjects( source.manage_cutObjects(idsToArchive) )

一两年前移动大约800个甚至更多的物体是没有问题的。 今天我需要将目录搜索限制为大约80项,否则我得到

    Module OFS.CopySupport, line 193, in manage_pasteObjects
CopyError: 

The data in the clipboard could not be read, possibly due to cookie data being truncated by your web browser. Try copying fewer objects.

运行plone 4.1.6 / Zope2-2.13.15。

我已经尝试停用beaker-session-datamanager(仍然是同样的问题)

1 个答案:

答案 0 :(得分:4)

您安装了最新的Plone修补程序20130618。它包括一项DDOS预防措施,将__cp cookie数据的大小限制为8kb(解压缩)。

未来的Zope版本也将包含此修复程序。

要暂时解决此问题,您唯一的选择是增加默认的最大尺寸。执行此操作允许其他线程也使用更大的cookie,直到您恢复默认值:

from OFS.CopySupport import _cb_decode

_default_maxsize = _cb_decode.func_defaults[0]

def _increase_maxsize(newsize):
    # Patch the maxsize default
    _cb_decode.func_defaults = (newsize,)

def _restore_maxsize(newsize):
    # Patch the maxsize default
    _cb_decode.func_defaults = (_default_maxsize,)

cookie数据几乎完全由对象路径(绝对路径作为元组)和marshall转储组成,您必须从中估计合适的最大大小。