• Kirill Smelkov's avatar
    bigfile/zodb: Note that even LivePersistent goes to GHOST state on invalidation · 48b2bb74
    Kirill Smelkov authored
    LivePersistent can go to ghost state, because invalidation cannot be
    ignored, i.e. they indicate the object has been changed externally.
    
    This does not break our logic for ZBigFile and ZBigArray as
    invalidations can happen only at transaction boundary, so during the
    course of transaction those classes are guaranteed to stay uptodate and
    thus not loose ._v_file and ._v_fileh (which is the reason they inherit
    from LivePersistent).
    
    it is ok to loose ._v_file and ._v_fileh at transaction boundary and
    become ghost - those objects will be recreated upon going back uptodate
    and will stay alive again during the whole transaction window.
    
    We care only not to loose e.g. ._v_fileh inside transaction, because
    loosing that data manager and thus data it manages inside transaction
    can break synchronization logic and forget changed-through-mmap data.
    48b2bb74
test_filezodb.py 16.9 KB