Re: Crash Recovery Techniques

From: Daniel A. Koepke (dkoepke@california.com)
Date: 03/04/00


On Thu, 2 Mar 2000, StormeRider wrote:

> Ultimately speaking, you're right. However, the level of work involved
> in separating the networking code ang going to a system like LP uses
> with a mudlib and a driver compared to simply using a fork to exec and
> then core dumping in the old process are vastly different.

That isn't what I suggested -- LP implements a driver, which is little
more than a VM for the LPC language.  I simply suggested moving the
networking code into a separate process; note that this has *nothing* in
common with the driver/mudlib model (where the networking code is indeed
incorporated as part of the driver), nor does the idea of using MySQL or a
similar database, since LPMUD's use LPC code for such things.

Also, please note that the original message was concerning more than just
doing a stupid copyover on crash, which is probably more or less fail
proof (although I still don't think it's a very good idea).  Instead it
concerned restoration of world state to make crashes almost or completely
transparent to the end user.  To condense my reply: It is a VERY BAD idea
to implement any sort of persistent data model where the data which is to
persist is stored by a process whose state is not clearly defined and
cannot be trusted, i.e., one which has caused a segmentation fault.  The
best way, meaning quickest and least painful, is to use an existing
database system, such as MySQL, to implement partial or complete world
state persistence.

There are MANY, MANY, MANY things which one has to consider when moving
into persistent data, especially after data corruption (as would be the
case with a segmentation fault).  You could write the code and spend the
time to account for all of these things by yourself, but it would
DEFINITELY take longer than 30 minutes.  Indeed, it would be a project
worthy of a couple of months.  There's just that much to it to do it
"right."  Alternatively, you can use an existing database, such as MySQL,
which offers implicit persistence of data and many other features to
reduce the number of things which you have to account for.

-dak


     +------------------------------------------------------------+
     | Ensure that you have read the CircleMUD Mailing List FAQ:  |
     |  http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html  |
     +------------------------------------------------------------+



This archive was generated by hypermail 2b30 : 04/10/01 PDT