Re: [Monotone-devel] Break after kill_rev_locally

2007-10-09 Thread Thomas Keller
Ludovic Brenta schrieb:
 Ralf S. Engelschall [EMAIL PROTECTED] writes:
 For me this looks like mtn db kill_rev_locally rev does not remove
 _all_ related information of rev and that some remaining/dangling
 information causes the subsequent commit to break. Hmm...

 Unfortunately, I was not able to repeat this with a simple test where I
 created a fresh database, performed three commits and killed the third
 commit :-(
 
 I had the same, or a very similar symptom after killing the head of a
 branch that happened to be a propagate (A to B) node.  I then did mtn
 propagate B A (which was what I really intended) and got an
 exception.  The killed revision and the new revision had the same
 revision ID.
 
 To correct the problem, I synced the offending database into a fresh
 one and could then proceed with the propagate and commit.

The problem is already fixed on mainline and goes into 0.37. The
roster which is attached to each revision is not removed, thus if you
try to commit the same revision again it cannot store the roster (which
has then the same revid) again. The fix now just checks if the roster
exists before a revision is committed, and if it exists, skips this step.

There have been long discussions and explanations why we do not remove
the roster on kill_rev_locally, please search the mail archive if
interested in the conclusions.


Thomas.

-- 
only dead fish swim with the stream: http://thomaskeller.biz/blog
Am Anfang war das Wort: http://www.schäuble-muss-weg.de



signature.asc
Description: OpenPGP digital signature
___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Break after kill_rev_locally

2007-10-09 Thread Ludovic Brenta
Thomas Keller [EMAIL PROTECTED] writes:
 The problem is already fixed on mainline and goes into 0.37. The
 roster which is attached to each revision is not removed, thus if you
 try to commit the same revision again it cannot store the roster (which
 has then the same revid) again. The fix now just checks if the roster
 exists before a revision is committed, and if it exists, skips this step.

 There have been long discussions and explanations why we do not remove
 the roster on kill_rev_locally, please search the mail archive if
 interested in the conclusions.

Thanks.  I approve of not removing the roster and the fix is just fine.

BTW, I was not really complaining as the workaround I described
(syncing into a fresh database) was rather straightforward.

-- 
Ludovic Brenta.



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


[Monotone-devel] Break after kill_rev_locally

2007-10-08 Thread Ralf S. Engelschall
I today had to use mtn db kill_rev_locally rev where rev was the
head of a branch. First, everything looked just fine. I freshly checked
out a new workspace (now based on the previous revision on the branch
which is now the new head), performed a mtn log to be sure that just
the previous head revision got dropped, etc. Then I edited the sources
and tried to commit the changes: Bang!

| $ mtn ci -m adjust key modify commands
| mtn: beginning commit on branch 'OSSP.ase.src.TMP.keys'
| terminate called after throwing an instance of 'std::logic_error'
| what():  lru_writeback_cache.hh:99: invariant 'I(_dirty.empty())' violated
| mtn: fatal signal: Abort trap: 6
| this is almost certainly a bug in monotone.
| please send this error message, the output of 'mtn --full-version',
| and a description of what you were doing to monotone-devel@nongnu.org
| do not send a core dump, but if you have one,
| please preserve it in case we ask you for information from it.

The only way to rescue the situation was to restore the database from
the last UFS snapshot (luckily no other changes happended in the
meantime) in order to be able to proceed again.

For me this looks like mtn db kill_rev_locally rev does not remove
_all_ related information of rev and that some remaining/dangling
information causes the subsequent commit to break. Hmm...

Unfortunately, I was not able to repeat this with a simple test where I
created a fresh database, performed three commits and killed the third
commit :-(
   Ralf S. Engelschall
   [EMAIL PROTECTED]
   www.engelschall.com



___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel


Re: [Monotone-devel] Break after kill_rev_locally

2007-10-08 Thread Ludovic Brenta
Ralf S. Engelschall [EMAIL PROTECTED] writes:

 I today had to use mtn db kill_rev_locally rev where rev was the
 head of a branch. First, everything looked just fine. I freshly checked
 out a new workspace (now based on the previous revision on the branch
 which is now the new head), performed a mtn log to be sure that just
 the previous head revision got dropped, etc. Then I edited the sources
 and tried to commit the changes: Bang!

 | $ mtn ci -m adjust key modify commands
 | mtn: beginning commit on branch 'OSSP.ase.src.TMP.keys'
 | terminate called after throwing an instance of 'std::logic_error'
 | what():  lru_writeback_cache.hh:99: invariant 'I(_dirty.empty())' violated
 | mtn: fatal signal: Abort trap: 6
 | this is almost certainly a bug in monotone.
 | please send this error message, the output of 'mtn --full-version',
 | and a description of what you were doing to monotone-devel@nongnu.org
 | do not send a core dump, but if you have one,
 | please preserve it in case we ask you for information from it.

 The only way to rescue the situation was to restore the database from
 the last UFS snapshot (luckily no other changes happended in the
 meantime) in order to be able to proceed again.

 For me this looks like mtn db kill_rev_locally rev does not remove
 _all_ related information of rev and that some remaining/dangling
 information causes the subsequent commit to break. Hmm...

 Unfortunately, I was not able to repeat this with a simple test where I
 created a fresh database, performed three commits and killed the third
 commit :-(

I had the same, or a very similar symptom after killing the head of a
branch that happened to be a propagate (A to B) node.  I then did mtn
propagate B A (which was what I really intended) and got an
exception.  The killed revision and the new revision had the same
revision ID.

To correct the problem, I synced the offending database into a fresh
one and could then proceed with the propagate and commit.

-- 
Ludovic Brenta.




___
Monotone-devel mailing list
Monotone-devel@nongnu.org
http://lists.nongnu.org/mailman/listinfo/monotone-devel