[DGD]Persistence and Object Databases

Par Winzell zell at skotos.net
Mon Feb 26 02:09:46 CET 2001


 > Running a persistent/continuous mud makes issues that were once
 > important incredibly vital.  One such issue is object leakage.  By
 > that I mean objects that are out there floating around -- the kind
 > of objects that would be clean_up()'d as it were under MudOS.  In a
 > persistent mud, one can imagine all sorts of causes for this.

Indeed.

 > Now a well written object daemon will keep track of all objects and
 > their various relationships (inherited by, inheriting, clone of,
 > etc.).  At least in theory.  But the object register daemon,
 > partly, duplicates information already contained in the dump and
 > swap files.  That is to say the dump and swap files are the
 > ultimate authority on what objects exist and their relationships to
 > each other.

Yep.

 > Now given the critical nature of this information--what objects
 > exist, at least--it might be nice to have some redundancy.  Is
 > there any way to get information directly from the ultimate
 > authority (the dump and swap files) such that any discrepencies
 > that might crop up between it and the lib side object register can
 > be resolved from inside the lib?

Yes. Download the DGD source, examine the state dump building code,
and write a program that rips it apart and analyzes it. Or, perhaps,
attempt to graft the relevant dump-reading parts of DGD onto control
code of your own making (probably difficult).

Richard Braakman wrote such a dumpfile analyser (in LPC!) which would
probably make a good start for such a project. I believe it's a bit
dated now -- I don't think it supports compressed strings, and it may
be the format has changed since -- but it's definitely doable.

 > Something like a kfun that returned a list of all existing objects?  Is 
 > there a way to use status() to do this? (I don't see it offhand).  I 
 > considered cycling through all existing files, but one can also envision 
 > discrepencies arising between the dump/swap files and the mudlib source 
 > code. (Someone moves/deletes a file shell side.)

I do personally think it would be nice for some very low-level kfun to
return such information, but I'm not sure Dworkin has any interest in
such a solution. If one of Skotos' games ever need this kind of hands-
on healing, what I will probably do is write a dump-file shredder and
some LPC code that outputs the kernel library's and the mudlib's idea
of what objects exist where; both pieces of code will output on exactly
the same format, and a diff -c between the two will tell you what's
wrong.


 > How have other people addressed this issue?  Perhaps it's a non-issue?

I think it's a very interesting issue!

Zell

List config page:  http://list.imaginary.com/mailman/listinfo/dgd



More information about the DGD mailing list