MOO-cows Mailing List Archive


Re: BETA-TEST release of LambdaMOO version 1.8.0beta1

Gustavo Glusman writes:
> >-- Added support for in-DB handling of all tracebacks, of which there are 
> >   two kinds: unhandled errors and tasks that have timed out.
> ...
> >      In both situations, the indicated verb call is made with the same
> >   task_id() as the task that caused the traceback.
> Is the special verb call done immediately, or is it added to somebody's
> task queue? In other words, is there guarantee that nothing else will
> happen in between?

Yes; it happens entirely within the virtual machine, before returning to the
task manager.

> >If the handler verb call
> >   either suspends or returns a true value, then that code is considered to
> >   have handled the traceback and no further processing will be done by the
> >   server.
> It would be quite useful if the actual value returned were used by the
> server to consider what to do next with the failing task, other than
> letting it die.
> For example, if $handle_task_timeout returned -
>    {seconds-to-suspend, new-tick-count, new-second-count}
> ...and both counts were positive, the original task that ran out of
> resources might be allowed to resume as if nothing happened, with the new
> tick/second counts as specified, after suspending for the specified number
> of seconds.

This would be non-trivial to add; right now, the task has already been blown
away by the time your handler runs.

> As you can see, I haven't really thought this out fully, but one of the
> things that always bothered me in MOO programming is that all the tasks
> have to keep wasting time suspending-if-needed, and there is no method for
> providing a safety net for important tasks. The new functionality is a big
> step in this direction (i.e. not just a dumb traceback), but the task dies
> anyway, no matter what you do...

I agree that this is a major failing of MOO, but no solution made it to the
fully-designed stage before beta.  Now, it's too late (for me, anyway).



Home | Subject Index | Thread Index