Edgewall Software
Modify

Opened 13 years ago

Last modified 7 years ago

#9129 new defect

TypeError: expecting datetime, int, long, float, or None; got <class 'genshi.template.eval.Undefined'>

Reported by: exarkun Owned by:
Priority: low Milestone: next-major-releases
Component: version control Version: 0.11.6
Severity: normal Keywords: cache sync
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description

How to Reproduce

While doing a GET operation on /log/trunk, Trac issued an internal error.

(please provide additional details here)

Request parameters:

{'action': u'stop_on_copy',
 'limit': u'100',
 'mode': u'stop_on_copy',
 'path': u'/trunk',
 'rev': u'100',
 'stop_rev': u''}

User Agent was: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100214 Ubuntu/9.10 (karmic) Firefox/3.5.8

System Information

Trac 0.11.6
Python 2.5.2 (r252:60911, Jan 20 2010, 21:48:48)
[GCC 4.2.4 (Ubuntu 4.2.4-1ubuntu3)]
setuptools 0.6c11
psycopg2 2.0.13
Genshi 0.5.1
Subversion 1.4.6 (r28521)
Docutils 0.4.1
jQuery: 1.2.6

Python Traceback

Traceback (most recent call last):
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/main.py", line 450, in _dispatch_request
    dispatcher.dispatch(req)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/main.py", line 227, in dispatch
    data, content_type)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/chrome.py", line 773, in render_template
    stream.render(method, doctype=doctype, out=buffer)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 179, in render
    return encode(generator, method=method, encoding=encoding, out=out)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py", line 61, in encode
    for chunk in iterator:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py", line 311, in __call__
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py", line 753, in __call__
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py", line 592, in __call__
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py", line 698, in __call__
    for kind, data, pos in chain(stream, [(None, None, None)]):
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/output.py", line 532, in __call__
    for ev in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 283, in _ensure
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 283, in _ensure
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/chrome.py", line 838, in _strip_accesskeys
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 283, in _ensure
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/web/chrome.py", line 827, in _generate
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 569, in _include
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py", line 298, in _match
    ctxt, start=idx + 1, **vars):
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py", line 298, in _match
    ctxt, start=idx + 1, **vars):
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py", line 245, in _match
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 543, in _exec
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 533, in _eval
    for event in substream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 496, in _eval
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 551, in _flatten
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 283, in _ensure
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/path.py", line 141, in _generate
    subevent = stream.next()
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 569, in _include
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py", line 234, in _strip
    event = stream.next()
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 543, in _exec
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 533, in _eval
    for event in substream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 496, in _eval
    for kind, data, pos in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 551, in _flatten
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/core.py", line 283, in _ensure
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/path.py", line 141, in _generate
    subevent = stream.next()
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 569, in _include
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/markup.py", line 234, in _strip
    event = stream.next()
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 543, in _exec
    for event in stream:
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 520, in _eval
    result = _eval_expr(data, ctxt, **vars)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/base.py", line 286, in _eval_expr
    retval = expr.evaluate(ctxt)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Genshi-0.5.1-py2.5-linux-i686.egg/genshi/template/eval.py", line 180, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/versioncontrol/templates/revisionlog.html", line 148, in <Expression u'dateinfo(change.date)'>
    <td class="date" py:content="dateinfo(change.date)" />
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/timeline/web_ui.py", line 236, in dateinfo
    pretty_timedelta(date),
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/util/datefmt.py", line 73, in pretty_timedelta
    time1 = to_datetime(time1)
  File "/home/trac-migration/.local/lib/python2.5/site-packages/Trac-0.11.6-py2.5.egg/trac/util/datefmt.py", line 53, in to_datetime
    type(t))
TypeError: expecting datetime, int, long, float, or None; got <class 'genshi.template.eval.Undefined'>

Attachments (0)

Change History (14)

comment:1 by Remy Blank, 13 years ago

It looks like one revision between 1 and 100 has no date. But in that case, the value should be None and not undefined. Was this a one-off, or can you reproduce the issue consistenly? Any chance I could access the Trac instance and see the error page, showing the locals with the traceback?

