Marek Schmidt created JBSEAM-4997:
-------------------------------------
Summary: Deadlock with components using factories of each other
Key: JBSEAM-4997
URL: https://issues.jboss.org/browse/JBSEAM-4997
Project: Seam 2
Issue Type: Bug
Components: Core
Affects Versions: 2.3.0.BETA2
Environment: Seam 2.3.0.CR1-SNAPSHOT r14979, AS 7.1.2.Final
Reporter: Marek Schmidt
Assignee: Marek Novotny
The patch in JBSEAM-4861 introduced a potential deadlock with components using
each other factories, such as in the following sample:
{code}
@Scope(ScopeType.APPLICATION)
@Name("factoryLock.knitFactory")
public static class KnitFactory
{
@Factory(value="factoryLock.knitPurl", scope=ScopeType.SESSION)
public String getDoubleKnit() {
return "knit(" + (String)Component.getInstance("factoryLock.purl") + ")";
}
@Factory(value="factoryLock.knit", scope=ScopeType.SESSION)
public String getKnit() {
return "knit";
}
}
@Scope(ScopeType.APPLICATION)
@Name("factoryLock.purlFactory")
public static class PurlFactory
{
@Factory(value="factoryLock.purlKnit", scope=ScopeType.SESSION)
public String getDoublePurl() {
return "purl(" + (String)Component.getInstance("factoryLock.knit") + ")";
}
@Factory(value="factoryLock.purl", scope=ScopeType.SESSION)
public String getPurl() {
return "purl";
}
}
{code}
this may cause a deadlock if two different requests in the same session ask for
#{factoryLock.knitPurl} and #{factoryLock.purlKnit} respectively.
The problem is that different threads may lock the components in different
order.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira
_______________________________________________
seam-issues mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/seam-issues