Assertion failure in PyGIT.py
|Reported by:||Owned by:||Herbert Valerio Riedel|
Somewhere along the line, something happened in my git repository (I have no idea what -- maybe a post-commit-hook failure or something?) and I started getting an assertion failure anytime I try to load any Trac page. I tried using trac-admin resync to no avail, and I have no idea what to do next. Google has no instances of this particular assertion except in commit-diffs and the like, so it looks like no one else has this problem. I'm happy to grab more diagnostic information if someone can help me figure out what to look for.
I can unhook the repository entirely and still get to wiki pages, but (of course) not tickets, so my trac is nearly useless in its current state.
Here's what I see in the log:
2010-04-03 16:51:02,232 Trac[main] DEBUG: Dispatching <Request "GET u'/wiki'"> 2010-04-03 16:51:02,250 Trac[git_fs] INFO: detected GIT version 188.8.131.52 2010-04-03 16:51:02,284 Trac[svn_fs] DEBUG: Subversion bindings imported 2010-04-03 16:51:02,285 Trac[PyGIT] DEBUG: PyGIT.Storage instance 140026844498040 constructed 2010-04-03 16:51:02,285 Trac[PyGIT] DEBUG: requested PyGIT.Storage instance 140026844498040 for '/home/git/ifgs' 2010-04-03 16:51:02,286 Trac[git_fs] INFO: enabled CachedRepository for '/home/git/ifgs' 2010-04-03 16:51:02,296 Trac[PyGIT] DEBUG: triggered rebuild of commit tree db for 140026844498040 2010-04-03 16:51:02,319 Trac[main] ERROR: Internal Server Error: Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/trac/web/main.py", line 444, in _dispatch_request dispatcher.dispatch(req) File "/usr/lib/python2.6/dist-packages/trac/web/main.py", line 175, in dispatch chosen_handler) File "/usr/lib/python2.6/dist-packages/trac/web/main.py", line 295, in _pre_process_request chosen_handler = filter_.pre_process_request(req, chosen_handler) File "/usr/lib/python2.6/dist-packages/trac/versioncontrol/api.py", line 86, in pre_process_request self.get_repository(req.authname).sync() File "/usr/lib/python2.6/dist-packages/trac/versioncontrol/cache.py", line 119, in sync repos_youngest = self.repos.youngest_rev File "/usr/lib/python2.6/dist-packages/trac/versioncontrol/api.py", line 279, in <lambda> youngest_rev = property(lambda x: x.get_youngest_rev()) File "build/bdist.linux-x86_64/egg/tracext/git/git_fs.py", line 192, in get_youngest_rev return self.git.youngest_rev() File "build/bdist.linux-x86_64/egg/tracext/git/PyGIT.py", line 346, in youngest_rev return self.rev_cache File "build/bdist.linux-x86_64/egg/tracext/git/PyGIT.py", line 299, in get_rev_cache assert len(new_db) == ord_rev AssertionError:
I tried digging around in the code, but I don't really understand what this assertion is trying to say, so it's hard to know what other information would be useful in diagnosing it. Again, I'm happy to extract whatever information would be useful if I can get some help in figuring out what that would be. (I'd grab the failing ord_rev and len(new_db) if I had any clue how to do that -- is there a straightforward way to make trac use an exploded-out package for the plugin instead of a .egg file, so I can just tweak the code to debug-log those? I assume that'd be useful.) Thanks!