[Seaside] Seaside Internals

Avi Bryant avi at beta4.com
Sat Sep 6 12:12:22 CEST 2003


On Sat, 6 Sep 2003, Lukas Renggli wrote:

> Avi,
>
> all the requests of a session are handled in the same process, right?
> Therefore if a new request is coming in while an old one is still being
> processed, either the new one has to be put into a queue or the old one
> has to be stopped.

Correct.  In fact what happens is the new one is put in a queue for 5
seconds, after which time the old one is terminated.

> As far as I understand you are terminating the old request in
> Continuation>>value: v. Having a look at the implementation of
> Continuation>>terminate: aContext raises a questions: Do you unwind the
> stack (e.g. evaluate the ensure-blocks) when terminating the evaluation
> of a continuation? It doesn't seem so (why not?), but I might have
> misunderstood.

No, what you're looking for is WAProcessMonitor>>critical:.
Continuation>>terminate: is in fact what unwinds the stack, although it
doesn't evaluate ensure blocks as it goes.  Whether or not it *should* is
an open question, and the source of some controversy in the Scheme world -
see, for example,
http://www.nhplace.com/kent/PFAQ/unwind-protect-vs-continuations.html or
http://www.ccs.neu.edu/home/dorai/uwcallcc/uwcallcc.html .

Can you give an example of some Seaside code with an #ensure: , and when
you think the #ensure: ought to be evaliated?



More information about the Seaside mailing list