tapestry-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From peter schröder (JIRA) <...@tapestry.apache.org>
Subject [jira] Commented: (TAPESTRY-2382) Possible deadlock in ExpressionCacheImpl (on _lock instance)
Date Wed, 23 Jul 2008 06:34:31 GMT

    [ https://issues.apache.org/jira/browse/TAPESTRY-2382?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12615895#action_12615895

peter schröder commented on TAPESTRY-2382:

we recently updated our webapplications to 4.1.5 and had to rollback the latest release, cause
the server crashes every time it got under some load.

> Possible deadlock in ExpressionCacheImpl (on _lock instance)
> ------------------------------------------------------------
>                 Key: TAPESTRY-2382
>                 URL: https://issues.apache.org/jira/browse/TAPESTRY-2382
>             Project: Tapestry
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: 4.1.3
>            Reporter: Alexander Gavrilov
>            Priority: Critical
>             Fix For: 4.1.6
> Under some circumstances deadlock occurs in the ExpressionCacheImpl. 
> 1)Thread  Ta opening a Page Pa. Page Pa does not bound  to the current request  cycle,
so new Instance requested from PageSource and current thread enter to the  synchronized _pool.borrowObject(key)

> 2) At this time thread Tb render page Pb, and for some property evaluates expression
binding. So ExpressionCacheImpl's _lock locked by thread Tb. Result of expression evaluation
is a reference to the Page Pc instance, which is not bound to the current thread, so new Instance
requested from PageSource and current thread tried to enter to the  synchronized _pool.borrowObject(key)
which is locked by Ta. 
> 3) Thread Ta worked creating new Page Pa Instance, which is not exists in the pool, so
a new Page instance should be created. In the proccess of parsing page loader try to evaluate
expression binding and try to lock a ExpressionCacheImpl's _lock, which is locked by thread
> 4) Whe have a deadlock, so no new page instance and expression could be created and evaluated.

> This causes a serios problems while  system  startup, so we need to restart our app many
times, untill it warmed up.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

To unsubscribe, e-mail: dev-unsubscribe@tapestry.apache.org
For additional commands, e-mail: dev-help@tapestry.apache.org

View raw message