[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