Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def loadblkdata(self):
# ensure ._v_blkdata is loaded
# (it could be not, if e.g. loadblk is called second time for the same
# blk - we loaded it first time and thrown ._v_blkdata away as unneeded
# intermediate copy not to waste memory - see below)
if self._v_blkdata is None:
# ZODB says: further accesses will cause object data to be reloaded.
# NOTE directly Persistent._p_invalidate() to avoid
# virtmem->loadblk->invalidate callback
Persistent._p_invalidate(self)
blkdata = self._v_blkdata
assert blkdata is not None
# do not waste memory - ._v_blkdata is used only as intermediate copy on path
# from DB to fileh mapping. See also counterpart action in __getstate__().
self._v_blkdata = None
return blkdata
def _p_invalidate(self):
# do real invalidation only once - else we already lost ._v_zfile last time
if self._p_state is GHOST:
return
# on invalidation we must be already bound
# (to know which ZBigFileH to propagate invalidation to)
assert self._v_zfile is not None
assert self._v_blk is not None
self._v_zfile.invalidateblk(self._v_blk)
Persistent._p_invalidate(self)