[ 
https://jira.nuxeo.org/browse/NXP-4701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anahide Tchertchian updated NXP-4701:
-------------------------------------

    Attachment: jboss-seam-2.0.3.CR1-NX3.jar
                jboss-seam-2.0.3.CR1.NX3.diff

Attaching diff file for jboss-seam, and patched jboss-seam-2.0.3.CR1-NX3 jar.
This jar should replace jboss-seam-2.0.3.CR1-NX2.jar 
$JBOSS/server/default/deploy/nuxeo.ear/lib/

> Fix thread blocked by seam conversation handling
> ------------------------------------------------
>
>                 Key: NXP-4701
>                 URL: https://jira.nuxeo.org/browse/NXP-4701
>             Project: Nuxeo Enterprise Platform
>          Issue Type: Bug
>    Affects Versions: 5.3 GA
>            Reporter: Anahide Tchertchian
>            Assignee: Anahide Tchertchian
>            Priority: Major
>             Fix For: 5.3.1
>
>         Attachments: jboss-seam-2.0.3.CR1-NX3.jar, 
> jboss-seam-2.0.3.CR1.NX3.diff, stack-NXP-4701-1.txt, stack-NXP-4701-2.txt
>
>
> When producing certains errors (reproduced with any error thrown during the 
> JSF invoke application phase), a reetrant lock is placed on current 
> conversation, for current thread, that is never released.
> Next locks with same thread and conversation go ok, since lock is already 
> acquired for current thread.
> Problem becomes visible when another thread tries to acquire the lock for the 
> same conversation: thread is blocked as it cannot acquire the lock still held 
> by another thread.
> Reproducing the problem is quite difficult, as it's not possible to force 
> usage of another thread. Reducing the max number of tomcat threads to "2" 
> helps (in server/default/deploy/jboss-web.deployer/server.xml), as well as 
> using jmeter usage to get more requests.
> Spotting the problem is easier, patching ConversationEntry method in 
> jboss-seam to get more logs:
> public boolean lock() //not synchronized!
>    {
>       try
>       {
>           boolean res = lock.tryLock( 
> Manager.instance().getConcurrentRequestTimeout(), TimeUnit.MILLISECONDS );
>           if (!res) {
>               log.debug(id+ " " + Thread.currentThread().getId() + " 
> lockfailed "+ lock.getHoldCount()+ " "+lock.isHeldByCurrentThread());
>           } else {
>               log.debug(id+ " " + Thread.currentThread().getId() + " lock "+ 
> lock.getHoldCount()+ " "+lock.isHeldByCurrentThread());
>           }
>           return res;
>       }
>       catch (InterruptedException ie)
>       {
>          throw new RuntimeException(ie);
>       }
>    }
> These logs show that the hold count is incremented by 1 at each error, and 
> does not decrease.
> There have been some seam related issues in version 2.0.3 CR1:
> https://jira.jboss.org/jira/browse/JBSEAM-3680
> https://jira.jboss.org/jira/browse/JBSEAM-1277
> Applying the patch given in JBSEAM-1277 solves the problem: 
> http://fisheye.jboss.org/changelog/Seam/?cs=9096

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.nuxeo.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        
_______________________________________________
ECM-tickets mailing list
[email protected]
http://lists.nuxeo.com/mailman/listinfo/ecm-tickets

Reply via email to