On Fri, Dec 12, 2008 at 10:36 AM, Tim Perrett <[email protected]> wrote:

>
> Do you know why they decided to go for another 2.7.xx release - I
> thought they were going to 2.8 next...?


Because this is the kind of defect that calls for an immediate fix.  It
impacts every system that's using Actors and Actors are a key feature of
Scala.  I'm glad Martin and Philipp pulled out the stops to get a binary
compatible fix for this defect.


>
>
> Cheers, Tim
>
> On Dec 12, 6:26 pm, [email protected] wrote:
> > Can do
> >
> > On 12/12/08, David Pollak <[email protected]> wrote:
> >
> > > Folks,
> >
> > > Who has time to do testing, etc. with 2.7.3?
> >
> > > Thanks,
> >
> > > David
> >
> > > ---------- Forwarded message ----------
> > > From: Philipp Haller <[email protected]>
> > > Date: Fri, Dec 12, 2008 at 6:42 AM
> > > Subject: Re: [scala-user] Is there a memory leak in 2.7.2 Actors?
> > > To: David Pollak <[email protected]>
> > > Cc: scala-user <[email protected]>
> >
> > > Hi again,
> >
> > > FYI, I committed a fix in r16750 (2.7.x branch) and r16751 (trunk). It
> > > looks like we are probably releasing 2.7.3 including this fix some time
> > > next week (or shortly after).
> >
> > > Cheers,
> > > Philipp
> >
> > > [email protected] wrote:
> > >> Hi,
> >
> > >> I found the memory leak. A fix should be ready shortly.
> >
> > >> Cheers,
> > >> Philipp
> >
> > >> Quoting David Pollak <[email protected]>:
> >
> > >>> Folks,
> >
> > >>> I've been noticing that Lift apps run out of memory after a certain
> > >>> period of time.  This is a relatively new thing.  I think I've
> > >>> traced the problem back to a memory leak in the Actors library.  The
> > >>>  enclosed program terminates with an out of memory error.
> >
> > >>> Am I failing to release the Actors in some way or is there a memory
> leak?
> >
> > >>> Thanks,
> >
> > >>> David
> >
> > >>> import scala.actors._
> > >>> import Actor._
> >
> > >>> object ActorWatcher extends Actor {
> > >>>   def act = loop {
> > >>>     react {
> > >>>       case Exit(actor: Actor, why: Throwable) =>
> > >>>         failureFuncs.foreach(f => f(actor, why))
> > >>>       case x => println(x)
> > >>>     }
> > >>>   }
> >
> > >>>   private def startAgain(a: Actor, ignore: Throwable) {a.start}
> >
> > >>>   private def logActorFailure(actor: Actor, why: Throwable) {
> > >>>     println("The ActorWatcher restarted "+actor+" because "+why)
> > >>>   }
> >
> > >>>   /**
> > >>>    * If there's something to do in addition to starting the actor
> > >>> up, pre-pend the
> > >>>    * actor to this List
> > >>>    */
> > >>>   var failureFuncs: List[(Actor, Throwable) => Unit] =
> logActorFailure _
> > > ::
> > >>>   startAgain _ :: Nil
> >
> > >>>   this.start
> > >>>   this.trapExit = true
> > >>> }
> >
> > >>> case object Start
> > >>> case object EndMe
> >
> > >>> class A extends Actor {
> > >>> def act = loop {
> > >>> react {
> > >>> case Start =>
> > >>> link(ActorWatcher)
> > >>> case EndMe =>
> > >>> unlink(ActorWatcher)
> > >>> exit()
> > >>> }
> > >>> }
> > >>> }
> >
> > >>> object Sloth {
> > >>> def z(in: Long) = if (in / 1024L == 0L) in
> > >>> else if (in / (1024L * 1024L) == 0L) (in / 1024L).toString + "K"
> > >>> else (in / (1024L * 1024L)).toString + "M"
> > >>> def main(args: Array[String]) {
> > >>> val rt = Runtime.getRuntime()
> > >>> for (o <- 1 to 1000000) {
> > >>> println("Outer "+o)
> > >>> //var a: List[Actor] = Nil
> > >>>      for (i <- 1 to 10000) {
> > >>> val t = new A
> > >>> //a = t :: a
> > >>> t.start
> > >>> t ! Start
> > >>> t ! EndMe
> > >>> }
> > >>> println("Done creating")
> > >>> // for (act <- a) act ! EndMe
> > >>> ActorGC.gc()
> > >>> rt.gc()
> > >>> println("Free "+z(rt.freeMemory())+" total "+z(rt.totalMemory()))
> > >>> }
> > >>> }
> > >>> }
> >
> > >>> --
> > >>> Lift, the simply functional web frameworkhttp://liftweb.net
> > >>> Collaborative Task Managementhttp://much4.us
> > >>> Follow me:http://twitter.com/dpp
> > >>> Git some:http://github.com/dpp
> >
> > > --
> > > Lift, the simply functional web frameworkhttp://liftweb.net
> > > Collaborative Task Managementhttp://much4.us
> > > Follow me:http://twitter.com/dpp
> > > Git some:http://github.com/dpp
> >
>


-- 
Lift, the simply functional web framework http://liftweb.net
Collaborative Task Management http://much4.us
Follow me: http://twitter.com/dpp
Git some: http://github.com/dpp

--~--~---------~--~----~------------~-------~--~----~
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