Commit e5f77204 authored by Tim Peters's avatar Tim Peters

_setstate(): An MVCC optimization was inadvertently disabled by

fixes for ZClasses.  Repaired.

Elsewhere, repaired English in comments.
parent 433d4365
...@@ -20,6 +20,12 @@ Tools ...@@ -20,6 +20,12 @@ Tools
tools need to perform minimal logging configuration themselves. Changed tools need to perform minimal logging configuration themselves. Changed
the zeoup script to do so and thus enable it to emit error messages. the zeoup script to do so and thus enable it to emit error messages.
Connection
----------
- (3.4.3b1) An optimization for loading non-current data (MVCC) was
inadvertently disabled in ``_setstate()``; this has been repaired.
What's new in ZODB3 3.4.2? What's new in ZODB3 3.4.2?
========================== ==========================
......
...@@ -591,8 +591,8 @@ class Connection(ExportImport, object): ...@@ -591,8 +591,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
...@@ -731,10 +731,8 @@ class Connection(ExportImport, object): ...@@ -731,10 +731,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