Mercurial repositories: hg verify warnings/integrity errors

Thomas De Schampheleire patrickdepinguin at gmail.com
Tue Jan 30 11:12:47 UTC 2018


Hello,

When I run 'hg verify' in several of our Mercurial repositories
managed by Kallithea, I see on many repositories the following type of
warnings popping up for several files:

 warning: revlog 'data/tools/fit_common.h.i' not in fncache!

For all practical purposes these repositories seem to behave fine.
Is it possible that this message is triggered by the way Kallithea is
handling the Mercurial repositories, possible not updating the fncache
or something?



On one repository, we had an actual corruption. Cloning the repository
failed with: (server-side messages)
"Abort: empty or missing revlog for XXXXXXXXXXXXXX"

Pushing into it gave message:
"LookupError: YYYYYYYYYYYYYYY: unknown parent"

When I ran 'hg verify' on this repo I also got several fncache issues,
but additionally this type of problems:

 136: empty or missing tools/fit_common.h
 tools/fit_common.h at 136: manifest refers to unknown revision baafd7c2c29b

Now, I also see this type of messages on some repos that otherwise
seem to work fine. Nevertheless, they seem to be more serious and seen
as 'integrity errors' by hg verify, rather than just 'warnings'.

I restored the corrupt repository from a backup, but would like to
understand what went wrong in the corrupt one.



This problem first popped up after our Kallithea
reinstallation/upgrade on another server. What I did for the repos was
a full rsync, followed by an upgrade to the generaldelta storage
format, using command:

hg --config format.usegeneraldelta=true debugupgraderepo --optimize
redeltamultibase --optimize redeltaall --run

Later, during the maintenance window, I did final pulls from the old server.

On the old server, the fncache issues also popped up, but not the new
ones ('manifest refers to unknown revision'.


Another point: for each logical repository, we have two copies. A
pristine 'baseline' one mirrored from our real mercurial-server
repository host which Kallithea only really reads from, and a 'review'
one in which users can force push their changes-for-review, and create
PRs from.
This review repo has many heads, they are never actually merged.

On the baseline repositories, 'hg verify' runs without any warning or
inconsistency. The mentioned issues only seem to appear on the review
repositories, in which Kallithea actually makes modifications.


Old server:
- kallithea based on default, commit 0c58b6dc5512
- mercurial 3.3.3

New server:
- kallithea based on default, commit 04a41e0361d6
- mercurial 4.4.2

Any input welcome,

Thomas


More information about the kallithea-general mailing list