[DGD]Problem with state-dump

balduin at uni-paderborn.de balduin at uni-paderborn.de
Tue May 4 12:46:58 CEST 1999


Hello !

After dworkins hint how to handle more than 64k objects with
dgd, i now decided to use dgd's state-dump for object 
persistency and use the database for indexing purposes only.

I currently have some problems with this:

- When I first did a dump_state() followed by a shutdown(),
  I noticed after restart, that the connection objects
  (cloned by connection() in e.g. the telnet port object to 
   represent the connection) (oops many "connection"s in this sentence)
  where still existent. I now close down all connections
  when preparing dump_state() to avoid dumping them. But this
  leaves me with the following error during shutdown()

  * sniplet from the logfile
  [
  shutting down ...
  -----------------------------------------------------------------------
  Tue May  4 12:14:06 1999, runtime error, ticks left: 3989945
  Bad argument 1 for kfun call_other
       103 receive_message    /kernel/net/user (#22)
       198 handle_command     /system/user (#15)
       150 command_loop       /system/user (#15)
        66 input_to           /kernel/lib/auto (/system/user#15)
  ]

  where this is the stuff in driver.c

  do_shutdown()
  {
      object *_u;
      int i,sz;
    
      send_message("cutting connections ...\n");
      _u = users();
    
      for (i=0,sz=sizeof(_u);i<sz;i++)
      {
	  send_message("removing "+object_name(_u[i]));
  	_u[i]->remove_object();
      }
      send_message("preparing dump ...\n");
      prepare_dump();
      send_message("dumping ...\n");
      dump_state();
      send_message("shutting down ...\n");
      shutdown();
  }

  Nevertheless the server is shutting down and the dump-file seems to
  be ok. But i'd like to have a clue what is happening.


- This leads to the next problem. I'd like to do a state-dump once in
  a while, just to reduce my risk in case of emergency. Lets say shortage
  of electricity. Or a server crash during development. Is there a way
  to do this without saving/loosing the connection objects to avoid the 
  object leak mentioned above ?

- And the last question concerning state-dump. I tested the performance
  of dump_state with 90000 (empty) objects. This is fast (about 9 seconds),
  but the time it takes seems to be independend from the number of objects
  touched since the last dump_state() or swapout(). Is there a way to do
  an incremental state-dump file ?

greetings
Ludger

p.s. Ah Kevin ... I didn't find a good solution for your problem yet,
     but I keep my eyes open.

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



More information about the DGD mailing list