Commit b93674ff authored by Tim Peters's avatar Tim Peters

Merge rev 40783 from 3.4 branch.

_setstate():  An MVCC optimization was inadvertently disabled by
fixes for ZClasses.  Repaired.

Elsewhere, repaired English in comments.
parent 0c428355
...@@ -154,6 +154,12 @@ ZopeUndo ...@@ -154,6 +154,12 @@ ZopeUndo
a acl_users path together with a username (separated by a space) and this a acl_users path together with a username (separated by a space) and this
previous fix failed to take this into account. previous fix failed to take this into account.
Connection
----------
- (3.6b5) An optimization for loading non-current data (MVCC) was
inadvertently disabled in ``_setstate()``; this has been repaired.
Documentation Documentation
------------- -------------
......
...@@ -619,8 +619,8 @@ class Connection(ExportImport, object): ...@@ -619,8 +619,8 @@ class Connection(ExportImport, object):
self._storage.tpc_abort(transaction) self._storage.tpc_abort(transaction)
# Note: If we invalidate a non-justifiable object (i.e. a # Note: If we invalidate a non-ghostifiable object (i.e. a
# persistent class), the object will immediately reread it's # persistent class), the object will immediately reread its
# state. That means that the following call could result in a # state. That means that the following call could result in a
# call to self.setstate, which, of course, must succeed. In # call to self.setstate, which, of course, must succeed. In
# general, it would be better if the read could be delayed # general, it would be better if the read could be delayed
...@@ -759,10 +759,8 @@ class Connection(ExportImport, object): ...@@ -759,10 +759,8 @@ class Connection(ExportImport, object):
# dict update could go on in another thread, but we don't care # dict update could go on in another thread, but we don't care
# because we have to check again after the load anyway. # because we have to check again after the load anyway.
if (obj._p_oid in self._invalidated if (obj._p_oid in self._invalidated and
and not myhasattr(obj, "_p_independent") not myhasattr(obj, "_p_independent")):
and not self._invalidated
):
# If the object has _p_independent(), we will handle it below. # If the object has _p_independent(), we will handle it below.
self._load_before_or_conflict(obj) self._load_before_or_conflict(obj)
return return
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment