We could consider building in a time out for the lock itself. That timeout should be configurable. I agree that being able to hang up the session is definitively not what we should want.
Eelco On 6/21/06, Matej Knopp <[EMAIL PROTECTED]> wrote: > I don't know if it can be considered a deadlock, but basicaly, if (for > any reason) a request doesn't complete (db problem, etc), no further > requests from the same session can be processed. > > Now maybe if you have perfect business objects that's not an issue, but > in our current project we depend on third party business objects and > sometimes they behave very funny. > > The "hack" with unlocking session would solve this, but I must admit, it > would be still a hack. But I can't think of any other solution except > for doing the operation in separate thread, which should be doable but > it would complicate the thing quite a lot. > > I'm I the only one with this issue? > > -Matej > > Eelco Hillenius wrote: > > I think providing unlocking functionality is not the way to go. You > > basically just provide a hack opportunity if you do that, and that's > > not what a framework should do. I'm not really getting the problem at > > this point, but if we have a possible deadlock in our request > > handling, that's obviously a bug. If we have not, it's not a bug, and > > any 'fixes' we do should be geared towards clean improvements, not > > workarounds. > > > > Eelco > > > > > > On 6/21/06, Matej Knopp <[EMAIL PROTECTED]> wrote: > >> 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 > >> > > > > > > _______________________________________________ > > Wicket-develop mailing list > > Wicket-develop@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/wicket-develop > > > > > All the advantages of Linux Managed Hosting--Without the Cost and Risk! > Fully trained technicians. The highest number of Red Hat certifications in > the hosting industry. Fanatical Support. Click to learn more > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642 > _______________________________________________ > Wicket-develop mailing list > Wicket-develop@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wicket-develop > All the advantages of Linux Managed Hosting--Without the Cost and Risk! Fully trained technicians. The highest number of Red Hat certifications in the hosting industry. Fanatical Support. Click to learn more http://sel.as-us.falkag.net/sel?cmd=lnk&kid=107521&bid=248729&dat=121642 _______________________________________________ Wicket-develop mailing list Wicket-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wicket-develop