Bug 3693 - Convert fails due to integrity error
Summary: Convert fails due to integrity error
Status: RESOLVED FIXED
Alias: None
Product: Mercurial
Classification: Unclassified
Component: convert (show other bugs)
Version: earlier
Hardware: PC Windows
: urgent bug
Assignee: Bugzilla
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2012-11-06 16:06 UTC by Christoph
Modified: 2017-11-01 18:05 UTC (History)
5 users (show)

See Also:
Python Version: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Christoph 2012-11-06 16:06 UTC
I'm trying to convert my repository @ http://bitbucket.org/SallyCMS/trunk with the following filemap:

  include sally/core

I'm using the following command line:

$ hg convert --filemap=map.txt trunk trunk-core --traceback --debug -v

and get the following error every time on the same commit:


[.....]
converting: 1880/3767 revisions (49.91%)
1885 Added tag v0.3.11 for changeset 948c0cefbf90
source: 6b4824ee5dee1260bf4b6b9332b3c25f9f8dda1a
converting: 1881/3767 revisions (49.93%)
1884 Merge
source: 251054337a25bc4695902f058ad6825c40af4b40
converting: 1882/3767 revisions (49.96%)
1883 Merge
source: d8c231898a5dfcbb0e41131e30677c1f3e1d0888
converting: 1883/3767 revisions (49.99%)
config/sallyStatic.yml
getting files: config/sallyStatic.yml 1/1 (100.00%)
filtering out empty revision
repository tip rolled back to revision 53 (undo commit)
1882 cleaned up some stylings and html (mostly on content page) and started to implement content actions
source: 20e9642c41e77cb0982b6ccd03004e0b6edaaaa0
converting: 1884/3767 revisions (50.01%)
lib/sly/Service/Article.php
getting files: lib/sly/Service/Article.php 1/1 (100.00%)
transaction abort!
rollback completed
run hg sink post-conversion action
run hg source post-conversion action
Traceback (most recent call last):
  File "mercurial\dispatch.pyo", line 88, in _runcatch
  File "mercurial\dispatch.pyo", line 740, in _dispatch
  File "mercurial\dispatch.pyo", line 514, in runcommand
  File "mercurial\dispatch.pyo", line 830, in _runcommand
  File "mercurial\dispatch.pyo", line 801, in checkargs
  File "mercurial\dispatch.pyo", line 737, in <lambda>
  File "mercurial\util.pyo", line 471, in check
  File "hgext\convert\__init__.pyo", line 271, in convert
  File "hgext\convert\convcmd.pyo", line 469, in convert
  File "hgext\convert\convcmd.pyo", line 385, in convert
  File "hgext\convert\convcmd.pyo", line 353, in copy
  File "hgext\convert\hg.pyo", line 171, in putcommit
  File "mercurial\localrepo.pyo", line 1450, in commitctx
  File "mercurial\changelog.pyo", line 254, in add
  File "mercurial\revlog.pyo", line 976, in addrevision
  File "mercurial\revlog.pyo", line 1075, in _addrevision
  File "mercurial\revlog.pyo", line 1041, in builddelta
  File "mercurial\revlog.pyo", line 906, in revision
  File "mercurial\revlog.pyo", line 915, in _checkhash
RevlogError: integrity check failed on 00changelog.i:54
abort: integrity check failed on 00changelog.i:54!


It works perfectly when using "sally/backend" or "sally/frontend", but there seems to be some evil commit that's blocking the core to be extracted. When using no filemap at all, converting works.

There is nothing fancy about my setup. Microsoft's MES is my anti-virus software, but is set to ignore everything on that partition. My Windows is x64, I'm using the hg 2.3.2 that's bundled with TortoiseHg.

Let me know if you need more details.
Comment 1 kiilerix 2012-11-06 16:13 UTC
Probably a duplicate of bug 3334.

Also reported in http://selenic.com/pipermail/mercurial/2012-January/041617.html
Comment 2 Bryan O'Sullivan 2012-11-06 16:57 UTC
Worked in 2.0, failed in 2.1.
Comment 3 Bryan O'Sullivan 2012-11-06 17:07 UTC
Oops, I meant that 2.1 is good, 2.2 and above are bad.

Bisected down to this commit:

changeset:   16116:ce0ad184f489
branch:      stable
user:        Idan Kamara <idankk86@gmail.com>
date:        Thu Feb 16 01:21:34 2012 +0200
summary:     localrepo: clear _filecache on rollback (issue3261)
Comment 4 Matt Mackall 2012-11-06 17:18 UTC
Fixing priority to match keyword. The priority of functional regressions is always 'urgent'.

Mads apparently means bug 3335 (new numbering), which bisects it to:

http://selenic.com/repo/hg/rev/d3ac759a6d66

That appeared in 2.0-rc, so Bryan's narrowing to 2.0::2.1 suggests this bug is different.
Comment 5 Bryan O'Sullivan 2012-11-06 19:31 UTC
(In reply to comment #4)

I corrected my mistake in comment #3 - this regressed in ce0ad184f489, just before 2.1.1 was released.
Comment 6 Idan Kamara 2012-11-07 07:22 UTC
convert + filecache seems to really not get along, different issues come up every now and then.

Perhaps we're better off disabling the filecache mechanism specifically for convert.
Comment 7 HG Bot 2013-01-17 12:30 UTC
Fixed by http://selenic.com/repo/hg/rev/3e4a944c0d04
Idan Kamara <idankk86@gmail.com>
destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743)

We need to make sure that if X is in the filecache then it's also in the
filecache owner's __dict__, otherwise it will go out of sync:

repo.X                  # first access to X, records stat info in
                        # filecache and updates __dict__
repo._filecache.clear() # removes X from _filecache but it's still in __dict__
repo.invalidate()       # iterates over _filecache and removes entries
                        # from __dict__, but X isn't in _filecache, so
                        # it's kept in __dict__
repo.X                  # X is fetched from __dict__, bypassing the filecache

(please test the fix)