I'm hardly an expert in this matter, but I found that enabling
transactions indiscriminately is a quick recipe for deadlock.

Orion uses pessimistic concurrency, so each transaction grabs an
exclusive lock on every entity used.  Unless your data model is simple
or you always access resources in the same order in every operation,
it's pretty likely that you're going to deadlock with any load.

In my case, my data model and operations are complex enough that any two
concurrent users would almost always cause deadlock.  I had set all
transaction attributes to "Required" even though I don't really need
transactions.  Setting everything to "NotSupported" eliminated the
deadlocks.

>From this it seems pretty clear to me that transactional logic needs to
be planned carefully into each operation which needs it.  Even a slight
mistake will cause deadlock exceptions given sufficient load.

Or am I missing something?

Jeff

> -----Original Message-----
> From: Nick Newman [mailto:[EMAIL PROTECTED]]
> Sent: Monday, May 14, 2001 8:32 AM
> To: Orion-Interest
> Subject: RE: DeadLock with 25 users SOLVED
> 
> 
> Philippe,
> 
> It's Monday morning. Could you please help my fuzzy brain by 
> explaining WHY 
> it is "so stupid" to set all transactions to "required". I'm 
> afraid it 
> sounds reasonable to me...  perhaps I don't understand what 
> you mean by 
> "even when reading in the database".
> 
> Thanks,
> Nick
> 
> 
> At 12:43 PM 5/14/01 +0200, you wrote:
> >Hi,
> >
> >Thanks Johan and Kirk, you are both right.
> >Those 2 parametres are usefull for tuning the app server.
> >But pay attention, I've used the "timeout" (not 
> "inactivity-timeout") under
> >1.3.8, it doesn't work, need to upgrade to 1.4.7 for get 
> this working.
> >
> >I've discover another one:
> >In the file orion-ejb-jar.xml you could add this option 
> ligne: call-timeout
> >= "n"
> >n = number of millisec for waiting on the EJB's interface 
> reply, 0 for
> >infinite.
> >
> >My principal error with this "deadlock" was to set ALL 
> transactions to
> >"required", even when reading in the database... So stupid ;-)
> >
> >My bench show that 100 users could access to our app wihtout 
> crashing! I'll
> >try to bench the same .EAR under BEA...
> >
> >Regards,
> >
> >Philippe PAGET.
> >
> > > -----Message d'origine-----
> > > De : Johan Fredriksson 
> [mailto:[EMAIL PROTECTED]]
> > > Envoyé : lundi 14 mai 2001 10:23
> > > À : Orion-Interest
> > > Objet : Re: DeadLock with 25 users
> > >
> > >
> > > Or decreasing the
> > >
> > > inactivity-timeout="10"
> > >
> > > so the resource is more quickly released back to the container ?
> > >
> > >
> > > Johan
> > >
> > >
> > > ----- Original Message -----
> > > From: "KirkYarina" <[EMAIL PROTECTED]>
> > > To: "Orion-Interest" <[EMAIL PROTECTED]>
> > > Cc: "PHiL" <[EMAIL PROTECTED]>
> > > Sent: Friday, May 11, 2001 9:10 PM
> > > Subject: Re: DeadLock with 25 users
> > >
> > >
> > > > I believe this is discussed in past; see the archives (
> > > >
> > > 
> http://www.mail-archive.com/orion-interest%40orionserver.com/ ).  Try
> > > > increasing max-connections in data-sources.xml
> > > >
> > > > Kirk Yarina
> > > >
> > > > At 09:13 AM 5/11/01 +0200, you wrote:
> > > > >Hello, we just start some benchs with 25 fake users, 
> here is the
> > > exeption:
> > > > >Those 25 users try to access the same EJB. Any idears, or
> > > points to check
> > > in
> > > > >our code to fix this kind of errors ???
> > > > >
> > > > >Thanks.
> > > > >
> > > > >Philippe.
> > > > >
> > > > >
> > > > >ERROR | 09/05/2001 15:59:01:46 | NodeBmEJB :
> > > findNode(NodePK pk) | pk =
> > > (id
> > > > >= 0, space = WA17, componentName = news35) |
> > > > >Exception message: Transaction was rolled back: timed out,
> > > while waiting
> > > for
> > > > >(id = 0, space = WA17, componentName = news35) (started at
> > > Wed May 09
> > > > >15:58:25 GMT+01:00 2001, terminated at Wed May 09 15:59:01
> > > GMT+01:00
> > > 2001)
> > > > >com.evermind.server.DeadlockException: Transaction was
> > > rolled back: timed
> > > > >out, while waiting for (id = 0, space = WA17,
> > > componentName = news35)
> > > > >(started at Wed May 09 15:58:25 GMT+01:00 2001, terminated
> > > at Wed May 09
> > > > >15:59:01 GMT+01:00 2001)
> > > > >         at
> > > com.evermind.server.ejb.AbstractEJBObject.startCall(JAX)
> > > > >         at
> > > >
> > > >NodeHome_EntityHomeWrapper3.findByPrimaryKey(NodeHome_EntityH
> > > omeWrapper3.ja
> > > v
> > > > >a:195)
> > > > >         at
> > > >
> > > >com.stratelia.webactiv.util.node.control.NodeBmEJB.findNode(N
> > > odeBmEJB.java:
> > > 5
> > > > >0)
> > > > >         at
> > > >
> > > >com.stratelia.webactiv.util.node.control.NodeBmEJB.getFrequen
> > > tlyAskedChildr
> > > e
> > > > >nDetails(NodeBmEJB.java:252)
> > > > >         at
> > > >
> > > >NodeBm_StatelessSessionBeanWrapper1.getFrequentlyAskedChildre
> > > nDetails(NodeB
> > > m
> > > > >_StatelessSessionBeanWrapper1.java:1677)
> > > > >         at
> > > >
> > > >com.stratelia.webactiv.news.control.NewsSessionControl.getArc
> > > hiveList(NewsS
> > > e
> > > > >ssionControl.java:315)
> > > > >         at
> > > >
> > > >__jspPage1_news_jsp_news_jsp._jspService(__jspPage1_news_jsp_
> > > news_jsp.java:
> > > 4
> > > > >73)
> > > > >         at com.orionserver.http.OrionHttpJspPage.service(JAX)
> > > > >         at com.evermind.server.http.HttpApplication.xu(JAX)
> > > > >         at com.evermind.server.http.JSPServlet.service(JAX)
> > > > >         at com.evermind.server.http.d4.s3(JAX)
> > > > >         at com.evermind.server.http.d4.s1(JAX)
> > > > >         at com.evermind.server.http.d4.forward(JAX)
> > > > >         at com.evermind.server.http.ew.forward(JAX)
> > > > >         at
> > > >
> > > >com.stratelia.webactiv.servlets.ComponentRequestRooter.doPost
> > > (ComponentRequ
> > > e
> > > > >stRooter.java:153)
> > > > >         at
> > > >
> > > >com.stratelia.webactiv.servlets.ComponentRequestRooter.doGet(
> > > ComponentReque
> > > s
> > > > >tRooter.java:172)
> > > > >         at
> > > javax.servlet.http.HttpServlet.service(HttpServlet.java:190)
> > > > >         at
> > > javax.servlet.http.HttpServlet.service(HttpServlet.java:302)
> > > > >         at
> > > javax.servlet.http.HttpServlet.service(HttpServlet.java:329)
> > > > >         at com.evermind.server.http.d4.s3(JAX)
> > > > >         at com.evermind.server.http.d4.s1(JAX)
> > > > >         at com.evermind.server.http.eg.s9(JAX)
> > > > >         at com.evermind.server.http.eg.dr(JAX)
> > > > >         at com.evermind.util.f.run(JAX)
> > > >
> > >
> > >
> >
> 
> 
> 

Reply via email to