Thanks for the reply, Marius. Where can I get the 1.1 or 2.0 snapshot?

I'm not doing any scheduling myself. I just created a bunch of Future's, and
then call Futures.awaitAll. But my understanding is that Future is
implemented with Actor's.

    val fResults = ids.map { id => future(computeStuff(id)) }
    val fList = fResults.toList     // forces creation of the future
variables. otherwise they are created lazily, defeating parallelism
    val finalResults = Futures.awaitAll(5000, fList: _*)

This works the first time (and sometimes for a few times). But pretty soon,
the call to awaitAll would fail with the aforementioned exception.

I dug a bit into the scala code, and the code that fails within
Futures.awaitAll is this:

   Actor.timer.schedule(new java.util.TimerTask {
     def run() { thisActor ! TIMEOUT }
   }, timeout)

And Actor.timer is defined as such:

object Actor {
...
  private[actors] val timer = new Timer(true)
...
}


I'm pretty new to both scala and lift, but it looks like the Actor.timer is
initialized once (created as a daemon), and expected to always be available.
But I don't fully understand what aspects of the lift environment persists
across requests, and how, if at all, would Actor.timer end up in a
cancelled/terminated state.

Any idea? Thanks in advance!




On Tue, Jan 19, 2010 at 6:40 AM, Marius <[email protected]> wrote:

> I'd recommend using Lisft 1.1-SNAPSHOT or 2.0-SNAPSHOT
>
> You stacktrace doesn't indicate anything related with Lift, so are you
> using Java's scheduler, or are you using actors? Lift's ActorPing and
> actors is a good way of doing scheduling. So can you elaborate on how
> are you doing the scheduling?
>
> Br's,
> Marius
>
> On Jan 19, 8:04 am, Yu-Shan Fung <[email protected]> wrote:
> > Hi All,
> >
> > I have a lift app, where one of the functions performs sub-computations
> > (including network operations) in parallel via future(s) &
> Futures.awaitAll.
> > It runs fine on the first request, but subsequent requests throws a
> > IllegalStateException:
> >
> > Exception in thread "Thread-30" java.lang.IllegalStateException: Timer
> > already cancelled.
> >         at java.util.Timer.sched(Timer.java:376)
> >         at java.util.Timer.schedule(Timer.java:192)
> >         at scala.actors.Futures$.awaitAll(Future.scala:76)
> >         at MyWorker.run(MyWorker.scala:20)
> >         at java.lang.Thread.run(Thread.java:636)
> >
> > I dug up more documentation and it looks like this exception indicates an
> > attempt to schedule a task on a timer that has already been cancelled
> > (associated daemon thread terminated?). Any idea why, or if I'm doing
> > something wrong?
> >
> > In case it matters, I'm running Scala code runner version 2.7.7.final,
> > Liftweb 1.0, Jetty 6.1.22.
> >
> > Any tips/pointers would be appreciated. Thanks!
> > Yu-Shan
> >
> > --
> > “When nothing seems to help, I go look at a stonecutter hammering away at
> > his rock perhaps a hundred times without as much as a crack showing in
> it.
> > Yet at the hundred and first blow it will split in two, and I know it was
> > not that blow that did it, but all that had gone before.” — Jacob Riis
>
> --
> You received this message because you are subscribed to the Google Groups
> "Lift" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected]<liftweb%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/liftweb?hl=en.
>
>
>
>


-- 
“When nothing seems to help, I go look at a stonecutter hammering away at
his rock perhaps a hundred times without as much as a crack showing in it.
Yet at the hundred and first blow it will split in two, and I know it was
not that blow that did it, but all that had gone before.” — Jacob Riis

-- 
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en.


Reply via email to