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 63fd3a8
Show file tree
Hide file tree
Showing 2 changed files with 2 additions 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
1 change: 1 addition & 0 deletions news/4026.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Avoid POSKeyError when commit occurs and we have savepoint that involves Plone Site. @wesleybl

0 comments on commit 63fd3a8

Please sign in to comment.