On Tue, Jan 19, 2010 at 11:58 PM, Yu-Shan Fung <[email protected]>wrote:
> Thanks for the reply, David! > > I finally realized my problem is that I was compiling against the scala > 2.7.3 library instead of 2.7.7 as I thought. When I use the newer lib, the > exception apparently goes away. > Scala is very version sensitive. If you're using Lift 1.1-M5+, you must use Scala 2.7.7. If you're using Lift 1.0.2, I think the correct version is 2.7.5. > > Regardless, what would be a good replacement for the scala actors library? > Akka: akkasource.org > > Thanks, > Yu-Shan > > > On Tue, Jan 19, 2010 at 8:44 PM, David Pollak < > [email protected]> wrote: > >> 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 <[email protected]>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 <[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]<liftweb%[email protected]> >>> . >>> 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 [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]<liftweb%[email protected]> > . > 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 [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.
