monotone-devel
[Top][All Lists]
Advanced

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

[Monotone-devel] cvssync invariant failure


From: William Uther
Subject: [Monotone-devel] cvssync invariant failure
Date: Mon, 12 Mar 2007 10:59:56 +1100

Hi,

I'm not sure if this is interesting to everyone. It's mostly for Christof Petig I expect. BTW - there is no rush on this any more. Everyone has moved back to CVS for the moment until I get cvs-sync running stably for a while. So far my record between glitches is 2 whole days :).

I'm using the cvssync.refactor branch to sync to a medium sized CVS repository. Saturday morning was the latest hiccup. One of the cvs users committed a file and then committed it again saying something about kde locks. CVS itself has no problems checking out or updating. But, when I try cvs pull with mtn_cvs, I get the "Inconsistency" message on line 450 of mtn_cvs/cvs_sync.cc and the invariant on the next line fails. I'm trying to fix things, am a little out of my depth, and was wondering if anyone has any ideas...

Interestingly, I can pull a fresh mtn repository from cvs repository. It is only when I try to update my older mtn repository that I get the problem. I tried various hacks like pulling a new repos and then syncing that with the old one to try to preserve history. I didn't think it would work well, and it didn't. There is something in the old repos that when synced with the freshly-pulled repository causes it to stop updating with the same problem.

So I've been debugging the underlying problem, but I don't really understand this yet. I feel like a medieval doctor applying leeches.

The s->cvs_version string on line 450 of mtn_cvs/cvs_sync.cc is empty, which is weird. That function is called from cvs_sync.cc: 1523, and that function has a "#warning FIXME: changed files" at the top. Is this going to be related?

If I add a check, if (s->cvs_version.empty()) W(F("s- >cvs_version.empty()")); at line 1506 then it fires a while before the "Inconsistency". I don't yet understand why that version is empty, and chasing that back for a while didn't seem to lead me anywhere.

I then tried simply removing the invariant that was failing (drains a little more blood from the patient). This continued and completed, but at the end dumped out this:

mtn_cvs: warning: blocking attempt to certify an empty CVS revision of 'CMakeLists.txt' mtn_cvs: warning: (this is normal for a cvs_takeover of a locally modified tree) mtn_cvs: warning: CMakeLists.txt f47402df16421a331af4c7f5535a175f4b200ef5 mtn_cvs: warning: DartConfig.cmake 5ba1b26cc16d6042ddfd5e8e9ee53ede532ca687
mtn_cvs: warning: README  bef4771f00b278b8a5fb5a0c3ce4140fea21890c
[snip ~10 more lines of stuff]

This doesn't fill me with joy. If I update again then I get the "s- >cvs_version.empty()" warning, but not the "Inconsistency" message. I also then get "Modules do not match: 'dgc-orca' != ''" which I didn't get before.

I have copies of the CVS repos, the mtn database that cannot up without breaking (I have it before the update, so I can re-run the update easily and reproduce the problem). I'm not sure about the license on all the files in the repo - so it would be best if I don't send it to anyone right now, but I can chase that down if people really want to try.

Be well,

Will          :-}






reply via email to

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