[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 07:02:54 EDT 2010


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

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

I've run the test case attached to https://jira.jboss.org/secure/attachment/12337734/infinispan-hang.tar.gz and after running it a fair few times, I finally was able to reproduce it, i.e.:

2010-10-19 11:58:17,774 ERROR [Scheduled-eviction-thread-0] (FileCacheStore.java:184) - Error while reading from file: /Users/z/Dropbox/JBoss/infinispan/jira/697/infinispan-hang/./store/Users/-202784597
java.lang.NullPointerException
	at org.infinispan.marshall.jboss.ConstantObjectTable.readObject(ConstantObjectTable.java:253)

At this point, I've made a clone of the Users store and tried to read that particular user from another program to verify whether the issue was due to the data that is actually stored being corrupt. The test run fine which indicates that there's no storage corruption. Instead, it seems like there's a race condition at read time that ends up with wrong byte being read.

As a FYI, the byte returned should always be 42 which is the id for org.infinispan.loaders.bucket.Bucket. Now, we have to remember that reading/writing to/from a bucket is lock protected, so I can't see right now how this could be the result of concurrent read and write of same bucket. Could it be the result of two concurrent reads maybe? Hmmm, sounds odd.

Anyway, I'm gonna add some extra logging and try to replicate the issue again.


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