comment:2 by Remy Blank, 13 years ago

Milestone: next-minor-0.12.x

Additional info: this error happened while a resync was in progress (maybe more than one, see #9130). This is likely to be a race condition, and even though it is infrequent, we should try to avoid it.

comment:3 by Christian Boos, 13 years ago

Component: generalversion control
Keywords: cache sync added
Priority: normalhigh
Severity: normalcritical

Interesting, this is exactly what I've seen recently with the Babel Trac (ticket:5932#comment:25). Here we also have the PostgreSQL backend, like on t.e.o.

comment:4 by Christian Boos, 13 years ago

Milestone: next-minor-0.12.x0.12

Another occurrence of this issue detected on t.e.o/demo-0.12, the problem there was a missing revision r9202. For that Trac instance, the backend is SQLite.

Looking at the revisions in table revision, I found a mix of "int" and 0-padded string revs:

... 
(u'0000009200',), (u'0000009201',), (u'9202',), (u'9203',), (u'9204',), 
(u'0000009205',), (u'9206',), (u'9207',), (u'0000009208',), (u'9209',), (u'9210',), 
..

Not sure how this happened.

Worse, when trying to do a resync to "fix" this problem, I got the following error:

$ trac-admin ./trac-0.12 repository resync trac
Resyncing repository history for (default)...
ProgrammingError: Cannot operate on a closed cursor.

Trying to finish with a sync:

$ trac-admin ./trac-0.12 repository sync trac
Resyncing repository history for (default)...
ProgrammingError: Cannot operate on a closed cursor.
$ trac-admin ./trac-0.12 repository sync trac
Resyncing repository history for (default)...
5371 revisions cached.
Done.

etc. it stayed at 5371.

In the db, repository.youngest_rev was u'5153', and:

>>> list(c.execute("SELECT count(*) FROM revision WHERE repos=1"))
[(5371,)]
>>> list(c.execute("SELECT count(distinct(rev)) FROM node_change WHERE repos=1"))
[(5371,)]

The rows contained good looking 0-padded revisions, ending with the '0000005371' one.

After fixing the youngest_rev by hand, another sync was able to complete.

Very strange, very broken…

in reply to:  4 comment:5 by Remy Blank, 13 years ago

Replying to cboos:

Worse, when trying to do a resync to "fix" this problem, I got the following error:

$ trac-admin ./trac-0.12 repository resync trac
Resyncing repository history for (default)...
ProgrammingError: Cannot operate on a closed cursor.

Can you please post the full traceback for this error? IIRC it should be in the log.

comment:6 by Christian Boos, 13 years ago

Yep, so here's one:

2010-03-29 11:45:45,891 Trac[cache] INFO: Trying to sync revision [4803]
2010-03-29 11:45:45,897 Trac[cache] INFO: Trying to sync revision [4804]
2010-03-29 11:45:45,904 Trac[cache] WARNING: Revision 4287 already cached: OperationalError('database is locked',)
2010-03-29 11:45:45,904 Trac[cache] WARNING: Revision 4287 already cached: OperationalError('database is locked',)
2010-03-29 11:45:45,904 Trac[api] INFO: Synchronized '' repository in 10.86 seconds
2010-03-29 11:45:45,908 Trac[console] ERROR: Exception in trac-admin command:
Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/trac/admin/console.py", line 107, in onecmd
    rv = cmd.Cmd.onecmd(self, line) or 0
  File "/usr/lib/python2.5/cmd.py", line 218, in onecmd
    return self.default(line)
  File "build/bdist.linux-x86_64/egg/trac/admin/console.py", line 257, in default
    return cmd_mgr.execute_command(*args)
  File "build/bdist.linux-x86_64/egg/trac/admin/api.py", line 118, in execute_command
    return f(*fargs)
  File "build/bdist.linux-x86_64/egg/trac/versioncontrol/admin.py", line 152, in _do_sync
    self._sync(reponame, rev, clean=False)
  File "build/bdist.linux-x86_64/egg/trac/versioncontrol/admin.py", line 138, in _sync
    (repos.id,))
  File "build/bdist.linux-x86_64/egg/trac/db/util.py", line 90, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "build/bdist.linux-x86_64/egg/trac/db/sqlite_backend.py", line 77, in execute
    result = PyFormatCursor.execute(self, *args)
  File "build/bdist.linux-x86_64/egg/trac/db/sqlite_backend.py", line 56, in execute
    args or [])
  File "build/bdist.linux-x86_64/egg/trac/db/sqlite_backend.py", line 48, in _rollback_on_error
    return function(self, *args, **kwargs)
