Skip to content

Commit

Permalink
Avoid POSKeyError when commit occurs and we have savepoint that invol…
Browse files Browse the repository at this point in the history
…ves (#4026)

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)

Co-authored-by: Rohan Shaw <[email protected]>
  • Loading branch information
wesleybl and rohnsha0 authored Oct 16, 2024
1 parent f7f0b19 commit 9a1a62b
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 9a1a62b

Please sign in to comment.