MOO-cows Mailing List Archive


Re: BETA-TEST release of LambdaMOO version 1.8.0beta1

>-- 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.

I asked this without looking at the code first, sorry:
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?

>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. (If this 'seconds-to-suspend' were -say- -1, the task might be
allowed to continue immediately, which might be needed for tasks that
assume they're atomic.)

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...

Gustavo Glusman               Founder/administrator of BioMOO
-- BioMOO: telnet 8888


Home | Subject Index | Thread Index