[jboss-jira] [JBoss JIRA] Created: (JBCACHE-1361) NPE in DataContainerImpl.getNodesForEviction()

Brian Stansberry (JIRA) jira-events at lists.jboss.org
Wed Jun 4 18:57:21 EDT 2008


NPE in DataContainerImpl.getNodesForEviction()
----------------------------------------------

                 Key: JBCACHE-1361
                 URL: http://jira.jboss.com/jira/browse/JBCACHE-1361
             Project: JBoss Cache
          Issue Type: Bug
      Security Level: Public (Everyone can see)
          Components: Eviction
    Affects Versions: 2.2.0.GA
            Reporter: Brian Stansberry
         Assigned To: Manik Surtani


Actually effects 2.2.0.CR2, but that wasn't a choice.

Call to recursively evict a subtree fails with an NPE:

2008-06-03 21:05:13,419 ERROR [org.jboss.web.tomcat.service.session.JBossCacheManager] processExpires(): failed expiring 2 with exception: java.lang.NullPointerException
java.lang.NullPointerException
	at org.jboss.cache.DataContainerImpl.recursiveAddEvictionNodes(DataContainerImpl.java:267)
	at org.jboss.cache.DataContainerImpl.getNodesForEviction(DataContainerImpl.java:241)
	at org.jboss.cache.interceptors.PassivationInterceptor.visitEvictFqnCommand(PassivationInterceptor.java:54)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
	at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
	at org.jboss.cache.commands.AbstractVisitor.visitEvictFqnCommand(AbstractVisitor.java:55)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
	at org.jboss.cache.interceptors.PessimisticLockInterceptor.handleEvictFqnCommand(PessimisticLockInterceptor.java:303)
	at org.jboss.cache.interceptors.base.PostProcessingCommandInterceptor.visitEvictFqnCommand(PostProcessingCommandInterceptor.java:138)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
	at org.jboss.cache.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:157)
	at org.jboss.cache.commands.AbstractVisitor.visitEvictFqnCommand(AbstractVisitor.java:55)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
	at org.jboss.cache.interceptors.TxInterceptor.attachGtxAndPassUpChain(TxInterceptor.java:266)
	at org.jboss.cache.interceptors.TxInterceptor.handleDefault(TxInterceptor.java:253)
	at org.jboss.cache.commands.AbstractVisitor.visitEvictFqnCommand(AbstractVisitor.java:55)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
	at org.jboss.cache.interceptors.CacheMgmtInterceptor.visitEvictFqnCommand(CacheMgmtInterceptor.java:66)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:142)
	at org.jboss.cache.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:158)
	at org.jboss.cache.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:108)
	at org.jboss.cache.commands.AbstractVisitor.visitEvictFqnCommand(AbstractVisitor.java:55)
	at org.jboss.cache.commands.write.EvictCommand.acceptVisitor(EvictCommand.java:88)
	at org.jboss.cache.interceptors.InterceptorChain.invoke(InterceptorChain.java:215)
	at org.jboss.cache.invocation.CacheInvocationDelegate.evict(CacheInvocationDelegate.java:347)
	at org.jboss.web.tomcat.service.session.JBossCacheWrapper.evictSubtree(JBossCacheWrapper.java:289)
	at org.jboss.web.tomcat.service.session.JBossCacheService.evictSession(JBossCacheService.java:371)
	at org.jboss.web.tomcat.service.session.JBossCacheService.evictSession(JBossCacheService.java:361)
	at org.jboss.web.tomcat.service.session.JBossCacheManager.processSessionPassivation(JBossCacheManager.java:1777)
	at org.jboss.web.tomcat.service.session.JBossCacheManager.processExpires(JBossCacheManager.java:1542)
	at org.jboss.web.tomcat.service.session.JBossCacheManager.createSession(JBossCacheManager.java:804)
	at org.jboss.test.cluster.defaultcfg.simpleweb.test.SessionCountUnitTestCase.createAndUseSession(SessionCountUnitTestCase.java:902)
	at org.jboss.test.cluster.defaultcfg.simpleweb.test.SessionCountUnitTestCase.testStandaloneMaxSessionsWithMinIdle(SessionCountUnitTestCase.java:269)
	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 junit.framework.TestCase.runTest(TestCase.java:164)
	at junit.framework.TestCase.runBare(TestCase.java:130)
	at junit.framework.TestResult$1.protect(TestResult.java:106)
	at junit.framework.TestResult.runProtected(TestResult.java:124)
	at junit.framework.TestResult.run(TestResult.java:109)
	at junit.framework.TestCase.run(TestCase.java:120)
	at junit.framework.TestSuite.runTest(TestSuite.java:230)
	at junit.framework.TestSuite.run(TestSuite.java:225)
	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:297)
	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:672)
	at org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:567)

Looks like DataContainerImpl.getNodesForEviction() is doing a peek() and passing the result to recursiveAddEvictionNodes() even if the peek() returns null.

JBAS web session replication manages eviction itself, which is why the evict() call is coming from the session management layer.

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

        



More information about the jboss-jira mailing list