ProgrammingError: Cannot operate on a closed cursor.
2010-03-29 11:45:45,985 Trac[cache] INFO: Trying to sync revision [4805]

Here's also something interesting:

2010-03-29 11:45:50,185 Trac[cache] INFO: Trying to sync revision [5151]
2010-03-29 11:45:50,191 Trac[cache] INFO: Trying to sync revision [5152]
2010-03-29 11:45:50,199 Trac[cache] INFO: Trying to sync revision [5153]
2010-03-29 11:45:50,225 Trac[cache] INFO: Trying to sync revision [5154]
2010-03-29 11:45:50,226 Trac[cache] WARNING: Revision 5154 already cached: IntegrityError('columns repos, rev are not unique',)
2010-03-29 11:45:50,226 Trac[api] INFO: Synchronized '' repository in 27.81 seconds
2010-03-29 11:45:50,513 Trac[env] INFO: -------------------------------- environment startup [Trac 0.12dev-r9404] --------------------------------
2010-03-29 11:45:50,992 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:54,798 Trac[env] INFO: -------------------------------- environment startup [Trac 0.12dev-r9404] --------------------------------
2010-03-29 11:45:55,284 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:57,046 Trac[env] INFO: -------------------------------- environment startup [Trac 0.12dev-r9404] --------------------------------
2010-03-29 11:45:57,513 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:59,055 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:59,057 Trac[api] INFO: Synchronized '' repository in 0.02 seconds
2010-03-29 11:45:59,228 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:59,229 Trac[api] INFO: Synchronized '' repository in 0.01 seconds
2010-03-29 11:45:59,265 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:59,266 Trac[api] INFO: Synchronized '' repository in 0.01 seconds
2010-03-29 11:45:59,277 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:59,279 Trac[api] INFO: Synchronized '' repository in 0.01 seconds
2010-03-29 11:45:59,329 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 11:45:59,330 Trac[api] INFO: Synchronized '' repository in 0.01 seconds
2010-03-29 11:45:59,358 Trac[cache] INFO: repos rev [9405] != cached rev [5153]

The above repeats until the manual fix, at which point:

2010-03-29 12:01:42,093 Trac[cache] INFO: repos rev [9405] != cached rev [5153]
2010-03-29 12:01:42,095 Trac[api] INFO: Synchronized '' repository in 0.01 seconds
2010-03-29 12:01:54,535 Trac[env] INFO: -------------------------------- environment startup [Trac 0.12dev-r9404] --------------------------------
2010-03-29 12:01:55,101 Trac[cache] INFO: repos rev [9405] != cached rev [5371]
2010-03-29 12:01:55,103 Trac[cache] INFO: Trying to sync revision [5372]
2010-03-29 12:01:55,156 Trac[cache] INFO: Trying to sync revision [5373]
2010-03-29 12:01:55,176 Trac[cache] INFO: Trying to sync revision [5374]
2010-03-29 12:01:55,202 Trac[cache] INFO: Trying to sync revision [5375]

That resync nearly completes:

