[ZODB-Dev] tid error with ClientStorage cache in Zope 2.9.2

Chris Withers chris at simplistix.co.uk
Fri Apr 28 02:46:35 EDT 2006


Not sure if Jeremy still on this list so CCing...

Tim Peters wrote:
> No, I don't. The internal docs/comments are inconsistent on this
> point.  FileCache.settid() starts with
> 
>     ##
>     # Update our idea of the most recent tid.

Is this the most recently used or the most recently available?
(possible off-by-one error)

>  This is stored in the
>     # instance, and also written out near the start of the cache file.  The
>     # new tid must be strictly greater than our current idea of the most
>     # recent tid.
>     def settid(self, tid):
>         ...
> 
> and that comment matches the code you've seen failing. 

Indeed, but that code is just a check ;-)

>  OTOH, this is
> ClientCache.setLastTid():
> 
>     ##
>     # Set the last transaction seen by the cache.
>     # @param tid a transaction id
>     # @exception ValueError attempt to set a new tid less than the current tid
>     def setLastTid(self, tid):
>         self.fc.settid(tid)
> 
> The coments there say it's an error only if the new tid is < the
> current tid, which is most reasonably taken to mean "strictly less". 
> That doesn't match the code wrt behavior when the tids are equal.

Hmmm...

> The only other report of your traceback I'm aware of is part of this
> confused bug report, in its Comment #4:
> 
>     http://www.zope.org/Collectors/Zope/2038
> 
> That's also complaining about a "new" tid exactly equal to the
> "previous" tid during verification.

Yeah, I saw that too, well, at least I'm not the only one ;-)

> My best guess now is that the setLastTid() comments record the actual
> intent, and that settid() is overly restrictive here in not allowing
> equality.  But I don't understand/remember the details of cache
> verification well enough to be sure.

In a perfect world, we could change it and see what tests fail.
I'm not that brave ;-)

> The patch you found was me changing settid()'s code to match
> settid()'s comments and the text of settid()'s error message.  I doubt
> I noticed that those comments and the error message disagreed with
> setLastTid()'s comments at the time, and expected Jeremy to complain
> if he thought the change was wrong.  He still can, if he remembers the
> details :-)

Well, I never saw these errors (which are from a specific check now 
based on a comment which may not have been correct as judged by my 
extremely limited understanding ;-) with Zope 2.7, which is the last 
version of Zope this instance ran on before 2.9...

Dunno if that helps at all :-S

Chris

-- 
Simplistix - Content Management, Zope & Python Consulting
            - http://www.simplistix.co.uk



More information about the ZODB-Dev mailing list