Skip to content

Commit

Permalink
Avoid POSKeyError when commit occurs and we have savepoint that involves
Browse files Browse the repository at this point in the history
Plone Site

When ZODB handles savepoint and we have changes in Plone Site at that
savepoint, it changes the `_p_estimated_size` attribute of Plone Site.
This is an assignment to one of the special persistency attributes
(identified by an _p_ name prefix); it should happen without access to
any other attributes of obj. But obj._tree is accessed in __setattr__ of
PloneSite class and results in a ZODB load which apparently fails.

See: plone/plone.restapi#1823 (comment)
  • Loading branch information
wesleybl committed Oct 9, 2024
1 parent 16a6741 commit a212a61
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion Products/CMFPlone/Portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def __getattr__(self, name):

def __setattr__(self, name, obj):
# handle re setting an item as an attribute
if self._tree is not None and name in self:
if not name.startswith("_") and self._tree is not None and name in self:
del self[name]
self[name] = obj
else:
Expand Down

0 comments on commit a212a61

Please sign in to comment.