2010-03-29 12:03:37,258 Trac[cache] INFO: Trying to sync revision [8159]
2010-03-29 12:03:52,664 Trac[cache] WARNING: Revision 8155 already cached: OperationalError('database is locked',)
2010-03-29 12:03:52,667 Trac[console] ERROR: Exception in trac-admin command:
Traceback (most recent call last):
  File "build/bdist.linux-x86_64/egg/trac/admin/console.py", line 107, in onecmd
    rv = cmd.Cmd.onecmd(self, line) or 0
  File "/usr/lib/python2.5/cmd.py", line 218, in onecmd
    return self.default(line)
  File "build/bdist.linux-x86_64/egg/trac/admin/console.py", line 257, in default
    return cmd_mgr.execute_command(*args)
  File "build/bdist.linux-x86_64/egg/trac/admin/api.py", line 118, in execute_command
    return f(*fargs)
  File "build/bdist.linux-x86_64/egg/trac/versioncontrol/admin.py", line 152, in _do_sync
    self._sync(reponame, rev, clean=False)
  File "build/bdist.linux-x86_64/egg/trac/versioncontrol/admin.py", line 138, in _sync
    (repos.id,))
  File "build/bdist.linux-x86_64/egg/trac/db/util.py", line 90, in execute
    return self.cursor.execute(sql_escape_percent(sql), args)
  File "build/bdist.linux-x86_64/egg/trac/db/sqlite_backend.py", line 77, in execute
    result = PyFormatCursor.execute(self, *args)
  File "build/bdist.linux-x86_64/egg/trac/db/sqlite_backend.py", line 56, in execute
    args or [])
  File "build/bdist.linux-x86_64/egg/trac/db/sqlite_backend.py", line 48, in _rollback_on_error
    return function(self, *args, **kwargs)
ProgrammingError: Cannot operate on a closed cursor.
2010-03-29 12:03:57,407 Trac[cache] INFO: Trying to sync revision [8160]

and then it completes to [9405].

