[infinispan-issues] [JBoss JIRA] Commented: (ISPN-699) occasional NullPointerException on unmarshalling in test application

Galder Zamarreño (JIRA) jira-events at lists.jboss.org
Tue Oct 19 13:31:54 EDT 2010


    [ https://jira.jboss.org/browse/ISPN-699?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12557935#action_12557935 ] 

Galder Zamarreño commented on ISPN-699:
---------------------------------------

A few things to consider doing  here:

1) Why is startLatch needed in EvictionManagerImpl? Let's get rid of it.

2) The processEviction code should protect against isInterrupted() to avoid doing any further work if eviction has been cancelled

3) Also, a quick check for InterruptedException shows that when purgeInternal is called, FCS tries to acquire a global lock, but any IE is swallowed. On top of that, FCS does not check whether the lock was actually acquired.

4) COT should be enhanced to have a volatile stopped boolean variable so that we can find out when the marshaller has been stopped but someone is requesting to read an object. At this point the COT could log a thread dump programmatically (relatively easy to do), because this would hint of any other parts that might be swallowing interruption at cancellation. Otherwise, without this thread dump, you'd need to rely on users getting the timing right. Besides, this is not expected to be the common case, so don't expect huge logs as a result of this and could be logged at debug/trace level.

> occasional NullPointerException on unmarshalling in test application
> --------------------------------------------------------------------
>
>                 Key: ISPN-699
>                 URL: https://jira.jboss.org/browse/ISPN-699
>             Project: Infinispan
>          Issue Type: Sub-task
>          Components: Marshalling
>    Affects Versions: 4.0.0.Final, 4.1.0.Final, 4.2.0.ALPHA2
>            Reporter: Sanne Grinovero
>            Assignee: Galder Zamarreño
>             Fix For: 4.2.0.BETA1, 4.2.0.Final
>
>         Attachments: 697ispn-infinispan-readersclearedbeforeeviction.log
>
>
> See the parent issue ISPN-697 , which contains more details and an application which can occasionally reproduce the NPE.
> 2010-10-11 15:55:27,305 ERROR [Scheduled-eviction-thread-0] (FileCacheStore.java:184) - Error while reading from file: /home/cching/dev/infinispan-hang/./store/Users/-202784536 
> java.lang.NullPointerException 
> at org.infinispan.marshall.jboss.ConstantObjectTable.readObject(ConstantObjectTable.java:253) 
> at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:357) 
> at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:207) 
> at org.jboss.marshalling.AbstractUnmarshaller.readObject(AbstractUnmarshaller.java:85) 
> at org.infinispan.marshall.jboss.GenericJBossMarshaller.objectFromObjectStream(GenericJBossMarshaller.java:162) 
> at org.infinispan.marshall.VersionAwareMarshaller.objectFromObjectStream(VersionAwareMarshaller.java:179) 
> at org.infinispan.loaders.file.FileCacheStore.objectFromInputStreamInReentrantMode(FileCacheStore.java:262) 
> at org.infinispan.loaders.file.FileCacheStore.loadBucket(FileCacheStore.java:181) 
> at org.infinispan.loaders.file.FileCacheStore.purgeInternal(FileCacheStore.java:161) 
> at org.infinispan.loaders.AbstractCacheStore$2.run(AbstractCacheStore.java:84) 
> at org.infinispan.util.concurrent.WithinThreadExecutor.execute(WithinThreadExecutor.java:47) 
> at org.infinispan.loaders.AbstractCacheStore.purgeExpired(AbstractCacheStore.java:81) 
> at org.infinispan.eviction.EvictionManagerImpl.processEviction(EvictionManagerImpl.java:115) 
> at org.infinispan.eviction.EvictionManagerImpl$ScheduledTask.run(EvictionManagerImpl.java:136) 
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
> at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:317) 
> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:150) 
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:98) 
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.runPeriodic(ScheduledThreadPoolExecutor.java:181) 
> at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:205) 
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
> at java.lang.Thread.run(Thread.java:619)  

-- 
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

       



More information about the infinispan-issues mailing list