No worries, the session vars seem to be reset to their default values before the callback gets called. I followed the code myself in Vars and LiftSession and couldn't find anything wrong. Will look at your change set tomorrow to learn better how this works.
If i spot possible bugs I would like to get involved and write test cases etc so I don't have to bother you and others on the list all the time. On Feb 4, 11:56 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote: > I've just realized that I'm a complete idiot. > I need to totally re-do the clean-up mechanism. > > Please give me an hour. > > On Wed, Feb 4, 2009 at 3:06 PM, Kris Nuttycombe > <kris.nuttyco...@gmail.com>wrote: > > > > > Heh, this one just bit me too. I can't say I didn't warn myself, though: > > > // This is way too dependent upon an implementation detail of the > > superclass. > > override def cleanupFunc : Box[() => Unit] = { > > ... > > } > > > Kris > > > On Wed, Feb 4, 2009 at 1:47 PM, David Pollak < > > feeder.of.the.be...@gmail.com> wrote: > > >> That's because cleanUpFunc is gone. > > >> You must do: > > >> object sessDirHash extends SessionVar[String]("") { > >> registerCleanupFunc(session => println("Got hash: " + this.is)) > > >> } > > >> On Wed, Feb 4, 2009 at 12:43 PM, Alli <allilis...@gmail.com> wrote: > > >>> Hey David, > > >>> Two questions this time: > > >>> I've been playing with your commit earlier today and cleaning up > >>> SessionVar's. > >>> I got: > > >>> object sessDirHash extends SessionVar[String]("") { > >>> def cleanUpFunc(sess: LiftSession) = { > >>> println("Got hash: " + this.is) > >>> } > > >>> In my test snippet I got: > >>> sessDirHash("this is a test") > >>> println("Got var: " + ResizeMyPics.sessDirHash.is) > > >>> I can see it printed out correctly after setting it but it's empty in > >>> the cleanup function. > > >>> 2) > >>> Second question, I submit a form and my flash component starts e.g. 3 > >>> new sessions and POST's to /resize > > >>> /resize sets a SessionVar variable but it's like it's only being set > >>> the first time. I'm printing out right before I register > >>> the clean up handler in the SessionVar, from my jetty logs: > > >>> INFO - Service request (GET) /images/cancelbutton.gif took 9 > >>> Milliseconds > >>> Rez Gots: 127.0.0.1 > >>> Registering cleanup for: 1uvl5176sdy9r > >>> Rez Rep Gots: 127.0.0.1 > >>> INFO - Service request (POST) /resize took 270 Milliseconds > >>> Rez Gots: 127.0.0.1 > >>> Rez Rep Gots: 127.0.0.1 > >>> INFO - Service request (POST) /resize took 91 Milliseconds > >>> Rez Gots: 127.0.0.1 > >>> Rez Rep Gots: 127.0.0.1 > >>> INFO - Service request (POST) /resize took 481 Milliseconds > > >>> I would think it should print out Registering cleanup handler ... > >>> after each /resize request since they are different sessions. > > >>> Then the sessions all timeout and I can see there are 4 sessions > >>> expiring but there is only message printed out once > >>> from the clean up handler. > > >>> What are your thoughts on this? > > >>> Cheers, > >>> Alfred > > >>> On Feb 4, 1:19 am, Alli <allilis...@gmail.com> wrote: > >>> > Thanks David, I'll get it tomorrow from scala-tools.org and finish up > >>> > the app. > >>> > URL will behttp://www.resizemypics.netafree service for people to > >>> > resize their pictures > >>> > and view them online. Just a simple, yet convenient service. Gives me > >>> > a chance to learn > >>> > more about lift as well. Been following lift for a while but this is > >>> > the first site I finish, have a > >>> > half finished blog site in lift. Doing all this stuff outside of work > >>> > so it's easy to get distracted. > > >>> > Will let you know once the site is in production. > > >>> > Again thanks for your help. > > >>> > Cheers, > >>> > Alli > > >>> > On Feb 4, 1:12 am, David Pollak <feeder.of.the.be...@gmail.com> wrote: > > >>> > > 0.11-SNAPSHOT is 0.10 with bug fixes. It's very stable and will be > >>> 1.0 on > >>> > > 2/26. > >>> > > I'll commit up a fix to this problem in a few minutes. > > >>> > > Also, what's the URL of the site? :-) > > >>> > > On Tue, Feb 3, 2009 at 4:58 PM, Alli <allilis...@gmail.com> wrote: > > >>> > > > 0.10 at the moment, reckon i should upgrade to 0.11? This site is > >>> > > > going live soon though and I was not sure > >>> > > > about the status of 0.11-snapshot. > > >>> > > > On Feb 4, 12:56 am, David Pollak <feeder.of.the.be...@gmail.com> > >>> > > > wrote: > >>> > > > > Crud. It looks like the session cleanup is done outside of the > >>> session > >>> > > > > scope. > >>> > > > > Are you using 0.11-SNAPSHOT? > > >>> > > > > On Tue, Feb 3, 2009 at 4:35 PM, Alli <allilis...@gmail.com> > >>> wrote: > > >>> > > > > > Been testing this stuff and my object is like this: > > >>> > > > > > object ReportAddress extends SessionVar[String]("") { > >>> > > > > > def cleanUp() = { > >>> > > > > > println(S.session) > >>> > > > > > S.session.map { sess => > >>> > > > > > println("Session ID: " + sess.uniqueId) > >>> > > > > > println("REM ADDRESS: " + this.is) > >>> > > > > > val tempDir = ... > >>> > > > > > // Remove the temporary dir for this session. > >>> > > > > > tempDir.destroy() > >>> > > > > > } > >>> > > > > > } > > >>> > > > > > registerCleanupFunc(cleanUp _) > >>> > > > > > } > > >>> > > > > > println(S.session) always gives me "Empty" > > >>> > > > > > Any idea what could cause this? > > >>> > > > > > On Feb 3, 10:38 pm, David Pollak < > >>> feeder.of.the.be...@gmail.com> > >>> > > > > > wrote: > >>> > > > > > > On Tue, Feb 3, 2009 at 2:13 PM, Alli <allilis...@gmail.com> > >>> wrote: > > >>> > > > > > > > Makes a lot of sense, thanks David. > > >>> > > > > > > > Always amazes me how good and clean the design of lift is. > > >>> > > > > > > Flattery will get you a lot... :-) > > >>> > > > > > > > On Feb 3, 9:49 pm, David Pollak < > >>> feeder.of.the.be...@gmail.com> > >>> > > > wrote: > >>> > > > > > > > > On Tue, Feb 3, 2009 at 1:06 PM, Alli < > >>> allilis...@gmail.com> > >>> > > > wrote: > > >>> > > > > > > > > > Evening, > > >>> > > > > > > > > > During the lifetime of a session, the session may have > >>> uploaded > >>> > > > > > bunch > >>> > > > > > > > > > of files and these need to be able to be > >>> destroyed/unlinked > >>> > > > when a > >>> > > > > > > > > > session ends. > > >>> > > > > > > > > > When user uploads a file it's parent dir is determined > >>> by the > >>> > > > > > session > >>> > > > > > > > > > unique ID and the remote address of the uploader. The > >>> name is > >>> > > > e.g. > >>> > > > > > / > >>> > > > > > > > > > tmp/sha1 hash of session id and remote address'. This > >>> means in > >>> > > > > > order > >>> > > > > > > > > > to determine what to destroy I need to know what remote > >>> address > >>> > > > the > >>> > > > > > > > > > session belongs to. I am setting that when uploading a > >>> file has > >>> > > > > > been > >>> > > > > > > > > > uploaded successfully. > > >>> > > > > > > > > > In Boot.scala I want to do something like: > >>> > > > > > > > > > // Set session handler. > >>> > > > > > > > > > LiftSession.onAboutToShutdownSession = > >>> List[LiftSession => > >>> > > > > > Unit]( > >>> > > > > > > > > > session => { > >>> > > > > > > > > > var sessId = session.uniqueId > >>> > > > > > > > > > val remoteIp = session.get("remoteAddress") > >>> > > > > > > > > > val myTempDir = new TempDirWeb(sessId, > >>> remoteIp) > >>> > > > > > > > > > myTempDir.unlinkall() > >>> > > > > > > > > > }) > > >>> > > > > > > > > > Problem with this is that the LiftSession.get[T]() > >>> method is > >>> > > > > > package > >>> > > > > > > > > > private (liftweb). I can think of some other scenarios > >>> where > >>> > > > one > >>> > > > > > would > >>> > > > > > > > > > need access to the session variables before destroying > >>> the > >>> > > > session. > > >>> > > > > > > > > > Does this make sense or is my design just plain wrong? > >>> :). > > >>> > > > > > > > > get is typesafe, so exposing it would make it not type > >>> safe. > >>> > > > It's > >>> > > > > > always > >>> > > > > > > > > accessed via SessionVars. > > >>> > > > > > > > > You can do something like: > > >>> > > > > > > > > object ReportAddress extends SessionVar[String]("") { > >>> > > > > > > > > def cleanUp() { > >>> > > > > > > > > S.session.map{ sess => > >>> > > > > > > > > val td = new TempDirWeb(sess.uniqueId, this.is) > >>> > > > > > > > > td.unlinkall() > >>> > > > > > > > > } > >>> > > > > > > > > } > > >>> > > > > > > > > registerCleanupFunc(cleanUp _) > > >>> > > > > > > > > } > > >>> > > > > > > > > Each SessionVar (and RequestVar) has a cleanup func that > >>> will be > >>> > > > > > called > >>> > > > > > > > as > >>> > > > > > > > > the Var is going away. > > >>> > > > > > > > > > Cheers, > >>> > > > > > > > > > Alfred > > >>> > > > > > > > > -- > >>> > > > > > > > > Lift, the simply functional web frameworkhttp:// > >>> liftweb.net > >>> > > > > > > > > Beginning Scalahttp:// > >>>www.apress.com/book/view/1430219890 > >>> > > > > > > > > Follow me:http://twitter.com/dpp > >>> > > > > > > > > Git some:http://github.com/dpp > > >>> > > > > > > -- > >>> > > > > > > Lift, the simply functional web frameworkhttp://liftweb.net > >>> > > > > > > Beginning Scalahttp://www.apress.com/book/view/1430219890 > >>> > > > > > > Follow me:http://twitter.com/dpp > >>> > > > > > > Git some:http://github.com/dpp > > >>> > > > > -- > >>> > > > > Lift, the simply functional web frameworkhttp://liftweb.net > >>> > > > > Beginning Scalahttp://www.apress.com/book/view/1430219890 > >>> > > > > Follow me:http://twitter.com/dpp > >>> > > > > Git some:http://github.com/dpp > > >>> > > -- > >>> > > Lift, the simply functional web frameworkhttp://liftweb.net > >>> > > Beginning Scalahttp://www.apress.com/book/view/1430219890 > >>> > > Follow me:http://twitter.com/dpp > >>> > > Git some:http://github.com/dpp > > >> -- > >> Lift, the simply functional web frameworkhttp://liftweb.net > >> Beginning Scalahttp://www.apress.com/book/view/1430219890 > > >> Follow me:http://twitter.com/dpp > >> Git some:http://github.com/dpp > > -- > Lift, the simply functional web frameworkhttp://liftweb.net > Beginning Scalahttp://www.apress.com/book/view/1430219890 > Follow me:http://twitter.com/dpp > Git ... > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to liftweb@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 -~----------~----~----~----~------~----~------~--~---