Time to rethink my "bullet proof" resync algorithm :-(

comment:7 by Remy Blank, 13 years ago

Ah, so the "ProgrammingError: Cannot operate on a closed cursor" is a side-effect, and the actual error is "OperationalError: database is locked", which is interpreted as "revision already cached".

I'm puzzled about the other errors, probably due to concurrent sync requests. Especially by the fact that we haven't seen those errors before. AFAIR we haven't changed the sync algorithm (yet), except for the addition of the repos field.

in reply to:  7 comment:8 by Christian Boos, 13 years ago

Replying to rblank:

Ah, so the "ProgrammingError: Cannot operate on a closed cursor" is a side-effect, and the actual error is "OperationalError: database is locked", which is interpreted as "revision already cached".

Right, I believe the following change should fix this secondary issue:

  • trac/versioncontrol/admin.py

     
    129129            repositories = [repos]
    130130
    131131        db = self.env.get_db_cnx()
    132         cursor = db.cursor()
    133132        for repos in sorted(repositories, key=lambda r: r.reponame):
    134133            printout(_('Resyncing repository history for %(reponame)s... ',
    135134                       reponame=repos.reponame or _('(default)')))
    136135            repos.sync(self._sync_feedback, clean=clean)
     136            cursor = db.cursor()
    137137            cursor.execute("SELECT count(rev) FROM revision WHERE repos=%s",
    138138                           (repos.id,))
    139139            for cnt, in cursor:

(not tested yet)

I'm puzzled about the other errors, probably due to concurrent sync requests. Especially by the fact that we haven't seen those errors before.

Well, we have, it's #8067.

AFAIR we haven't changed the sync algorithm (yet), except for the addition of the repos field.

I don't think it's because of recent changes, the problem was always there.

comment:9 by Remy Blank, 13 years ago

Ok for #8067, but there we pointed to MySQL - MyISAM, which is clearly not the case here. The discussion there should be helpful in designing the sync-ng :-)

comment:10 by Christian Boos, 13 years ago

I was referring to the discussion in ticket:8067#comment:9 and ticket:8067#comment:10, and the reference to #4043 from there.

comment:11 by Christian Boos, 13 years ago

Milestone: 0.12next-major-0.1X

Worth a rewrite, but probably not for 0.12, neither for 0.12.x, realistically.

comment:12 by David Avsajanishvili <avsd05@…>, 13 years ago

I have other idea about source of this issue. In my case it happened when I have ADDED one file to fresh SVN, and then REMOVED it, so repository became empty. As a result, there was non-zero latest revision, but no files in it!

Here is my traceback:

Traceback (most recent call last):
  File "build/bdist.linux-i686/egg/trac/web/main.py", line 512, in _dispatch_request
    dispatcher.dispatch(req)
  File "build/bdist.linux-i686/egg/trac/web/main.py", line 255, in dispatch
    content_type)
  File "build/bdist.linux-i686/egg/trac/web/chrome.py", line 864, in render_template
    stream.render(method, doctype=doctype, out=buffer)
  File "build/bdist.linux-i686/egg/genshi/core.py", line 183, in render
    return encode(generator, method=method, encoding=encoding, out=out)
  File "build/bdist.linux-i686/egg/genshi/output.py", line 58, in encode
    for chunk in iterator:
  File "build/bdist.linux-i686/egg/genshi/output.py", line 339, in __call__
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/output.py", line 826, in __call__
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/output.py", line 670, in __call__
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/output.py", line 771, in __call__
    for kind, data, pos in chain(stream, [(None, None, None)]):
  File "build/bdist.linux-i686/egg/genshi/output.py", line 586, in __call__
    for ev in stream:
  File "build/bdist.linux-i686/egg/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "build/bdist.linux-i686/egg/trac/web/chrome.py", line 968, in _strip_accesskeys
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "build/bdist.linux-i686/egg/trac/web/chrome.py", line 957, in _generate
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 592, in _include
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/template/markup.py", line 381, in _match
    ctxt, start=idx + 1, **vars):
  File "build/bdist.linux-i686/egg/genshi/template/markup.py", line 381, in _match
    ctxt, start=idx + 1, **vars):
  File "build/bdist.linux-i686/egg/genshi/template/markup.py", line 330, in _match
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 532, in _flatten
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/path.py", line 588, in _generate
    subevent = next()
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 592, in _include
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/template/markup.py", line 319, in _strip
    event = next()
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 532, in _flatten
    for kind, data, pos in stream:
  File "build/bdist.linux-i686/egg/genshi/core.py", line 288, in _ensure
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/path.py", line 588, in _generate
    subevent = next()
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 592, in _include
    for event in stream:
  File "build/bdist.linux-i686/egg/genshi/template/markup.py", line 319, in _strip
    event = next()
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 552, in _flatten
    result = _eval_expr(data, ctxt, vars)
  File "build/bdist.linux-i686/egg/genshi/template/base.py", line 277, in _eval_expr
    retval = expr.evaluate(ctxt)
  File "build/bdist.linux-i686/egg/genshi/template/eval.py", line 178, in evaluate
    return eval(self.code, _globals, {'__data__': data})
  File "/home/oracle/.python-eggs/Trac-0.12dev_r9476-py2.6.egg-tmp/trac/versioncontrol/templates/revisionlog.html", line 151, in <Expression u'dateinfo(change.date)'>
    <td class="age" py:content="dateinfo(change.date)" />
  File "build/bdist.linux-i686/egg/trac/timeline/web_ui.py", line 258, in dateinfo
    pretty_timedelta(date),
  File "build/bdist.linux-i686/egg/trac/util/datefmt.py", line 93, in pretty_timedelta
    time1 = to_datetime(time1)
  File "build/bdist.linux-i686/egg/trac/util/datefmt.py", line 54, in to_datetime
    type(t))
TypeError: expecting datetime, int, long, float, or None; got <class 'genshi.template.eval.Undefined'>

comment:13 by Christian Boos, 10 years ago

Priority: highlow

Obviously low prio, as it hasn't seen any activity in two years.

Yet the problem seems to be real, so triaging as "known issue" that should be taken in consideration when (re)working on the versioncontrol cache sync code.

comment:14 by figaro, 7 years ago

Severity: criticalnormal

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The ticket will remain with no owner.
The ticket will be disowned.
as The resolution will be set. Next status will be 'closed'.
The owner will be changed from (none) to anonymous. Next status will be 'assigned'.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.