monotone-devel
[Top][All Lists]
Advanced

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

[Monotone-devel] cvssync freeze


From: William Uther
Subject: [Monotone-devel] cvssync freeze
Date: Thu, 15 Mar 2007 00:09:53 +1100

Hi all,

Again, this is probably most relevant to Christof Petig... I've just committed a test to the n.v.m.cvssync.refactor branch that causes a freeze in mtn_cvs pull. The test is skipped just before the line that freezes.

I've traced the problem back to mtn_automate::get_sync_info(). I generate a revision in mtn that has cvs: attributes, as well as a cert with sync info. The cert appears to only contain cvs revision info for some of the files. This manifests itself in cvs_repository::update() during a pull because the 'last' variable, that should contain the last cvs revision we synced with, is empty. That then causes the "Inconsistency" on line 450 to show up. That in turn fails an invariant which when thrown doesn't close all the various pipes correctly and leads to the freeze.

  So there are at least two problems here:

i) Either mtn_automate::get_sync_info() should be falling back to file attributes when the cert doesn't contain the info it needs, or Whatever writes the sync info into the cert needs to add sync info for all files in the revision. (I suspect the first option here is better - it is backwards compatible with people who have already hit this problem, and it is more space efficient.)

and,

ii) Failing an invariant should cause a clean windup, not a freeze where the child and parent process are each waiting on the other.

  Which of the solutions to i) do you think is better?

Cheers,

Will           :-}





reply via email to

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