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

Reply via email to