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