RevlogError - index data corrupted when pushing new files via https

Adrian Buehlmann adrian at cadifra.com
Sun Jan 30 16:55:21 CST 2011


On 2011-01-30 23:40, Richard Mason wrote:
> On Mon, Jan 31, 2011 at 3:41 AM, Adrian Buehlmann <adrian at cadifra.com
> <mailto:adrian at cadifra.com>> wrote:
> 
>     On 2011-01-30 16:48, Greg Ward wrote:
>     > On Thu, Jan 27, 2011 at 10:03 AM, Richard Mason
>     <richard at rikware.com <mailto:richard at rikware.com>> wrote:
>     >> I'm trying to update a Windows http mercurial server to 1.7.3 to
>     support
>     >> dotencode repositories but have run into a problem I can't find
>     mentioned
>     >> anywhere.
>     > [...]
>     >>   File "C:\Python27\lib\site-packages\mercurial\localrepo.py",
>     line 1769, in addchangegroup
>     >>     fl = self.file(f)
>     >>   File "C:\Python27\lib\site-packages\mercurial\localrepo.py",
>     line 555, in file
>     >>     return filelog.filelog(self.sopener, f)
>     >>   File "C:\Python27\lib\site-packages\mercurial\filelog.py", line
>     24, in __init__
>     >>     "/".join(("data", path + ".i")))
>     >>   File "C:\Python27\lib\site-packages\mercurial\revlog.py", line
>     273, in __init__
>     >>     raise RevlogError(_("index %s is corrupted") % (self.indexfile))
>     >> RevlogError: index data/Test.txt.i is corrupted
>     >
>     > That's funny.  There should be no uppercase filenames in
>     > .hg/store/data; that file should be _test.txt.i.
> 
>     That's not correct, Greg. The filename revlog.py is seeing is the
>     unencoded filename. If it has a problem with a file, it will throw back
>     the unencoded filename.
> 
>     I hacked the contents of the real file .hg/store/data/_test.txt.i inside
>     a testrepo and got:
> 
>      $ hg --traceback up
>      Traceback (most recent call last):
>        File "mercurial\dispatch.pyo", line 58, in _runcatch
>        File "mercurial\dispatch.pyo", line 590, in _dispatch
>        File "mercurial\dispatch.pyo", line 401, in runcommand
>        File "mercurial\dispatch.pyo", line 641, in _runcommand
>        File "mercurial\dispatch.pyo", line 595, in checkargs
>        File "mercurial\dispatch.pyo", line 588, in <lambda>
>        File "mercurial\util.pyo", line 426, in check
>        File "mercurial\extensions.pyo", line 130, in wrap
>        File "mercurial\util.pyo", line 426, in check
>        File "hgext\mq.pyo", line 3029, in mqcommand
>        File "mercurial\util.pyo", line 426, in check
>        File "mercurial\commands.pyo", line 3887, in update
>        File "mercurial\hg.pyo", line 381, in update
>        File "mercurial\merge.pyo", line 537, in update
>        File "mercurial\merge.pyo", line 341, in applyupdates
>        File "mercurial\context.pyo", line 349, in data
>        File "mercurial\util.pyo", line 169, in __get__
>        File "mercurial\context.pyo", line 249, in _filelog
>        File "mercurial\localrepo.pyo", line 555, in file
>        File "mercurial\filelog.pyo", line 24, in __init__
>        File "mercurial\revlog.pyo", line 273, in __init__
>      RevlogError: index data/Test.txt.i is corrupted
>      abort: index data/Test.txt.i is corrupted!
> 
>     The filename encoding is done by the store opener, which is a layer
>     below revlog.py.
> 
>     > Is there really a
>     > file called .hg/store/data/Test.txt.i (uppercase T) in either the
>     > source or destination repo?
> 
>     No, there wouldn't be, even if Richard had no problem. That's an
>     artificial internal name. There is not such path in the filesystem. At
>     least not for a repo using a recent enough repo format (e.g. fncache,
>     dotencode).
> 
>     > Other relevant questions just to rule out other possible problems:
>     >   * any virus scanner on the target machine?  if so, is it disabled
>     > for the target .hg directory?
>     >   * is it a local filesystem?
>     >   * what filesystem?
>     >   * what version of Windows?
> 
>     Extensions used might be interesting too.
> 
> 
> Hi,
> 
> Thanks for the help. re: the questions:
> * Running Microsoft Security Essentials - I'll try disabling it when I
> next get a chance to test

Microsoft Security Essentials shouldn't be that much of a problem, and
it will get even better with Mercurial 1.8 for this kind of AV-scanners.

BTW, I'd recommend to wait for 1.7.4 for doing the next tests. 1.7.4 is
due on Tuesday.

> * It's a local filesystem running NTFS. It is on a RAID 5 array using a
> controller on the mobo
> * Windows 7 x64 Ultimate
> * Not knowingly running any extensions
> 
> And as Adrian indicated - the file doesn't actually exist in .hg/store/data/
> 
> Richard


More information about the Mercurial mailing list