monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Monotone-devel] Re: Invariant failure


From: graydon hoare
Subject: [Monotone-devel] Re: Invariant failure
Date: Tue, 14 Sep 2004 10:35:31 -0400
User-agent: Opera M2/7.53 (Linux, build 737)

On Tue, 14 Sep 2004 13:54:09 +0200 (CEST), Richard Levitte - VMS Whacker 
<address@hidden> wrote:

In message <address@hidden> on 09 Sep 2004 23:16:16 +0200, Peter Simons 
<address@hidden> said:

simons>   monotone: fatal: std::logic_error: patch_set.cc:351:
simons>           invariant 'I(m_old.find(i->first) != m_old.end())'
simons>           violated
simons>
simons> Does anyone have advice on how to proceed?

I just hit the exact same problem (although with a different set of
files :-)), and I haven't seen a reply to this yet, so I'm asking the
same question.

sorry, slipped past. I meant to answer this:

the problem stems from your database having previously-composed rename
certs in it. for quite a while the logic for issuing rename certs after
merges was broken, so a lot of them got composed which are essentially
impossible to interpret correctly. they make no sense. so I was in a
sort of tight situation there: either I fire an invariant failure when
I detect the nonsense (shutting down the process) or I continue and
possibly make an incorrect decision about moving files around in your
manifest or working copy (potential data loss). I opted for the
former. it's an ugly situation though.

the only way to un-jam it is to remove the rename cert in question.
removal of rename certs is "mostly harmless", in that its worst
effect is to break the history chain of a particular file; future
merges may be a bit stickier if you move files around a lot, but
otherwise the file contents and manifest assignments are still there.

I'm sorry about that. I introduced the assertion in 0.14 when
correcting the rename cert logic, in response to a number of
testcases (ironically those which peter supplied; some thanks you
get eh?)

-graydon




reply via email to

[Prev in Thread] Current Thread [Next in Thread]