<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<body link="#355491" alink="#4262a1" vlink="#355491" style="background: #e2e2e2; margin: 0; padding: 20px;">

<div>
        <table cellpadding="0" bgcolor="#FFFFFF" border="0" cellspacing="0" style="border: 1px solid #dadada; margin-bottom: 30px; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                <tbody>
                        <tr>

                                <td>

                                        <table border="0" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" style="border: solid 2px #ccc; background: #dadada; width: 100%; -moz-border-radius: 6px; -webkit-border-radius: 6px;">
                                                <tbody>
                                                        <tr>
                                                                <td bgcolor="#000000" valign="middle" height="58px" style="border-bottom: 1px solid #ccc; padding: 20px; -moz-border-radius-topleft: 3px; -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 5px; -webkit-border-top-left-radius: 5px;">
                                                                        <h1 style="color: #333333; font: bold 22px Arial, Helvetica, sans-serif; margin: 0; display: block !important;">
                                                                        <!-- To have a header image/logo replace the name below with your img tag -->
                                                                        <!-- Email clients will render the images when the message is read so any image -->
                                                                        <!-- must be made available on a public server, so that all recipients can load the image. -->
                                                                        <a href="http://community.jboss.org/index.jspa" style="text-decoration: none; color: #E1E1E1">JBoss Community</a></h1>
                                                                </td>

                                                        </tr>
                                                        <tr>
                                                                <td bgcolor="#FFFFFF" style="font: normal 12px Arial, Helvetica, sans-serif; color:#333333; padding: 20px;  -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 5px; -webkit-border-bottom-left-radius: 5px;"><h3 style="margin: 10px 0 5px; font-size: 17px; font-weight: normal;">
    Duplicate request threads are received at JBoss during Load Testing only for some value of maxThreads
</h3>
<span style="margin-bottom: 10px;">
    created by <a href="http://community.jboss.org/people/rupesh.bhadeshiya">Rupesh Bhadeshiya</a> in <i>Performance Tuning</i> - <a href="http://community.jboss.org/message/568481#568481">View the full discussion</a>
</span>
<hr style="margin: 20px 0; border: none; background-color: #dadada; height: 1px;">

<div class="jive-rendered-content"><p>Hi.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>(1) We are getting Duplicate http requests / threads in JBoss when carrying out Load Testing for below configuration/details:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Concurrent Load Test Requests Sent:<br/> - 100 (i.e. 100 concurrent users/threads)<br/> - Software Used is: Grinder tool</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>App Server: JBoss:<br/> - version: 5.1.0.GA AS, Non clustered<br/> - maxThreads: default (which is 200)<br/> - Xmx = Xmx = 1024m (Total System RAM is 2GB)<br/> - Database Connection Pool: Min=50, Max=100</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Database: MySQL:<br/>&#160; - version: 5.0.40 Enterprise Server (GPL)</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Our Application Consists of:<br/>&#160; - an ear comprising:<br/>&#160;&#160; - a web application having an MVC framework (webwork)<br/> - several EJB applications as needed by web application</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Exception we are getting:</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>17:33:20,224 ERROR [JDBCExceptionReporter] Duplicate entry '1011287747835421-DEFAULT_USER' for key 2<br/>17:33:20,249 ERROR [AbstractFlushingEventListener] Could not synchronize database state with session<br/>org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update<br/> at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)<br/> at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)<br/> at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:249)<br/> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)<br/> at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)<br/> at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)<br/> at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)<br/> at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)<br/> at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)<br/> at org.hibernate.transaction.CacheSynchronization.beforeCompletion(CacheSynchronization.java:59)<br/> at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:101)<br/> at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:269)<br/> at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:89)<br/> at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)<br/> at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1423)<br/> at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:137)<br/> at com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:75)<br/> at org.jboss.tm.usertx.client.ServerVMClientUserTransaction.commit(ServerVMClientUserTransaction.java:162)<br/> at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1028)<br/> at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:732)<br/> at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:701)<br/> at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:321)<br/> at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:116)<br/> at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)<br/> at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)<br/> at com.csam.wsc.projects.jvl.wallet.lifecycle.WalletLifecycleServicesImpl$$EnhancerByCGLIB$$7dd95c8c.enrollWallet(&lt;generated&gt;)<br/> at com.csam.wsc.projects.jvl.enabling.action.WalletActivationAction.enroll(WalletActivationAction.java:159)<br/> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)<br/> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)<br/> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)<br/> at java.lang.reflect.Method.invoke(Method.java:597)<br/> at com.opensymphony.xwork.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:300)<br/> at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:166)<br/> at com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:35)<br/> at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)<br/> at com.csam.wsc.enabling.interceptor.UpgradeWalletInterceptor.intercept(UpgradeWalletInterceptor.java:100)<br/> at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)<br/> at com.csam.wsc.enabling.comms.interceptor.CommsBaseInterceptor.intercept(CommsBaseInterceptor.java:203)<br/> at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)<br/> at com.csam.wsc.services.messagebus.interceptor.CommsMessageBusProductionInterceptor.intercept(CommsMessageBusProductionInterceptor.java:38)<br/> at com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:164)<br/> at com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:116)<br/> at com.opensymphony.webwork.dispatcher.ServletDispatcher.serviceAction(ServletDispatcher.java:272)<br/> at com.opensymphony.webwork.dispatcher.ServletDispatcher.service(ServletDispatcher.java:237)<br/> at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br/> at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)<br/> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)<br/> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)<br/> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)<br/> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)<br/> at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)<br/> at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)<br/> at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)<br/> at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)<br/> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)<br/> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)<br/> at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)<br/> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)<br/> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)<br/> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)<br/> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)<br/> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)<br/> at java.lang.Thread.run(Thread.java:662)<br/>Caused by: java.sql.BatchUpdateException: Duplicate entry '1011287747835421-DEFAULT_USER' for key 2<br/> at com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:2007)<br/> at com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1443)<br/> at org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:774)<br/> at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)<br/> at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:242)<br/> ... 62 more</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>We have found that we have a user record created in database on server side with the said id (1011287747835421). Hence it is clear that there was another thread trying to create user record with same id and hence failing. We also found that in this case, there is one request from Load Testing client that was not served by server. We matched both the requests we sent from Load Testing client and those for which server processed them and found that in each such (Duplicate entry exception) case, our web application could receive one request less than total request sent by Load Testing client.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>(2) We also found that when we are incresing the maxThreads count to more value such as 500 or 700, we no more get the Duplicate request issue.</p><p>Can you please guide us what can be the issue?</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thanks in advance for any help on this matter.</p><p style="min-height: 8pt; height: 8pt; padding: 0px;">&#160;</p><p>Thanks &amp; Best Regards,<br/>Rupesh</p></div>

<div style="background-color: #f4f4f4; padding: 10px; margin-top: 20px;">
    <p style="margin: 0;">Reply to this message by <a href="http://community.jboss.org/message/568481#568481">going to Community</a></p>
        <p style="margin: 0;">Start a new discussion in Performance Tuning at <a href="http://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2078">Community</a></p>
</div></td>
                        </tr>
                    </tbody>
                </table>


                </td>
            </tr>
        </tbody>
    </table>

</div>

</body>
</html>