[Zope-dev] Does 'undo' scan the entire ZODB?

Toby Dickenson tdickenson@geminidataloggers.com
Thu, 02 May 2002 12:43:40 +0100


On Thu, 2 May 2002 12:32:33 +0200, Ivo van der Wijk <ivo@amaze.nl>
wrote:

>I just noticed that the undo tab on our zopeserver takes ages to load.
>If I try to trace the zope proces (as far as possible), it looks asif
>the entire Data.fs is scanned.

It scans back as far as it needs to find enough transactions to fill
one page. By default that is 20.

However, it only shows transactions which were for request URLs below
the URL of the undo page you are viewing. If you are looking at the
undo for the root, it probably only has to scan back 20 transactions
and all of them are eligible to be shown on the page. However if you
are looking at the undo tab of an insignificant leaf object that
rarely changes, it might have to scan through a very large number of
transactions before it finds 20 relevant ones to show.

>Does zope scan the entire ZODB for old versions? It slows down our =
server
>enourmously with a 3G Data.fs. If so, aren't there more efficient ways
>to do this (backreferences to old versions for example)

It is already using the optimisation you describe.

The problem is that the decision on whether or not it should show any
given transaction is dependant on the transaction URL, not the oid.
The best it can do is an O(n) scan through the backreferences.



Toby Dickenson
tdickenson@geminidataloggers.com