[racket] server never time out is not good, timeout manager takes down the server after timing out, JS automatically refreshes template pages doesn't work neither-- which way to go?

From: jenny sun (jenny.sun.jenny.sun at gmail.com)
Date: Mon Sep 10 19:08:39 EDT 2012

On Mon, Sep 10, 2012 at 8:17 PM, Jay McCarthy <jay.mccarthy at gmail.com>wrote:

> I'm not sure what error you're referring to in the second case,


The error as posted on
http://stackoverflow.com/questions/12343071/how-to-make-the-time-out-of-one-connection-of-the-server-while-not-affecting-fol/12355117#12355117
..


> unless
> you mean that the timeout is shorter than the expected availability of
> job A's results, in which case you should expect it to be an error,
> because you went over the time limit.
>
No. the exception appeared not because that the time to generate A's result
is longer than the timeout limit, it seems that the manager has timed out
the whole server that following requests would fail because of the
exception throwed.



>
> If you used the LRU manager and then combined that with an
> auto-updating Javascript refresh, then the browser would continually
> give the continuation "life points" and it would never be reclaimed
> until it stopped being refreshed and you faced memory pressure.
>
> Thanks for pointing out the LRU manager..do you mean I changed the timeout
manager to LRU manger in the servlet?
But even if I use the LRU manger, can the @syntax in the template page get
their values and have the new page generated, when JS refreshes the
result.html by using windows.location = "result.html" ( and the page that I
want to refresh, e.g. result.html, it uses racket template to dynamically
generate html page)


> If you can't rely on Javascript, you could have the server run another
> thread that continually called continuation-lookup on your LRU manager
> to give it life points directly.
>

the continuation-lookup will return a continuation back if all the ids
match on the LRU manger, (which can be pulled out from the servlet I
imagined?). but what do you mean by ''give it life points directly"?


> A similar approach would be to write your own manager that associated
> continuations with these long-running jobs and only freed them after
> the job was completed.
>
> I will see whether it works for the previous two approaches  you mentioned
first maybe...

Maybe there are some dumb questions in this reply because of not really
using these features before, But thanks for your attention,
--Shuying

>
> On Sun, Sep 9, 2012 at 5:13 PM, jenny sun <jenny.sun.jenny.sun at gmail.com>
> wrote:
> > Hi,
> >
> > I have a problem.
> >
> > The web application will do some job A, which takes long time, so I make
> a
> > thread to do the job A and make a refresh button for that to pull the
> result
> > back.
> >
> > However, the problem is that, if A takes long time, the session in the
> user
> > side will be timed out, which A's results can not be accessed.
> >
> > So I tried three solutions, it seems that none of them can be done
> easily in
> > racket:
> >
> > Solution 1: make the server never timeout. But this cause too much
> > resources.
> >
> > Solution 2: create a timeout manager specifying some time, like this in
> > serve/servlet
> >
> > #:manager (create-timeout-manager
> >                           (lambda (req)
> >                             (response/full
> >      200 #"Okay"
> >      (current-seconds) TEXT/HTML-MIME-TYPE
> >      empty
> >      (list (string->bytes/utf-8 (include-template
> > "templates/timeout.html")))))
> >                              3600 3600) ; an hour timeout...
> > The problem of this solution is that it will have exception thrown out if
> > user trying to access to server if it is timeout. In other words, the
> server
> > will be unavailable entirely if it is timed out, which is undesirable!
> >
> > Solution 3: write a JS to automatically refresh the web pages to pull the
> > result. But the problem is that the template html file is dynamically
> > generated, when refreshing, it can not access to all the scoped
> variables in
> > racket to generate a new page!
> >
> > Therefore, does anyone have idea how to deal with the problems? or
> suggest
> > other solutions suitable for my case?
> >
> >
> >
> > ____________________
> >   Racket Users list:
> >   http://lists.racket-lang.org/users
> >
>
>
>
> --
> Jay McCarthy <jay at cs.byu.edu>
> Assistant Professor / Brigham Young University
> http://faculty.cs.byu.edu/~jay
>
> "The glory of God is Intelligence" - D&C 93
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20120911/647d25d5/attachment.html>

Posted on the users mailing list.