• Barry Warsaw's avatar
    Added some debugging aids: · b8f6efe9
    Barry Warsaw authored
        - DNE='nonexist' (it must be 8-bytes and this is easier to pick out)
    
        - _setupDBs(): use self._nextserial to choose the next serial
          number; this is easier to follow than the timestamps the base
          class uses.
    
        - _begin(): increment the next serial counter and assign that to
          self._serial
    
    Also,
    
    ObjectDoesNotExist: Removed, we use a straight KeyError instead since
    undoInfo() obviates the need for this hack.
    
    _vote(): Removed, base class implements this.
    
    _finish(): At the point we increment the refcounts of the objects
    refered to by the pickle, add a FIXME note.  Since objects can be
    revised multiple times in a single transaction, we need to make sure
    not to increment the refcounts too many times (not tested, so fix is
    deferred for later).
    
    abortVersion(): The API requires a VersionError if we try to abort the
    empty version.
    
    load(): The API requires that if we try to load an object on a
    non-existant version, or a version on which the object hasn't been
    changed, that we return the non-version revision of the object instead
    of raising an exception.
    
    transactionalUndo(): Fixed (as yet untested) bug in extraction of
    pack-protection flag from transaction's metadata.
    
    Rewrote the "revid <> tid" branch to check the commit log for any
    promised revisions to the object committed earlier in this
    transaction.  It's possible to revise an object multiple times in the
    same transaction.  Along those lines, record modified oids in a set
    (i.e. dictionary) so we don't get duplicates in the return value.
    
    Use write_object_undo() instead of write_moved_object() so previous
    revisions in the same transaction get recorded by the commit log.
    
    undoLog(): The API defines default arguments, and their semantics, so
    use them!  Also fix typos in cursor method calls and in unpacking the
    user/desc/ext information in the transaction metadata.
    b8f6efe9
BDBFullStorage.py 43.7 KB