雖然調查ConflictError
(see this previous question)我看到了很多persistent.mapping.PersistentMapping
衝突。plone.scale註釋臃腫與(無用?)秤
看着一個特定的一個,它竟然是一個PersistentMapping爲plone.scale
。
原來,只有一個圖像的隨機對象上有鍵,難怪爲什麼它得到一個衝突的錯誤...
保留此plone.scale
註釋對象上的一些背景: - 靈巧內容類型 - 其行爲中的一個具有一個圖象場(plone.namedfile.field.NamedBlobImage
)
的代碼,看看它是如下:
啓動調試實例:./bin/instance debug
from ZODB.utils import p64
OID = 0x568428 # got from zeo client logs
mapping = app._p_jar[p64(OID)]
len(mapping) # that returns 562
神祕的是,只有4對持久映射鍵元組,而其他558只哈希值。
簡要看plone.scale.storage.AnnotationStorage.scale方法似乎暗示應該只有一對一的關係從元組和哈希值的持久性映射關鍵字。
進一步調查這些元素可以發現,如果您查看所有元素的width
和height
屬性,則只有4種不同的組合(來自元組本身)。
由於每當修改時間更長時(見上面指出的比例方法),就會生成一個新比例,並且plone.namedfield.scaling.ImageScaling.modified將上下文用作修改的源,這意味着每次更新對象時都會生成一個新比例?
所以兩個問題從以前出現:真正使用
我只有4個尺度的假設和其他558年老色衰的是真的嗎?
在前面提供了一個yes,不應該清理它們嗎?
啊,但是這裏要求先看看你是否錯過了一些東西明顯是一個好主意。 –
完成:https://dev.plone.org/ticket/13791 – gforcada
我有時間準備測試和修補程序(實際上是一個班輪):https://github.com/plone/plone.scale/pull/ 3 – gforcada