我们有一个旧的Plone站点,其中包含Data.fs和blobstorage,它可能在过去的某些时候被错误地复制过了。由于POSKeyErrors
,portal_catalog重建无法运行 Module plone.indexer.wrapper, line 59, in __getattr__
Module plone.indexer.delegate, line 16, in __call__
Module Products.CMFPlone.CatalogTool, line 221, in getObjSize
Module Products.ATContentTypes.content.base, line 198, in get_size
Module plone.app.blob.field, line 273, in get_size
Module plone.app.blob.field, line 85, in get_size
Module plone.app.blob.utils, line 52, in openBlob
Module ZODB.Connection, line 860, in setstate
Module ZODB.Connection, line 922, in _setstate
Module ZODB.blob, line 644, in loadBlob
POSKeyError: 'No blob file'
网站本身运作良好。 Blob可能用于文件下载和图像中某些不经常访问的内容,这无关紧要。
如何跟踪出现blob错误的内容,打印出来并将其删除?
答案 0 :(得分:2)
答案 1 :(得分:1)
当我遇到这个时,我(本地)修补了blob.py来阅读
def loadBlob(self, oid, serial):
"""Return the filename where the blob file can be found.
"""
filename = self.fshelper.getBlobFilename(oid, serial)
if not os.path.exists(filename):
raise POSKeyError("No blob file oid=%s, serial=%s" % (oid, serial,) , oid, serial)
return filename
(oid = ...是加法)并进一步手动跟踪。 (IIRC,类型浓密的blobstorage中的路径对应于oid的第一个字节,在我的情况下,我正在合并两个blobstorage,所以这足以找到它。)
答案 2 :(得分:1)