Howdy, The short (and not politically popular) answer is that Scala's Actor implementation is generally fragile and often broken. Lift made the painful switch away from Scala Actors 4 or so months ago for this reason.
If you can put together a simple example of the failure (basically something that we can run with mvn jetty:run) and make it available on GitHub, we can take a look at it. Thanks, David On Tue, Jan 19, 2010 at 5:02 PM, Yu-Shan Fung <ambivale...@gmail.com> wrote: > 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 <marius.dan...@gmail.com> 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 <ambivale...@gmail.com> 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 lift...@googlegroups.com. >> To unsubscribe from this group, send email to >> liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> >> . >> 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 lift...@googlegroups.com. > To unsubscribe from this group, send email to > liftweb+unsubscr...@googlegroups.com<liftweb%2bunsubscr...@googlegroups.com> > . > For more options, visit this group at > http://groups.google.com/group/liftweb?hl=en. > -- Lift, the simply functional web framework http://liftweb.net Beginning Scala http://www.apress.com/book/view/1430219890 Follow me: http://twitter.com/dpp Surf the harmonics--
You received this message because you are subscribed to the Google Groups "Lift" group.
To post to this group, send email to lift...@googlegroups.com.
To unsubscribe from this group, send email to liftweb+unsubscr...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/liftweb?hl=en.