monotone-devel
[Top][All Lists]
Advanced

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

[Monotone-devel] I fooled the cycle detection code :-(


From: Christof Petig
Subject: [Monotone-devel] I fooled the cycle detection code :-(
Date: Fri, 25 Nov 2005 13:29:04 +0100
User-agent: Mozilla Thunderbird 1.0.7 (X11/20051013)

After some strange but legal criss cross merging yesterday, monotone
refused its work with the following error:

monotone: fatal: std::runtime_error: cycle in table 'manifest_deltas',
at node b4c5672e5c1a1749b6cf4eb78165e18e6480ff67 <-
2a6e1fb46bd1c2f3a197ba0c3a9a3a76428af358  **)

Look at the attached diagramm:
I merged a no longer needed branch and replaced some files with their
pre merge contents. By chance the manifest was identical to that of the
grandfather. This created an interesting difference in the graph layout
of revisions and manifests (time goes forward and backward if you cross
the manifest graph in one direction G-D-C-B-A).

Further investigation *) showed that the manifest graph was perfectly
well but the algorithm mistook it as a loop.

I solved the problem by
 delete from manifest_deltas where id like '2a6e1%' and base like 'de750%';
and
 delete from manifest_deltas where id like 'de5ff%' and base like 'ea7c2%';
for now (this breaks the rings) but I still think that the problem
should get fixed. Probably that can wait till after roaster merge.

I will try to create a testcase (A has 2 nodes on the left branch and 1
node on the right branch to a common ancestor, I don't know if this
makes any difference, apart from that the graph is perfectly linear)

   Christof

**) b4c5 is the left ancestor of A, 2a6e is A
*)
echo 'digraph G {' >/tmp/x.dot
sqlite3 berlios.db "select
'\"'||substr(id,0,5)||'\"->\"'||substr(base,0,5)||'\";' from
manifest_deltas;" >>/tmp/x.dot
echo '}' >>/tmp/x.dot

dot /tmp/x.dot -Tps >/tmp/x.ps

PS: I still have the 'corrupt' database around.

PNG image

Attachment: signature.asc
Description: OpenPGP digital signature


reply via email to

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