MOO-cows Mailing List Archive

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

Re: not loading forked tasks



Amy Bruckman writes:
> Loading the db gets an out of memory error when it's loading the forked and
> suspended tasks.  I heard a rumor there's a way to tell the server not to
> load tasks from a particular user id.  Is there?  How does it work?

There isn't any clean and simple way; when I've had to do it in the past, I
actually went in and rewrote part of the server code to ignore them.  Here's
one way to do it, by throwing away *all* forked tasks as they are being read
into the server:

In a *separate copy* of the server source code, find this line in tasks.c, in
the function read_task_queue():

	enqueue_ft(program, a, rt_env, MAIN_VECTOR, start_time, id);

Replace that line with these:

	free_rt_env(rt_env, program->num_var_names);
	free_program(program);

Recompile the server, boot with this odd server in emergency wizard mode.  When
that comes up, type `quit', which should immediately shutdown the server,
saving a new copy of the database.  That new copy should not contain any forked
tasks at all.  You can use this new database to reboot your normal server.  DO
NOT GET CONFUSED and continue to run the oddly-changed server!!!

> (Hand-replacing the forked task code with just "return;" and
> rebooting in emergency wiz mode didn't do the trick, FYI.  Still got
> a memory error while reading in forked tasks.)

Yup; it didn't have memory enough even to get them all loaded in, which it must
complete before it can run any of them.

	Pavel


References:

Home | Subject Index | Thread Index