9 Replies Latest reply on Aug 4, 2009 10:03 PM by joblini

    Concurrent call to conversation

      We have an environment as follows:
      JBoss eap 4.3
      JBoss ESB 4.3
      SEAM 2.1.2
      Solaris 8
      Oracle 10g

      When stress testing our application we get the following errors, warnings and caused bys:

      '
      2009-07-30 13:22:52,695 ERROR [org.jboss.seam.jsf.SeamPhaseListener] swallowing
      exception
      org.jboss.seam.ConcurrentRequestTimeoutException: Concurrent call to conversatio
      n
              at org.jboss.seam.core.Manager.restoreAndLockConversation(Manager.java:6
      41)
              at org.jboss.seam.core.Manager.restoreConversation(Manager.java:603)
              at org.jboss.seam.jsf.SeamPhaseListener.afterRestoreView(SeamPhaseListen
      er.java:392)
              at org.jboss.seam.jsf.SeamPhaseListener.afterServletPhase(SeamPhaseListe
      ner.java:230)
              at org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.jav
      a: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(Appl
      icationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at com.spss.filters.AccessFilter.doFilter(AccessFilter.java:127)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter
      .java:83)
              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:177)
              at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
              at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFil
      ter.java:380)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
              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.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
              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(Appl
      icationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
      lter.java:96)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
      alve.java:230)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
      alve.java:175)
              at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
      yAssociationValve.java:179)
              at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
      e.java:84)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:128)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:104)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC
      onnectionValve.java:157)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:109)
      e.java:84)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:128)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:104)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC
      onnectionValve.java:157)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
      a:241)
              at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
              at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpPro
      tocol.java:381)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44
      7)
              at java.lang.Thread.run(Thread.java:595)


      2009-07-30 13:22:52,784 WARN  [javax.enterprise.resource.webcontainer.jsf.lifecy
      cle] executePhase(PROCESS_VALIDATIONS 3,com.sun.faces.context.FacesContextImpl@1
      8b4b13) threw exception
      javax.faces.FacesException: //tdifms/abomtr/jboss/jboss-eap-4.3/jboss-as/server/
      abomv2-difms135/tmp/deploy/tmp13123abomv2-difms135.ear-contents/ABOM-exp.war/MET
      A-INF/basebean.xhtml @21,88 value="#{ejb3.forceFocus}": Target Unreachable, iden
      tifier 'ejb3' resolved to null
              at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValida
      tionsPhase.java:108)
              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)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:290)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at com.spss.filters.AccessFilter.doFilter(AccessFilter.java:127)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter
      .java:83)
              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:177)
              at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:267)
              at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFil
      ter.java:380)
              at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:507)
              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.web.HotDeployFilter.doFilter(HotDeployFilter.java:53)
              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(Appl
      icationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFi
      lter.java:96)
              at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
      icationFilterChain.java:235)
              at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
      ilterChain.java:206)
              at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
      alve.java:230)
              at org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
      alve.java:175)
              at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(Securit
      yAssociationValve.java:179)
              at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValv
      e.java:84)
              at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
      ava:128)
              at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
      ava:104)
              at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedC
      onnectionValve.java:157)
              at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineVal
      ve.java:109)
              at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.jav
      a:241)
              at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
              at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpPro
      tocol.java:381)
              at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:44
      7)
              at java.lang.Thread.run(Thread.java:595)
      Caused by: javax.el.PropertyNotFoundException: //tdifms/abomtr/jboss/jboss-eap-4
      .3/jboss-as/server/abomv2-difms135/tmp/deploy/tmp13123abomv2-difms135.ear-conten
      ts/ABOM-exp.war/META-INF/basebean.xhtml @21,88 value="#{ejb3.forceFocus}": Targe
      t Unreachable, identifier 'ejb3' resolved to null
              at com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.jav
      a:62)
              at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConverte
      dValue(HtmlBasicInputRenderer.java:81)
              at javax.faces.component.UIInput.getConvertedValue(UIInput.java:934)
              at javax.faces.component.UIInput.validate(UIInput.java:860)
              at javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
              at javax.faces.component.UIInput.processValidators(UIInput.java:666)
              at javax.faces.component.UIForm.processValidators(UIForm.java:229)
              at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewR
      oot.java:439)
              at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:23
      8)
              at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.ja
      va:455)
              at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValida
      tionsPhase.java:100)
      '

      We are using JBPM and the jpdl being stressed is:

      '
      <?xml version="1.0"?>
      <!--
        *********************************************************************
        *                        MAINTENANCE PERFORMED
        *********************************************************************
        *       
        * REL   SCR   PROGRAM  PTS   DATE       CODER        EXPLANATION OF CHANGES
        * 07B02 X0247 AFNONBOM 52788 2009-06-26 Joel Barr        Added End Conversation Call for the Conversation Ending Effort.
        *********************************************************************
      -->
      <pageflow-definition name="NONBOM"
                          xmlns="http://jboss.com/products/seam/pageflow"
                             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                             xsi:schemaLocation="http://jboss.com/products/seam/pageflow http://jboss.com/products/seam/pageflow-2.1.xsd">
           <start-page name="start" view-id="/secure/requisition/NonBom.xhtml" >
             <redirect />
             <transition to="start" />
             <transition name="indjon" to="indJonEval"/>
             <transition name="requisitionNav" to="requisitionNavEval" />
         </start-page>
         <decision name="requisitionNavEval" expression="#{nonbomaction.requisitionNav()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="NonBomActionResults" />
             <transition name="validation_failure" to="start" />
         </decision>
         <page name="NonBomActionResults" view-id="/secure/requisition/AFREQNResult.xhtml">
             <redirect />
             <transition name="viewOnHand" to="viewOnHand" />
             <transition name="viewCageCd" to="viewCageCd" />
             <transition name="sortchange" to="sortEval" />
             <transition name="return" to="start" />
             <transition name="requisition" to="requisitionEval" />
             <transition name="validation_failure" to="start" />
         </page>
         <page name="AFOHBAL" view-id="/secure/query/AFOHBALSResults.xhtml" back="enabled" no-conversation-view-id="/secure/requisition/NonBom.xhtml">
             <redirect />
             <transition name="return" to="NonBomActionResults" />
         </page>
         <page name="CAGECODE" view-id="/secure/requisition/CageCodes.xhtml" back="enabled" no-conversation-view-id="/secure/requisition/NonBom.xhtml">
             <redirect />
             <transition name="return"  to="NonBomActionResults" />
             <transition name="detail" to="detailCage" />      
             <transition name="viewchange" to="viewNavEval" />
             <transition name="success" to="CAGECODE" />
             <transition name="norows"  to="CAGECODE" />
             <transition name="failure" to="CAGECODE" />
         </page>
         <page name="INDJON" view-id="/secure/requisition/IndirectJons.xhtml" back="enabled" no-conversation-view-id="/secure/requisition/NonBom.xhtml">
             <redirect />
             <transition name="failure" to="INDJON" />
             <transition name="norows"  to="INDJON" />
             <transition name="success" to="INDJON" />
             <transition name="viewchange" to="viewNavEval" />
             <transition name="detail" to="detailJon" />
             <transition name="sortchange" to="sortEval" />
             <transition name="return" to="start" />
         </page>
         <page name="AFVIEW" view-id="/secure/query/AFVIEWPF.xhtml" back="enabled" no-conversation-view-id="/secure/requisition/AFREQ.xhtml" >
             <redirect />
             <transition to="AFVIEW" ></transition>
             <transition name="showView" to="viewEval"></transition>
             <transition name="return" to="viewchoice"></transition>
         </page>
         <decision name="detailJon" expression="#{indirectjonaction.detail()}">
              <transition name="abortOperation" to="return" />
             <transition name="detail_success" to="start" />
             <transition name="failure" to="INDJON" />
             <transition name="validation_failure" to="INDJON" />
         </decision>
         <decision name="detailCage" expression="#{cagecodeaction.detail()}">
              <transition name="abortOperation" to="return" />
             <transition name="detail_success" to="NonBomActionResults" />
             <transition name="failure" to="CAGECODE" />
             <transition name="validation_failure" to="CAGECODE" />
         </decision>
         <decision name="viewchoice" expression="#{reqButton}">
              <transition name="abortOperation" to="return" />
             <transition name="INDJON" to="INDJON" />
             <transition name="CAGECODE" to="CAGECODE" />
         </decision>
         <decision name="resultEval" expression="#{viewpintobeanaction.setUpView()}" >
             <transition name="abortOperation" to="return" />
             <transition name="success" to="viewchoice" />
             <transition name="failure" to="start" />
             <transition name="norows" to="start" />
             <transition name="validation_failure" to="return" />
         </decision>
         <decision name="requisitionEval" expression="#{nonbomaction.requisition()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="isNIMMSOnline" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
         <decision name="isNIMMSOnline" expression="#{nimmsstatusaction.getStatus()}" >
              <transition name="abortOperation" to="return" />
             <transition name="ONLINE" to="build411" />
             <transition name="OFFLINE" to="build711" />
             <transition name="Unable to access NIMMS Data Directory" to="reqError" />
         </decision>
         <decision name="viewIndirectJon" expression="#{nonbomaction.viewIndirectJon()}" >
              <transition name="abortOperation" to="return" />
             <transition name="validation_failure" to="start" />
             <transition name="success" to="indJonEval" />
         </decision>
         <decision name="indJonEval" expression="#{indirectjonaction.query()}">
              <transition name="abortOperation" to="return" />
             <transition name="failure" to="start" />
             <transition name="norows"  to="start" />
             <transition name="success" to="resultEval" />
         </decision>
         <decision name="viewOnHand" expression="#{nonbomaction.viewOnHand()}" >
             <transition name="abortOperation" to="return" />
             <transition name="validation_failure" to="NonBomActionResults" />
             <transition name="success" to="onHandEval" >
                 <action expression="#{onhandbalanceaction.popValues()}" />
             </transition>
         </decision>
         <decision name="viewCageCd" expression="#{nonbomaction.viewCageCd()}" >
             <transition name="abortOperation" to="return" />
             <transition name="validation_failure" to="NonBomActionResults" />
             <transition name="success" to="cageCdEval" />
         </decision>
         <decision name="viewNavEval" expression="#{viewpintobeanaction.viewchange()}" >
              <transition name="abortOperation" to="return" />
             <transition name="goto_view" to="AFVIEW" >
             </transition>      
         </decision>
         <decision name="viewEval" expression="#{viewpintobeanaction.showView()}" >
              <transition name="abortOperation" to="return" />
             <transition name="view_failure" to="AFVIEW" />
             <transition name="indirectjons.xhtml_view_success" to="INDJON" />
             <transition name="cagecodes.xhtml_view_success" to="CAGECODE" />
             <transition name="indirectjons.xhtml_view_failure" to="AFVIEW" />
             <transition name="cagecodes.xhtml_view_failure" to="AFVIEW" />      
         </decision>
         <decision name="onHandEval" expression="#{onhandbalanceaction.query()}" >
             <transition name="abortOperation" to="return" />
             <transition name="validation_failure" to="NonBomActionResults" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="norows" to="NonBomActionResults" />
             <transition name="success" to="AFOHBAL" />
         </decision>
         <decision name="cageCdEval" expression="#{cagecodeaction.query()}" >
             <transition name="abortOperation" to="return" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="norows" to="NonBomActionResults" />
             <transition name="success" to="resultEval" />
         </decision>
         <!-- Temporary hack because we do not have the path to NIMMS -->
         <page name="reqError" view-id="/UnderConstruction.xhtml">
             <redirect />
         </page>
         <decision name="build411" expression="#{mn411Factory.generateMN411Pojos()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="executeNIMMS411" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
         <decision name="executeNIMMS411" expression="#{mn411Executor.executeMN411()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="get411Results" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
          <decision name="get411Results" expression="#{afsglcrec.from411()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="setConversationData" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
         <decision name="build711" expression="#{mn711Factory.generateMN711Pojos()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="executeNIMMS711" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
         <decision name="executeNIMMS711" expression="#{mn711Executor.executeMN711()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="get711Results" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
          <decision name="get711Results" expression="#{afsglcrec.from711()}" >
             <transition name="abortOperation" to="return" />
             <transition name="success" to="setConversationData" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
         <decision name="setConversationData" expression="#{nonbomaction.setConversationData()}" >
             <transition name="abortOperation" to="return" />
             <transition name="success" to="displayResultToUser" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="validation_failure" to="NonBomActionResults" />
         </decision>
         <page name="displayResultToUser" view-id="/secure/requisition/NonBomResponse.xhtml">
             <end-conversation/>
         </page>
         <decision name="sortEval" expression="#{sortAction.sortNav()}" >
             <transition name="abortOperation" to="return" />
             <transition name="success" to="SORT" />
             <transition name="failure" to="NonBomActionResults" />
             <transition name="return" to="return" />
         </decision>
         <page name="SORT" view-id="/secure/sort/SORT.xhtml" back="enabled" no-conversation-view-id="/secure/requisition/NonBom.xhtml">
             <redirect />
             <transition name="sort" to="finishSortEval"/>
             <transition name="return" to="NonBomActionResults" />
         </page>
         <decision name="finishSortEval" expression="#{sortAction.sort()}" >
              <transition name="abortOperation" to="return" />
             <transition name="view_failure" to="SORT" />
             <transition name="afreqnresult.xhtml_success" to="sortReqQueryEval" />
             <transition name="indirectjons.xhtml_success" to="sortIndQueryEval" />
             <transition name="failure" to="SORT" />
             <transition name="success" to="sortIndQueryEval" />
             <transition name="return" to="return" />
         </decision>
         <decision name="sortReqQueryEval" expression="#{nonbomaction.sortQuery()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="NonBomActionResults" />
             <transition name="failure" to="start" />
             <transition name="norows" to="start" />
             <transition name="validation_failure" to="return" />
         </decision>
         <decision name="sortIndQueryEval" expression="#{nonbomaction.sortQuery()}" >
              <transition name="abortOperation" to="return" />
             <transition name="success" to="INDJON" />
             <transition name="failure" to="start" />
             <transition name="norows" to="start" />
             <transition name="validation_failure" to="return" />
         </decision>
         <decision name="return" expression="#{nonbomaction.resetBean()}">
             <transition name="abortOperation" to="return" />
             <transition name="success" to="start" />      
         </decision>
        
      </pageflow-definition>
      '

      We have the concurrent request timeout set like this in the components.xml

      '
      <core:manager concurrent-request-timeout="2000" />
      '

      Our stress test is run concurrently on 8 different client machines and calls this jpdl contiuously until halted or these errors occur.  Does anyone know what could be causing this and if so what to do to prevent this?

      Thanks
      Jerry
        • 1. Re: Concurrent call to conversation
          asookazian

          Do you have debug on?


          Like:

          <core:init jndi-pattern="@jndiPattern@" debug="true" distributable="@distributable@"/>



          If yes, turn it off and re-run your load tests...

          • 2. Re: Concurrent call to conversation
            Yes we have debug="false" set in components.xml.  We get these warnings, errors and caused bys with that setting.
            • 3. Re: Concurrent call to conversation
              joblini

              Hello Jerrold,


              Simply put, a request with the same conversation identifier is arriving on the server before the current request has completed processing. 


              What software are you using on the client to run the tests?  Does the script capture and submit the cid parameter?


              Regards, Ingo

              • 4. Re: Concurrent call to conversation
                dalebingham

                Hello, Ingo. This is Dale Bingham working with Jerry Eads.


                We are using a screen scraper program for lack of a better word. It captured data input and launches MS IE 6 to the web site and goes through a set of 6 screens on a requisition program. Entering data, getting data back, verifying, etc. and then finalizing the transaction.


                We have in our logs the conversation id of xxxxx number and it does not appear to have a duplicate ID show up. We also have a Conversation Listener out there to log and track all conversations to make sure we know when they are starting and ending and are tracking that while we stress test using that automated tool that launches IE.


                We appreciate all the help you can give. This has been kicking our tail for a few weeks as we narrow down what it is NOT versus what it is.


                Dale Bingham

                • 5. Re: Concurrent call to conversation
                  joelb

                  Hello Ingo,


                  This is Joel Barr working with Jerry Eads and Dale,
                  I appologize in advance for the following Information Overload and I appreciate any help you can give.


                  This exception that we are seeing Error1: ConcurrentRequestTimeoutException only appears when we stress test the application and when we are using Seam 2.1.1.  We only saw the following error when we were running with Seam Version 2.0.0.


                  Error2:
                  WARN javax.enterprise.resource.webcontainer.jsf.lifecycle executePhase(PROCESS VALIDATIONS 3,com.sun.faces.context.FacesContextImpl threw exception javax.faces.FacesException: //tdifms/abomtr/jboss/jboss-eap-4.3/jboss-as/server/abomv2-difms135/tmp/deploy/tmp13123abomv2-difms135.ear-contents/ABOM-exp.war/META-INF/basebean.xhtml @21,88 value {ejb3.forceFocus}: Target Unreachable, identifier 'ejb3' resolved to null


                  I believe that the two errors are related to the same issue. Whenever we do get the Error1:ConcurrentRequestTimeoutException this is followed by an attempt to Render the page followed by Error 2. You stated in your reply to Jerry you believed that a “request with the same conversation identifier is arriving on the server before the current request has completed processing”.


                  We have a Conversation Observer (using @Observer(value org.jboss.seam.endConversation) @Observer(value org.jboss.seam.beginConversation))set up which is recording when a conversation begins and ends, the user, the Session HashCode, and the Conversation ID. We have not yet observed any situation where a conversation was started using a Conversation ID that was in progress. But I think that perhaps my Observer may only record Conversations that are ok to begin and have begun.
                   
                  Based on what you are saying and documentation I have read it seems that our stress test is causing requests for processing to queue up so fast that we are getting an ID that has already been taken.  1) Am I correct?


                  We found the following documentation located at this link. http://www.redhat.com/docs/en-US/JBoss Enterprise Application Platform/4.3.0.cp03 fp01/html/Seam Reference Guide/ch08s11.html which references Seam documentation 7.11. Concurrent calls to conversational components.


                  After reading this I came up with a picture of what might be going on.  The Server has the Queue of requests.  During our stress test the requests stack up on the queue waiting to be processed. 


                  2) Am I correct in my understanding that the requests would be assigned a conversation/conversation ID when they are put on the queue? The time-out discussed here in the documentation is the amount of time the request will sit on the queue prior to issuing the error message ConcurrentRequestTimeoutException. 


                  3)Is the reason why the  request on the queue timed out is that it had a Conversation ID that was already designated? 


                  4)Could the other requests that have the same Conversation ID be being processed by the server (i.e. I can see that it’s conversation has begun with my conversation observer) or could both conflicting requests be on the request queue and neither one has been processed?
                  As Dale mentioned in his posting, we have not seen evidence that we have conversations using the same Conversation ID. One thing that does not make sense after reviewing our jpdl.xml file and the logs is that the ERRORs (1 and 2) always occur right after the end of a Conversation.  The last decision/process in conversation ends without an error. The Conversation ends. We then see the Error 1 followed by an attempt to render the page.  We then see Error 2. It always seems to occur at the end of the Conversation (when we were using end-conversation to end the conversation in our jpdl.xml). We know that this error is independent of our ending the conversation because my co-workers were able to see the errors with the end-conversation tag removed.


                  5)Is there a reason why we would only see this error at the end of a conversation?  One other thing we have observed is that once we get the first Error 1: ConcurrentRequestTimeoutException all the other test jobs error out with the same error.  6) Do you have a reason why we would see this?  7)Is this because the requests have all stacked up with the same Conversation ID?



                  Thanks again for your help!


                  Joel Barr

                  • 6. Re: Concurrent call to conversation
                    asookazian

                    Wow. this is the most complicated thread i've seen on this forum.


                    Are you using a4j/richfaces components?  If yes, what version of RF?  If 3.3.0 or higher, are you using the new <a4j:queue> tag?


                    http://www.jboss.org/community/wiki/DesignofRichFacesa4jqueue



                    So the lesson is that to avoid contention for a conversation on the server, you should serialize requests for the same conversation on the client as well.

                    http://seamframework.org/Documentation/IGetTheConversationEndedTimedOutOrWasProcessingAnotherRequestWithAJAX

                    • 7. Re: Concurrent call to conversation
                      tariqahsan
                      We are not using Ajax4Jsf. We are not using ICEFaces either. Along with other stuff plain old JSF. According the post -

                      http://seamframework.org/Documentation/IGetTheConversationEndedTimedOutOrWasProcessingAnotherRequestWithAJAX


                      mentions this -

                      An even better solution is keep the concurrent request timeout short and make the submit button also use an Ajax request. Ajax4jsf is smart enough to follow the navigation rules even if the request is made using Ajax.
                      [code]
                      <a:commandButton action="#{entityHome.update}" .../> [/code]

                      So the lesson is that to avoid contention for a conversation on the server, you should serialize requests for the same conversation on the client as well.

                      ...

                      Note that this problem is not often seen when using ICEFaces since the ICEfaces framework synchronizes operations during a server-initiated render call to ensure that the server-side DOM remains uncorrupted.


                      Do you think we would have a better chance solving our problem by using either ajax4jsf or icefaces?

                      • 8. Re: Concurrent call to conversation
                        asookazian

                        Post code for a JSF page that is part of the root cause.  And elaborate on exactly what your stress testing software is doing (how many simultaneous requests per second, etc.)  Have you tried changing the parameters of your stress test to see if different scenarios reproduce or not?

                        • 9. Re: Concurrent call to conversation
                          joblini

                          Hello, sorry for the delay in replying.


                          Yes, errors 1 and 2 are related.  It is typical to see error 2 (Target Unreachable) following error 1 (ConcurrentRequestTimeoutException).


                          I found that, when performing stress testing using the jMeter tool, it was necessary to program the scripts to capture and propagate both the cid and the viewstate parameters.


                          In case you have not done so yet, be sure to set log4j to trace for org.jboss.seam.  This will generate a lot of output, so setting a breakpoint at


                          org.jboss.seam.core.Manager.restoreAndLockConversation(Manager.java:6
                          41)



                          should help to see exactly what is going wrong (the source files for Seam are provided with the distribution)


                          I don't know if this applies here, but something to be aware of is that the end conversation directive, by default, does not end the conversation instantly, but rather, after any subsequent redirect has completed.  The reasoning behind this is to preserve any error messages which should be displayed to the user.  You may want to experiment with the before-redirect=true attribute, which should immediately end the conversation.