[seam-issues] [JBoss JIRA] (JBSEAM-5103) CLONE - Conversation after @End method process does not release ConversationEntry lock

Marek Novotny (JIRA) jira-events at lists.jboss.org
Mon May 27 04:33:08 EDT 2013


     [ https://issues.jboss.org/browse/JBSEAM-5103?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Marek Novotny moved JBPAPP-10765 to JBSEAM-5103:
------------------------------------------------

              Project: Seam 2  (was: JBoss Enterprise Application Platform 4 and 5)
                  Key: JBSEAM-5103  (was: JBPAPP-10765)
             Workflow: GIT Pull Request workflow   (was: jira)
    Affects Version/s: 2.3.0.Final
                           (was: EAP_EWP 5.1.2)
          Component/s: Core
                           (was: Seam2)
             Security:     (was: Public)
        Fix Version/s: 2.3.1.CR1
                           (was: EAP_EWP 5.3.0)
       Docs QE Status:   (was: NEW)

    
> CLONE - Conversation after @End method process does not release ConversationEntry lock
> --------------------------------------------------------------------------------------
>
>                 Key: JBSEAM-5103
>                 URL: https://issues.jboss.org/browse/JBSEAM-5103
>             Project: Seam 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.3.0.Final
>            Reporter: Eiichi Nagai
>            Assignee: Marek Novotny
>             Fix For: 2.3.1.CR1
>
>
> ConversationEntry after @End method process is removed by endRequest[1] process and does not release lock. Therefore, when there is a request duplicate with the same Conversation ID by F5 operation etc, since a lock is not released, the request has to wait till the concurrent-request-timeout even if pre-request is already completed.
> {code:title=[1] org.jboss.seam.core.Manager.java|borderStyle=solid}
> 441:   /**
> 442:    * Touch the conversation stack, destroy ended conversations, 
> 443:    * and timeout inactive conversations.
> 444:    */
> 445:   public void endRequest(Map<String, Object> session)
> 446:   {
> 447:      if ( isLongRunningConversation() )
> 448:      {
> 449:         if ( log.isDebugEnabled() )
> 450:         {
> 451:            log.debug("Storing conversation state: " + getCurrentConversationId());
> 452:         }
> 453:         touchConversationStack( getCurrentConversationIdStack() );
> 454:      }
> 455:      else
> 456:      {
> 457:         if ( log.isDebugEnabled() )
> 458:         {
> 459:            log.debug("Discarding conversation state: " + getCurrentConversationId());
> 460:         }
> 461:         //now safe to remove the entry
> => 462:         removeCurrentConversationAndDestroyNestedContexts(session);
> 463:      }
> 464:
> 465:      /*if ( !Init.instance().isClientSideConversations() ) 
> 466:      {*/
> 467:         // difficult question: is it really safe to do this here?
> 468:         // right now we do have to do it after committing the Seam
> 469:         // transaction because we can't close EMs inside a txn
> 470:         // (this might be a bug in HEM)
> 471:         Manager.instance().conversationTimeout(session);
> 472:      //}
> 473:   }
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira


More information about the seam-issues mailing list