1 2 Previous Next 25 Replies Latest reply on Nov 30, 2009 8:00 PM by rossmills.ross_mills.intuit.com

    Concurrent call to conversation error when under load

    rossmills.ross_mills.intuit.com

      I have a seam app that runs fine with a single user.  However, the following error appears about once every minute or so when my app is load tested.  The error seems to occur randomly and on different pages.  I've seen lots of reports of this exception on the web, but have not yet seen a solution that works for me.  I'm at the point where I guess I'll need to download the seam code myself and figure out what the problem is.  Any help would be useful.  Below is the error I keep seeing in the seam.log.


      ERROR     [ajp-172.19.217.101-8009-16]     [2009-11-16 17:01:29]     swallowing exception
      org.jboss.seam.ConcurrentRequestTimeoutException: Concurrent call to conversation
           at org.jboss.seam.core.Manager.restoreAndLockConversation(Manager.java:641)
           at org.jboss.seam.core.Manager.restoreConversation(Manager.java:603)
           at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListener.java:392)
           at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListener.java:230)
           at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:196)
           at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:280)
           at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
           at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
           at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
           at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
           at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
           at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
           at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
           at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at com.echo.businesscenter.web.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at com.echo.businesscenter.web.filters.SQLInjectionFilter.doFilter(SQLInjectionFilter.java:108)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at com.echo.businesscenter.web.filters.SecurityFilter.doFilter(SecurityFilter.java:120)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
           at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
           at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
           at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
           at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
           at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
           at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
           at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
           at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
           at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
           at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
           at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
           at java.lang.Thread.run(Unknown Source)
      ERROR     [ajp-172.19.217.101-8009-16]     [2009-11-16 17:01:29]     handled and logged exception
      javax.servlet.ServletException
           at javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:532)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
           at org.jboss.seam.web.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:42)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:73)
           at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
           at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
           at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:390)
           at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:517)
           at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
           at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
           at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at com.echo.businesscenter.web.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at com.echo.businesscenter.web.filters.SQLInjectionFilter.doFilter(SQLInjectionFilter.java:108)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at com.echo.businesscenter.web.filters.SecurityFilter.doFilter(SecurityFilter.java:120)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
           at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
           at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
           at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
           at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
           at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
           at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
           at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
           at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
           at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
           at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
           at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:366)
           at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
           at java.lang.Thread.run(Unknown Source)
      Caused by: java.lang.IllegalArgumentException
           at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:166)
           at javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:49)
           at javax.faces.component.UISelectOne.matchValue(UISelectOne.java:164)
           at javax.faces.component.UISelectOne.validateValue(UISelectOne.java:137)
           at javax.faces.component.UIInput.validate(UIInput.java:867)
           at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
           at javax.faces.component.UIInput.processValidators(UIInput.java:666)
           at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
           at javax.faces.component.UIForm.processValidators(UIForm.java:229)
           at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1033)
           at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:439)
           at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
           at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
           at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
           at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
           at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
           at javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
           ... 54 more
      

        • 1. Re: Concurrent call to conversation error when under load
          rossmills.ross_mills.intuit.com

          I forgot to mention I am using Seam 2.2.0.GA

          • 2. Re: Concurrent call to conversation error when under load
            v.lukoyanov

            The most common situation when I saw this error was extensive use of <a4j:support> tag with action parameter.


            If this is the case consider adding <a4j:queue> to your forms.
            Also you can post your code, may be it has another issue.


            ----------

            My website

            • 3. Re: Concurrent call to conversation error when under load
              rossmills.ross_mills.intuit.com

              Thanks for the reply.  I'm adding some more information about the app and am including some of the code.


              The app has a left menu that appears on every page.  When a link on the menu
              is clicked, the current conversation is ended and a new one is started.


              Here is one of the menu links...


              <h:commandLink id="bc_901" action="#{welcomeActionImpl.selectMenuOption}">
                       <f:param name="tgtPage" value="menuOptTranReview" />
                       <f:param name="tgtPanel" value="reportCenter" />
                       <f:param name="tgtLink" value="transReviewLink" />
                    <span style="display: block;">
                        <h:outputText value="#{messages['WEB-INF/templates/ui/menu.xhtml/transactionReview']}"/>
                    </span>
              </h:commandLink>
              



              welcomeActionImpl.selectMenuOption returns menuOptTranReview which triggers this rule


              <rule if-outcome="menuOptTranReview">
                 <end-conversation />   
                 <redirect view-id="/restricted/reports/tranReviewForm.xhtml" >
                     <param name="conversationPropagation" value="#{'none'}"/>
                 </redirect>
              </rule>
              



              in the past, I've written the rule like this, but the behaviour was the same


              <rule if-outcome="menuOptTranReview">
                 <end-conversation before-redirect="true" root="true"/>   
                 <redirect view-id="/restricted/reports/tranReviewForm.xhtml" />
              </rule>
              



              A redirect occurs which causes a new conversation to be started


              <page view-id="/restricted/reports/tranReviewForm.xhtml">
                 <begin-conversation join="true" />
                 <navigation>
                     <rule if-outcome="tranReview">
                         <render view-id="/restricted/reports/tranReview.xhtml" />
                     </rule>
                 </navigation>
              </page>
              



              After thinking about this a little more, I'm starting to realize that when the error occurs, it seems to always
              be right after one of these menu clicks - when the old conversation is ended and a new conversation is started.  I'm not 100%
              sure of this, but I can't think of a time when the error occurred anywhere else.  In other words, I can't remember this
              error occurring when the current conversation was continued to the next page.


              As far as the possibility that this might be related to a4j:support, tranReviewForm.xhtml (which sometimes gets this error) does
              not have any a4j:support tags.  I've also captured all the traffic when tranReviewForm.xhtml is displayed and see no AJAX traffic between
              the browser and the server when tranReviewForm.xhtml is displayed.

              • 4. Re: Concurrent call to conversation error when under load
                rossmills.ross_mills.intuit.com

                It looks like the writers of this code did think it was 100% thread safe.  I'm still trying to understand the Seam source, but these comments found in the Manager class make me suspect that the Manager locking strategy might have something to do with it. 


                From line 119:


                // if we could not acquire the lock, someone has left a
                // garbage lock lying around
                // the reason garbage locks can exist is that we don't
                // require a servlet filter to
                // exist - but if we do use SeamExceptionFilter, it will
                // clean up garbage and this
                // case should never occur
                
                // NOTE: this is slightly broken - in theory there is a
                // window where a new request
                // could have come in and got the lock just before us but
                // called touch() just
                // after we check the timeout - but in practice this would
                // be extremely rare,
                // and that request will get an
                // IllegalMonitorStateException when it tries to
                // unlock() the CE
                



                From line 618:


                // do this ASAP, since there is a window where conversationTimeout() might  
                // try to destroy the conversation, even if he cannot obtain the lock!
                




                I'll continue to investigate this...

                • 5. Re: Concurrent call to conversation error when under load
                  asookazian

                  are you using any AJAX tags or RF tags in that facelet (e.g. a suggestionBox which fires many successive ajax requests onkeyup event)?  There is a concurrent-request-timeout and a4j:queue (as well as global default queue) that may help out with this problem.  Unfortunately, I'm not sure exactly what the root cause is...


                  <core:manager concurrent-request-timeout="500" 
                                   conversation-timeout="120000" 
                                   conversation-id-parameter="cid"/>



                  try upping the CRT value above to 1 or 2 secs to see if it makes any difference.


                  read this: http://seamframework.org/Documentation/IGetTheConversationEndedTimedOutOrWasProcessingAnotherRequestWithAJAX

                  • 6. Re: Concurrent call to conversation error when under load
                    asookazian

                    Sorry, Ross.  Just noticed this important detail: However, the following error appears about once every minute or so when my app is load tested.


                    I don't have any experience load testing a Seam app (yet).  Anybody else can help?


                    btw, what tool/framework are you using for your load testing?  posting your config may help...


                    • 7. Re: Concurrent call to conversation error when under load
                      asookazian

                      http://seamframework.org/Community/ConcurrentRequestTimeoutExceptionWithOnlyOneConversation



                      However carefully you design your application to queue concurrent requests to your conversational component, there is a risk that the server will become overloaded and be unable to process all the requests before the request will have to wait longer than the concurrent-request-timeout.

                      http://docs.jboss.com/seam/2.2.0.GA/reference/en-US/html/conversations.html#d0e6574


                      how many requests/min and how many sessions is your load test simulating??


                      HTH

                      • 8. Re: Concurrent call to conversation error when under load
                        rossmills.ross_mills.intuit.com

                        Thanks Arbi - good to hear from you.


                        I've seen this suggestion about components.xml and have already tried adjusting these values.  The error still occurred.


                        This error occurs on pages that have no AJAX components.  To verify, I've captured traffic between the browser and the server when the page is loaded, while the user is entering data and after the page has been submitted.  At no time were AJAX calls submitted to the server.


                        As far as load testing, it is being done with Silk Performer.  The load test uses 24 simultaneous users.  Each user spends about 10 seconds on a page before continuing to the next page.  Pages generally load in less than 1 second.  All pages load in 3 seconds or less. 


                        The test users are divided up into 4 groups.  Each group focuses on a specific area of the app.  So when the tranReviewForm.xhtml page generated an error, there were up to 6 concurrent users hitting that page and other pages related to it.


                        My approach right now is to focus on the Seam core classes and try to monitor the locking behavour.

                        • 9. Re: Concurrent call to conversation error when under load
                          asookazian

                          Ross Mills wrote on Nov 18, 2009 00:34:
                          The load test uses 24 simultaneous users. 

                          That's very minimal even in a non-clustered envmt.  So it's not an excessive load as the root cause.



                          My approach right now is to focus on the Seam core classes and try to monitor the locking behavour.

                          You can try stepping thru the Seam core API but I'm at a loss right now.


                          Anybody else?  Would you JBoss core guys answer a post on the Seam forum for once instead of being so stuck in the Weld forum?  Esp. now that 299 is final.  This is a particularly interesting question/problem....


                          • 11. Re: Concurrent call to conversation error when under load
                            rossmills.ross_mills.intuit.com

                            I ran the load test again.  Here's a snippet from the seam log.  Notice that 3 separate threads restore conversation 392 and a 4th thread stores it - all at pretty much the same time.  What are some possible reasons for so many threads to converge on this one conversation like this?


                            DEBUG   [ajp-172.19.217.101-8009-15]    [2009-11-17 17:01:42]   No stored conversation
                            DEBUG   [ajp-172.19.217.101-8009-15]    [2009-11-17 17:01:42]   Discarding conversation state: 6588
                            DEBUG   [ajp-172.19.217.101-8009-20]    [2009-11-17 17:01:42]   No stored conversation
                            DEBUG   [ajp-172.19.217.101-8009-20]    [2009-11-17 17:01:42]   Discarding conversation state: 6589
                            DEBUG   [ajp-172.19.217.101-8009-22]    [2009-11-17 17:01:42]   No stored conversation
                            DEBUG   [ajp-172.19.217.101-8009-28]    [2009-11-17 17:01:42]   Discarding conversation state: 6587
                            DEBUG   [ajp-172.19.217.101-8009-22]    [2009-11-17 17:01:42]   Discarding conversation state: 6590
                            DEBUG   [ajp-172.19.217.101-8009-8]     [2009-11-17 17:01:42]   Storing conversation state: 392
                            DEBUG   [ajp-172.19.217.101-8009-23]    [2009-11-17 17:01:42]   No stored conversation
                            DEBUG   [ajp-172.19.217.101-8009-23]    [2009-11-17 17:01:42]   Discarding conversation state: 6591
                            DEBUG   [ajp-172.19.217.101-8009-18]    [2009-11-17 17:01:42]   Restoring conversation with id: 392
                            DEBUG   [ajp-172.19.217.101-8009-19]    [2009-11-17 17:01:42]   Restoring conversation with id: 6546
                            DEBUG   [ajp-172.19.217.101-8009-18]    [2009-11-17 17:01:42]   Storing conversation state: 392
                            DEBUG   [ajp-172.19.217.101-8009-39]    [2009-11-17 17:01:42]   Restoring conversation with id: 6574
                            DEBUG   [ajp-172.19.217.101-8009-11]    [2009-11-17 17:01:42]   Restoring conversation with id: 6572
                            DEBUG   [ajp-172.19.217.101-8009-17]    [2009-11-17 17:01:42]   Restoring conversation with id: 392
                            DEBUG   [ajp-172.19.217.101-8009-17]    [2009-11-17 17:01:42]   Storing conversation state: 392
                            DEBUG   [ajp-172.19.217.101-8009-1]     [2009-11-17 17:01:42]   Restoring conversation with id: 394
                            DEBUG   [ajp-172.19.217.101-8009-22]    [2009-11-17 17:01:42]   Restoring conversation with id: 392
                            DEBUG   [ajp-172.19.217.101-8009-28]    [2009-11-17 17:01:42]   No stored conversation
                            DEBUG   [ajp-172.19.217.101-8009-28]    [2009-11-17 17:01:42]   Discarding conversation state: 6592
                            DEBUG   [ajp-172.19.217.101-8009-8]     [2009-11-17 17:01:42]   No stored conversation
                            DEBUG   [ajp-172.19.217.101-8009-8]     [2009-11-17 17:01:42]   Discarding conversation state: 6593
                            DEBUG   [ajp-172.19.217.101-8009-23]    [2009-11-17 17:01:42]   Restoring conversation with id: 6554
                            

                            • 12. Re: Concurrent call to conversation error when under load
                              v.lukoyanov

                              I've got an idea.


                              What if we install an exception handler for ConcurrentRequestTimeoutException and in the catch block dump all threads similar to killall -3 java. It will produce traces for all threads and we can theoretically find who holds the lock.


                              ---------

                              My seam website

                              • 13. Re: Concurrent call to conversation error when under load
                                asookazian

                                When you config/run your load test, how does the Seam container know which conversationId is associated with that particular HTTP GET or POST request?  In the case of a GET it's a param in the URL.  In the case of a POST it's a hidden param IIRC.  Are you re-using conversationIds somehow?  What's happening seems illogical to me.


                                Perhaps your load tester and/or config is causing this problem??


                                It would be nice if the Seam distro booking app had a config with Apache JMeter so we know how to go about doing load testing in general with a Seam app.  Or if not a Seam distro example, then a wiki or video, etc.  Not sure if I've seen one yet.

                                • 14. Re: Concurrent call to conversation error when under load
                                  asookazian

                                  btw, what exactly is the seam log?  Is that a log4j config that you have to output "org.jboss.seam.*" logger output to a separate log for your app/server?

                                  1 2 Previous Next