I'm also curious what other devs would say. New thread could solve this but it's not the solution i'm looking for.
I think the locking should be more flexible then just synchronized(myBFLock) { processTheWholeRequest(); } even if it needs additional refactor. (Maybe RequestTarget#lock and RequestTarget#unlock?) But that's my humble opinion only. -Matej Igor Vaynberg wrote: > the page targets are too flexible to support something like this because > they do not lock on session specifically - the implementation just > happens to do that now. and this would also require us to completely > change how we do locking/refactor requesttargets possibly, etc. > > we should run this past other core devels and see their opinions. > > personally, if i knew i had a long running process i would spin off a > new thread, do it there, then notify the user when it is complete. i > know that is not always doable, just a suggestion. > > -Igor > > > On 6/21/06, *Matej Knopp* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> > wrote: > > If there was something like > > RequestCycle.lockSession() > RequestCycle.unlockSession() > > where in my onClock handler I could call > > RequestCycle.get().unlockSession() > --do-my-stuff-and-don't-touch-the-session! > RequestCycle.get().lockSession() > > I know this adds responsibility to the developer, but this is only for > corner cases. > > -Matej > > Matej Knopp wrote: > > Sorry, i'm lost. How is overriding getlock() supposed to help me? > I need > > to lock the session, but not for the whole request. Just for a part > > before the db call and the part after. > > > > -Matej > > > > Igor Vaynberg wrote: > >> in that case we sort of already have a mechanism for that, request > >> target has a getlock() which you can override and return > something other > >> then session, just need a way to encode a url so it is resolved > to your > >> own target > >> > >> -Igor > >> > >> > >> > >> > >> On 6/21/06, *Matej Knopp* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> <mailto:[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]>>> wrote: > >> > >> Well, it would be your responsibility not to touch > application or > >> session if the mutex is unlocked. This is not something an > average joe > >> would do in every link handler. You would do that only right > before a > >> long db operation and lock it right after it. > >> > >> I'm not looking for perfect solution. I'm looking for one > that works. A > >> solution when the application stops responding until session > expires is > >> not perfect either. > >> > >> -Matej > >> > >> Igor Vaynberg wrote: > >> > but you wouldnt want to unlock the mutex, thats kinda the > whole > >> point! > >> > what if both pages access session object? or application > object? > >> now you > >> > have to start worrying about concurrency on those. the > advantage of > >> > letting only one page request through at a time is that > users > >> dont have > >> > to think about concurrency, if we dont do that the > programming model > >> > becomes much more complicated. it has its draw backs for > sure, but i > >> > dont think there is a perfect solution here. > >> > > >> > -Igor > >> > > >> > > >> > > >> > On 6/21/06, *Matej Knopp* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> <mailto: [EMAIL PROTECTED] <mailto:[EMAIL > PROTECTED]>> > >> <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>> wrote: > >> > > >> > Igor Vaynberg wrote: > >> > > not unless all page targets return the same mutex > instance :) > >> > The mutex would be stored in session of course :) > >> > > > >> > > the point is that only a single page is processed > at a time > >> > because of > >> > > pagemap, etc. although i dont really know if the > pagemap is > >> > affected all > >> > > that much in 2.0. > >> > > > >> > > but even then, lets say i double click a link > really fast, > >> i get two > >> > > different instances of pagetarget that are going to do > >> processing > >> > on the > >> > > same page instance, so once again both of those page > >> targets have to > >> > > return the same mutex instance. dont know how we > are going > >> to do > >> > that or > >> > > if it will be simpler/better then locking session. > >> > I don't think it would be simpler. But it would be > better in > >> a way that > >> > if you have an action that takes very long, you can > "unlock" > >> the mutex > >> > in you link handler, let other requests process, and > after > >> you are > >> > done, > >> > you lock the session again. > >> > > > >> > > the thing about the db locking up is that it > should have some > >> > sort of a > >> > > timeout that throws an error, and the sync block > should > >> then be > >> > broken. > >> > > that doesnt happen? sounds like more of a fault in > your app? > >> > maybe we > >> > > should build a timeout for our sync block. > >> > Well, the db can either lock up, or it really takes > that long > >> to get the > >> > data (complicated statistics, reports, etc). In the > meanwhile > >> user would > >> > like to work with the rest of the application but he > can't. > >> > > >> > -Matej > >> > > > >> > > -Igor > >> > > > >> > > > >> > > On 6/21/06, *Matej Knopp* <[EMAIL PROTECTED] > <mailto:[EMAIL PROTECTED]> > >> <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>> > >> > <mailto: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> > >> <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> > <mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>>> wrote: > >> > > > >> > > Hi, > >> > > > >> > > we have a problem with session locking. > Sometimes, the > >> underlying > >> > > database just hangs and the response is not > processed > >> > properly. The > >> > > problem is that HttpSession remains locked. > >> > > > >> > > Wouldn't it be possible to replace the current > locking > >> mechanism > >> > > ( synchronized(lock) { doEverything() } ) > >> > > > >> > > with something that would behave more like a > mutex? > >> > > > >> > > e.g. > >> > > > >> > > Mutext mutex = getRequestTarget().getMutex(); > >> > > > >> > > mutex.lock(); > >> > > processRequest(); > >> > > mutex.unlock (); > >> > > > >> > > and the code running the operation could look like > >> > > > >> > > > >> RequestCycle().get().getReqeustTarget().getMutex().unlock(); > >> > > doMySloooowOperation(); > >> > > > >> RequestCycle().get().getReqeustTarget().getMutex().lock(); > >> > > > >> > > -Matej > >> > > > >> > > > >> > > _______________________________________________ > >> > > Wicket-develop mailing list > >> > > Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>> > >> > <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>>> > >> > > <mailto: Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto: Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>> > >> > <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto: Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>>>> > >> > > > >> https://lists.sourceforge.net/lists/listinfo/wicket-develop > <https://lists.sourceforge.net/lists/listinfo/wicket-develop> > >> > < > https://lists.sourceforge.net/lists/listinfo/wicket-develop> > >> > > > >> > > > >> > > > >> > > > >> > > >> > ------------------------------------------------------------------------ > >> > >> > > > >> > > _______________________________________________ > >> > > Wicket-develop mailing list > >> > > Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>> > >> > <mailto: Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>>> > >> > > > >> https://lists.sourceforge.net/lists/listinfo/wicket-develop > >> <https://lists.sourceforge.net/lists/listinfo/wicket-develop> > >> > > >> > > >> > > >> > _______________________________________________ > >> > Wicket-develop mailing list > >> > Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>> > >> > <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>>> > >> > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > >> < https://lists.sourceforge.net/lists/listinfo/wicket-develop> > >> > > <https://lists.sourceforge.net/lists/listinfo/wicket-develop > <https://lists.sourceforge.net/lists/listinfo/wicket-develop>> > >> > > >> > > >> > > >> > > >> > ------------------------------------------------------------------------ > >> > >> > > >> > _______________________________________________ > >> > Wicket-develop mailing list > >> > Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>> > >> > https://lists.sourceforge.net/lists/listinfo/wicket-develop > >> > >> > >> > >> _______________________________________________ > >> Wicket-develop mailing list > >> Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> <mailto:Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net>> > >> https://lists.sourceforge.net/lists/listinfo/wicket-develop > >> > >> > >> > >> > ------------------------------------------------------------------------ > > >> > >> _______________________________________________ > >> Wicket-develop mailing list > >> Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > >> https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > > > > _______________________________________________ > > Wicket-develop mailing list > > Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > <https://lists.sourceforge.net/lists/listinfo/wicket-develop> > > > > > > _______________________________________________ > Wicket-develop mailing list > Wicket-develop@lists.sourceforge.net > <mailto:Wicket-develop@lists.sourceforge.net> > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > ------------------------------------------------------------------------ > > _______________________________________________ > Wicket-develop mailing list > Wicket-develop@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-develop _______________________________________________ Wicket-develop mailing list Wicket-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-develop