[ 
https://jira.jboss.org/browse/JBSEAM-2419?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12540929#action_12540929
 ] 

Denis Forveille commented on JBSEAM-2419:
-----------------------------------------

Ondrej,
Sorry but I'm not in position to perform such a test as we need to setup a 
stress test and that takes time and resources to do that. We do this from time 
to time when a new version of one of our app is about to be pushed in 
production but it will not be the case in the coming months.
As what you say about deadlock, it is true if you take into account only the 
lock in Component
If some thread takes a reentrant lock in the BI associated with a component "A" 
then take another reentrant lock in Component to instantiate ANY factory, and 
another thread do it in the reverse order, ie ake a lock in Component to 
instantiate ANY factory and to do that tries to go through the lock in Bi 
associated with Component "A", you're done
And I'm 90%sure that it is quite easy to have this kind of components
So, I continue to think that the path may correct JBSEAM-4669 but is causing 
much more harm. 

> IAE: factory method with defined scope outjected a value: guestRole
> -------------------------------------------------------------------
>
>                 Key: JBSEAM-2419
>                 URL: https://jira.jboss.org/browse/JBSEAM-2419
>             Project: Seam
>          Issue Type: Bug
>          Components: Core
>            Reporter: Christian Bauer
>            Assignee: Ondrej Skutka
>            Priority: Blocker
>             Fix For: 2.2.1.CR2
>
>         Attachments: JBSEAM-2419.patch, jbseam-2419.zip
>
>
> I can see this on the log on seamframework.org but can't reproduce it:
> java.lang.IllegalArgumentException: factory method with defined scope 
> outjected a value: guestRole
>         at 
> org.jboss.seam.Component.handleFactoryMethodResult(Component.java:1953)
>         at 
> org.jboss.seam.Component.getInstanceFromFactory(Component.java:1927)
>         at org.jboss.seam.Component.getInstance(Component.java:1863)
>         at org.jboss.seam.Component.getInstance(Component.java:1840)
>         at org.jboss.seam.Component.getInstance(Component.java:1834)
>         at 
> org.jboss.seam.wiki.core.action.Authenticator.getGuestAccessLevel(Authenticator.java:199)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
>         at 
> org.jboss.seam.intercept.RootInvocationContext.proceed(RootInvocationContext.java:31)
>         at 
> org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:56)
>         at 
> org.jboss.seam.transaction.RollbackInterceptor.aroundInvoke(RollbackInterceptor.java:31)
>         at 
> org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
>         at 
> org.jboss.seam.core.BijectionInterceptor.aroundInvoke(BijectionInterceptor.java:46)
>         at 
> org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
>         at 
> org.jboss.seam.core.MethodContextInterceptor.aroundInvoke(MethodContextInterceptor.java:42)
>         at 
> org.jboss.seam.intercept.SeamInvocationContext.proceed(SeamInvocationContext.java:68)
>         at 
> org.jboss.seam.intercept.RootInterceptor.invoke(RootInterceptor.java:107)
>         at 
> org.jboss.seam.intercept.JavaBeanInterceptor.interceptInvocation(JavaBeanInterceptor.java:166)
>         at 
> org.jboss.seam.intercept.JavaBeanInterceptor.invoke(JavaBeanInterceptor.java:102)
>         at 
> org.jboss.seam.wiki.core.action.Authenticator_$$_javassist_9.getGuestAccessLevel(Authenticator_$$_javassist_9.java)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>         at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>         at java.lang.reflect.Method.invoke(Method.java:585)
>         at org.jboss.seam.util.Reflections.invoke(Reflections.java:21)
>         at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:125)
>         at org.jboss.seam.Component.callComponentMethod(Component.java:2082)
>         at 
> org.jboss.seam.Component.getInstanceFromFactory(Component.java:1926)
>         at org.jboss.seam.Component.getInstance(Component.java:1863)
>         at org.jboss.seam.Component.getInstance(Component.java:1840)
>         at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:55)
>         at org.jboss.seam.Namespace.getComponentInstance(Namespace.java:50)
>         at 
> org.jboss.seam.el.SeamELResolver.resolveBase(SeamELResolver.java:166)
>         at org.jboss.seam.el.SeamELResolver.getValue(SeamELResolver.java:53)
>         at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
>         at org.jboss.el.parser.AstIdentifier.getValue(AstIdentifier.java:44)
>         at 
> org.jboss.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
>         at org.jboss.seam.core.Expressions$1.getValue(Expressions.java:111)
>         at 
> org.jboss.seam.persistence.HibernatePersistenceProvider.enableFilter(HibernatePersistenceProvider.java:205)
>         at 
> org.jboss.seam.persistence.ManagedPersistenceContext.initEntityManager(ManagedPersistenceContext.java:88)
>         at 
> org.jboss.seam.persistence.ManagedPersistenceContext.getEntityManager(ManagedPersistenceContext.java:108)
> This is thrown from the FeedServlet.
> The code doesn't do what the exception says it is doing:
>     /**
>      * Assigns the context variable 'currentAccessLevel' when no user is 
> logged in.
>      * @return Integer Guest access level.
>      */
>     @Factory(value = "currentAccessLevel", scope = ScopeType.SESSION, 
> autoCreate = true)
>     public Integer getGuestAccessLevel() {
>         return ((Role)Component.getInstance("guestRole")).getAccessLevel();
>     }
> This has to be investigated further.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://jira.jboss.org/secure/Administrators.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

Reply via email to