Unfortunately without the read-only tags our application performs too slowly to be usable under load. We use the CMP Entities for authentication to our site, where every user gets the guest identity, and many different users may share the same institutional identity. So if there's a lot of authentications to the same identities at the same time we have problems if there is any transactional locking.

With load testing on a dual processor Linux box I was able to achieve a maximum of 6 authentications per second. This is a lot less than the current production application (using BMP with a read-mostly pattern) has to handle. Our application is not as efficient as it could be (we're looking at improvements we can make), and our production servers are faster, but I'm not sure the performance will be good enough to cope with the production load. We're also worried about possible deadlocks where different combinations of shared identities are involved.

This means we're having to look for possible workarounds. We have been trying to limit the length of transactions by removing the transaction from the Session facade and using UserTransactions around our access to 1-M & M-M CMR relationships (going from M-1 doesn't seem to need a transaction). We were able to get the application running with these changes but we started getting this error under load:

javax.ejb.EJBException: Reentrant method call detected: Login andrewsiplogin
at org.jboss.ejb.plugins.EntityReentranceInterceptor.invoke(EntityReentranceInterceptor.java:73)
at org.jboss.ejb.plugins.EntityInstanceInterceptor.invoke(EntityInstanceInterceptor.java:174)
at org.jboss.ejb.plugins.EntityLockInterceptor.invoke(EntityLockInterceptor.java:89)
at org.jboss.ejb.plugins.EntityCreationInterceptor.invoke(EntityCreationInterceptor.java:53)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:273)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:104)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:117)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:198)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.EntityContainer.internalInvoke(EntityContainer.java:483)
at org.jboss.ejb.Container.invoke(Container.java:678)
at org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:353)
at org.jboss.ejb.plugins.local.EntityProxy.invoke(EntityProxy.java:38)
at $Proxy195.getUsername(Unknown Source)
at com.ingenta.acs.core.IdentityCommandImpl.find(IdentityCommandImpl.java:161)
at com.ingenta.acs.core.IdentityCommandImpl.getIdentities(IdentityCommandImpl.java:67)
at com.ingenta.authentication.login.AcsLoginModule$AuthenticationCommand.getIdentities(AcsLoginModule.java:369)
at com.ingenta.acs.core.ejb.AcsBean.getIdentities(AcsBean.java:71)


The Login bean that's causing the exception is being found and used outside a transaction. Does this imply that the current CMP implementation relies on Transactions to ensure thread safety?

Andrew

Dain Sundstrom wrote:
I think the message is remove the read-only tags and you will not get the errors.

-dain

On Thursday, April 3, 2003, at 03:03 AM, Andrew May wrote:

My test case fails on 3.0.3 so it's not just a problem with 3.2.0. So for us that means we can't go live with either :( - unless we can find a suitable workaround.

Andrew





-------------------------------------------------------
This SF.net email is sponsored by: ValueWeb: Dedicated Hosting for just $79/mo with 500 GB of bandwidth! No other company gives more support or power for your dedicated server
http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to