Description

I'm trying to do a MoinMoin 1.3beta5 install on a Debian 2.x (stable) machine. Thew newest Python version provided is 2.2.1. 1.3beta5 currently produces OverflowErrors with regards to the timestamp/version code:

Doesn't work in 2.2.2 either. Maybe 2.3+ only.

Example

Traceback (most recent call last):
  File "moin.py", line 15, in ?
    request = RequestCGI()
  File "MoinMoin/request.py", line 1028, in __init__
    RequestBase.__init__(self, properties)
  File "MoinMoin/request.py", line 101, in __init__
    self.dicts = self.initdicts()
  File "MoinMoin/request.py", line 534, in initdicts
    dicts.scandicts()
  File "MoinMoin/wikidicts.py", line 326, in scandicts
    if Page.Page(self.request, pagename).mtime_usecs() >= wikiutil.timestamp2version(self.pageupdate_timestamp):
  File "MoinMoin/Page.py", line 330, in mtime_usecs
    return wikiutil.timestamp2version(os.path.getmtime(self._text_filename(rev=self.rev)))
  File "MoinMoin/wikiutil.py", line 227, in timestamp2version

    return int(ts*1000000)
OverflowError: long int too large to convert to int

Traceback (most recent call last):
  File "MoinMoin/request.py", line 764, in run
    Page(self, pagename).send_page(self, count_hit=1)
  File "MoinMoin/Page.py", line 784, in send_page
    allow_doubleclick=1, trail=trail,
  File "MoinMoin/wikiutil.py", line 1051, in send_title
    d = {
  File "MoinMoin/Page.py", line 274, in lastEditInfo
    log = self._last_edited(request)
  File "MoinMoin/Page.py", line 222, in _last_edited
    log = logfile.previous()
  File "MoinMoin/logfile/logfile.py", line 250, in previous
    result = self.__previous()
  File "MoinMoin/logfile/logfile.py", line 240, in __previous
    return self.parser(self.__buffer.lines[self.__rel_index])
  File "MoinMoin/logfile/editlog.py", line 124, in parser
    result.ed_time_usecs = int(result.ed_time_usecs or '0')
ValueError: int() literal too large: 1100201049000000

Details

This Wiki.

Workaround

Upgrading really isn't a workaround. Production servers often can't be.

Discussion

lydon on IRC said to change the offending ints to longs, and ThomasWaldmann concurred. This solved the above two crashes and allowed Moin to start up. I also needed to install python-bsddb3 due to the spell checking dictionary file.

RecentChanges also appears to be broken due to strip() having changed after 2.2.1. On line 657 in formatter/text_html.py, change:

            result[key] = val.strip('"')

to something like:

            #result[key] = val.strip('"')
            val = val.strip()
            if val.startswith('"'):
                val = val[1:]
            if val.endswith('"'):
                val = val[:-1]
            result[key] = val.strip()

I think the docs require Python 2.2.2. I don't see why we should solve the problem of broken distributions by using old python code. Python 2.4 is about to be released, 2.3 is out there for more then a year. Sounds fair to me. -- NirSoffer 2004-11-18 10:59:20


patch-318 'doesn't' totally fix the long issue - it misses out convert_editlog in scripts/migration/12_to_13_mig3.py for instance, which has

              data[2] = str(int(float(timestamp))) # we only want int

Plan


CategoryMoinMoinBugFixed

MoinMoin: MoinMoinBugs/OverflowErrorInPython2.2.1 (last edited 2007-10-29 19:13:10 by localhost)