[jboss-jira] [JBoss JIRA] Created: (EJBTHREE-1547) ProxyFactory remains usable during SFSB container shutdown

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Fri Oct 24 20:20:31 EDT 2008


ProxyFactory remains usable during SFSB container shutdown
----------------------------------------------------------

                 Key: EJBTHREE-1547
                 URL: https://jira.jboss.org/jira/browse/EJBTHREE-1547
             Project: EJB 3.0
          Issue Type: Bug
          Components: core
    Affects Versions: 1.0.0-Beta5
            Reporter: Brian Stansberry


During a testing session with a service that was using 4 threads to continually create SFSBs, I attempted to undeploy the bean. Got log failures like the following:

18:56:20,638 ERROR [RegionManager] failed inactivating /sfsb/jar=andymiller-test.jar,name=SimpleAnnotationStatefulBean,service=EJB3
org.jboss.cache.CacheException: Region /sfsb/jar=andymiller-test.jar,name=SimpleAnnotationStatefulBean,service=EJB3 is already being activated/deactivated
	at org.jboss.cache.RegionManager.inactivateRegion(RegionManager.java:573)
	at org.jboss.cache.RegionManager.activateRegion(RegionManager.java:508)
	at org.jboss.cache.RegionManager.activate(RegionManager.java:376)
	at org.jboss.cache.RegionManager.activate(RegionManager.java:339)
	at org.jboss.cache.RegionImpl.activate(RegionImpl.java:82)
	at org.jboss.ejb3.cache.tree.StatefulTreeCache.start(StatefulTreeCache.java:358)
	at org.jboss.ejb3.stateful.StatefulContainer.createAndStartCache(StatefulContainer.java:302)
	at org.jboss.ejb3.stateful.StatefulContainer.getCache(StatefulContainer.java:340)
	at org.jboss.ejb3.stateful.StatefulContainer.createSession(StatefulContainer.java:488)
	at org.jboss.ejb3.session.SessionContainer.createSession(SessionContainer.java:550)
	at org.jboss.ejb3.proxy.factory.session.stateful.StatefulSessionProxyFactoryBase.getNewSessionId(StatefulSessionProxyFactoryBase.java:296)
	at org.jboss.ejb3.proxy.factory.session.stateful.StatefulSessionProxyFactoryBase.createProxyBusiness(StatefulSessionProxyFactoryBase.java:160)
	at org.jboss.ejb3.proxy.objectfactory.session.SessionProxyObjectFactory.createProxy(SessionProxyObjectFactory.java:133)
	at org.jboss.ejb3.proxy.clustered.objectfactory.session.stateful.StatefulSessionClusteredProxyObjectFactory.getProxy(StatefulSessionClusteredProxyObjectFactory.java:66)
	at org.jboss.ejb3.proxy.objectfactory.ProxyObjectFactory.getObjectInstance(ProxyObjectFactory.java:153)
	at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
	at org.jnp.interfaces.NamingContext.getObjectInstance(NamingContext.java:1426)
	at org.jnp.interfaces.NamingContext.getObjectInstanceWrapFailure(NamingContext.java:1443)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:797)
	at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:661)
	at javax.naming.InitialContext.lookup(InitialContext.java:351)
	at org.jboss.ejb3.test.clusteredsession.SimpleAnnotationStatefulBeanUser$BeanCreator.run(SimpleAnnotationStatefulBeanUser.java:85)
	at java.lang.Thread.run(Thread.java:595)

The 

        at org.jboss.ejb3.cache.tree.StatefulTreeCache.start(StatefulTreeCache.java:358)
	at org.jboss.ejb3.stateful.StatefulContainer.createAndStartCache(StatefulContainer.java:302)

logging shows container's 'cache' field has been nulled, so the request thread is trying to create and start a new cache.  This then leads to conflicts at the JBC level, where the HDScanner thread is doing work to undeploy the old cache.

Couple thoughts:

1) Is letting a request thread create/start the cache a good idea? Shouldn't this be limited to the start() sequence, with an ISE thrown if a request thread finds there is no cache?

2) Should we be adding something like the org.jboss.ejb3.BlockContainerShutdownInterceptor into this call stack to ensure we don't get race conditions like this?

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

        



More information about the jboss-jira mailing list