monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] how to recover damaged database?


From: Timothy Brownawell
Subject: Re: [Monotone-devel] how to recover damaged database?
Date: Sun, 07 May 2006 22:49:49 -0500

On Sun, 2006-05-07 at 17:11 -0500, Kelly F. Hickel wrote:
> While testing the import of our CVS repo, the machine was rebooted.
> After the reboot, when I tried to continue importing, I received the
> message below.  In this instance, I could just start over, but it
> raises the question of what would happen if we were using this for
> real? We’d have a daily backup of course, but if this turned out to be
> unrecoverable, that would be “bad” (I realize that I have no reason to
> believe it’s unrecoverable, just wondering)….

In general every developer will have a full copy of the repository,
up-to-date as of the last time they synced. So if any copy get an error
in it, you can just delete it and have everyone sync again. You can only
lose data this way if the database that goes bad is a developer's
database, and they've committed changes but not synced with anyone else
yet. If the server database goes bad, there won't be any data loss.

> Original message:
> 
> address@hidden mtn_repo]$ mtn --db=imported.mtn
> --branch=com.mqsoftware.qpasa cvs_import /usr/cvsroot/master/qa
> 
> mtn: branches | versions
> 
> mtn:       45 |    1,225 amqsput_coa/amqsput.c,v
> 
> mtn: branches | revisions | versions
> 
> mtn:       45 |        72 |    1,225
> 
> mtn: fatal: std::logic_error: revision.cc:50: invariant
> 'I(null_id(edge_old_revision(i)))' violated

That code is:

void revision_set::check_sane() const
{
  // null id in current manifest only permitted if previous
  // state was null and no changes
  if (null_id(new_manifest))
    {
      for (edge_map::const_iterator i = edges.begin();
           i != edges.end(); ++i)
        I(null_id(edge_old_revision(i)));
    }
  ...

The code says, "The manifest can only be null if all parent revisions
have a null id; ie, if this revision doesn't have any parents.". I don't
think this matches the comment?

Tim






reply via email to

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