Added some debugging aids:
- 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.
Showing
Please register or sign in to comment