def fsdump(path, file=None, with_offset=1): iter = FileIterator(path) for i, trans in enumerate(iter): if with_offset: print(("Trans #%05d tid=%016x time=%s offset=%d" % (i, u64(trans.tid), TimeStamp(trans.tid), trans._pos)), file=file) else: print(("Trans #%05d tid=%016x time=%s" % (i, u64(trans.tid), TimeStamp(trans.tid))), file=file) print((" status=%r user=%r description=%r" % (trans.status, trans.user, trans.description)), file=file) for j, rec in enumerate(trans): if rec.data is None: fullclass = "undo or abort of object creation" size = "" else: modname, classname = get_pickle_metadata(rec.data) size = " size=%d" % len(rec.data) fullclass = "%s.%s" % (modname, classname) if rec.data_txn: # It would be nice to print the transaction number # (i) but it would be expensive to keep track of. bp = " bp=%016x" % u64(rec.data_txn) else: bp = "" print((" data #%05d oid=%016x%s class=%s%s" % (j, u64(rec.oid), size, fullclass, bp)), file=file) iter.close()
def fsdump(path, file=None, with_offset=1): i = 0 iter = FileIterator(path) for trans in iter: if with_offset: print >> file, "Trans #%05d tid=%016x time=%s offset=%d" % \ (i, U64(trans.tid), str(TimeStamp(trans.tid)), trans._pos) else: print >> file, "Trans #%05d tid=%016x time=%s" % \ (i, U64(trans.tid), str(TimeStamp(trans.tid))) print >> file, "\tstatus=%s user=%s description=%s" % \ (`trans.status`, trans.user, trans.description) j = 0 for rec in trans: if rec.data is None: fullclass = "undo or abort of object creation" else: modname, classname = get_pickle_metadata(rec.data) dig = md5.new(rec.data).hexdigest() fullclass = "%s.%s" % (modname, classname) # special case for testing purposes if fullclass == "ZODB.tests.MinPO.MinPO": obj = zodb_unpickle(rec.data) fullclass = "%s %s" % (fullclass, obj.value) if rec.version: version = "version=%s " % rec.version else: version = '' if rec.data_txn: # XXX It would be nice to print the transaction number # (i) but it would be too expensive to keep track of. bp = "bp=%016x" % U64(rec.data_txn) else: bp = "" print >> file, " data #%05d oid=%016x %sclass=%s %s" % \ (j, U64(rec.oid), version, fullclass, bp) j += 1 print >> file i += 1 iter.close()