[infinispan-issues] [JBoss JIRA] (ISPN-1514) Protect against InputStream providers that do not implement available()

Gustavo Muzzillo (Commented) (JIRA) jira-events at lists.jboss.org
Wed Dec 7 00:18:40 EST 2011


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

Gustavo Muzzillo commented on ISPN-1514:
----------------------------------------

Hi Team this issue is back on 5.1.0.CR1
please check the stac trace below:


03:01:58,201 INFO  [STDOUT] 03:01:58,201 WARN  [ConfigContext] HSEARCH000075: Configuration setting hibernate.search.lucene_version was not specified, using LUCENE_CURRENT.
03:01:58,936 INFO  [STDOUT] 03:01:58,936 WARN  [GenericTransactionManagerLookup] ISPN000104: Falling back to DummyTransactionManager from Infinispan
03:02:01,370 INFO  [STDOUT] 03:02:01,370 INFO  [JGroupsTransport] ISPN000078: Starting JGroups Channel
03:02:08,699 INFO  [STDOUT] 03:02:08,699 INFO  [JGroupsTransport] ISPN000094: Received new cluster view: [DYP-22233|0] [DYP-22233]
03:02:08,704 INFO  [STDOUT] 03:02:08,704 INFO  [JGroupsTransport] ISPN000079: Cache local address is DYP-22233, physical addresses are [127.0.0.1:53565]
03:02:08,751 INFO  [STDOUT] 03:02:08,751 INFO  [GlobalComponentRegistry] ISPN000128: Infinispan version: Infinispan 'Brahma' 5.1.0.CR1

....


03:03:15,766 INFO  [STDOUT] 03:03:15,761 ERROR [JdbcUtil] ISPN008009: I/O error while unmarshalling from stream
java.io.EOFException: Read past end of file
	at org.jboss.marshalling.SimpleDataInput.eofOnRead(SimpleDataInput.java:126)
	at org.jboss.marshalling.SimpleDataInput.readUnsignedByteDirect(SimpleDataInput.java:263)
	at org.jboss.marshalling.SimpleDataInput.readUnsignedByte(SimpleDataInput.java:224)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
	at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
	at org.infinispan.container.entries.ImmortalCacheEntry$Externalizer.readObject(ImmortalCacheEntry.java:161)
	at org.infinispan.container.entries.ImmortalCacheEntry$Externalizer.readObject(ImmortalCacheEntry.java:149)
	at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:384)
	at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:272)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
	at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
	at org.infinispan.loaders.bucket.Bucket$Externalizer.readObject(Bucket.java:152)
	at org.infinispan.loaders.bucket.Bucket$Externalizer.readObject(Bucket.java:134)
	at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:384)
	at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:272)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
	at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
	at org.infinispan.marshall.jboss.AbstractJBossMarshaller.objectFromObjectStream(AbstractJBossMarshaller.java:120)
	at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:115)
	at org.infinispan.marshall.AbstractMarshaller.objectFromInputStream(AbstractMarshaller.java:112)
	at org.infinispan.marshall.AbstractDelegatingMarshaller.objectFromInputStream(AbstractDelegatingMarshaller.java:59)
	at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:88)
	at org.infinispan.loaders.jdbc.binary.JdbcBinaryCacheStore.purgeInternal(JdbcBinaryCacheStore.java:356)
	at org.infinispan.loaders.AbstractCacheStore$2.run(AbstractCacheStore.java:106)
	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:662)
03:03:15,767 INFO  [STDOUT] 03:03:15,767 ERROR [AbstractCacheStore] ISPN000045: Problems encountered while purging expired
org.infinispan.loaders.CacheLoaderException: I/O error while unmarshalling from stream
	at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:91)
	at org.infinispan.loaders.jdbc.binary.JdbcBinaryCacheStore.purgeInternal(JdbcBinaryCacheStore.java:356)
	at org.infinispan.loaders.AbstractCacheStore$2.run(AbstractCacheStore.java:106)
	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:662)
Caused by: java.io.EOFException: Read past end of file
	at org.jboss.marshalling.SimpleDataInput.eofOnRead(SimpleDataInput.java:126)
	at org.jboss.marshalling.SimpleDataInput.readUnsignedByteDirect(SimpleDataInput.java:263)
	at org.jboss.marshalling.SimpleDataInput.readUnsignedByte(SimpleDataInput.java:224)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
	at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
	at org.infinispan.container.entries.ImmortalCacheEntry$Externalizer.readObject(ImmortalCacheEntry.java:161)
	at org.infinispan.container.entries.ImmortalCacheEntry$Externalizer.readObject(ImmortalCacheEntry.java:149)
	at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:384)
	at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:272)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
	at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
	at org.infinispan.loaders.bucket.Bucket$Externalizer.readObject(Bucket.java:152)
	at org.infinispan.loaders.bucket.Bucket$Externalizer.readObject(Bucket.java:134)
	at org.infinispan.marshall.jboss.ExternalizerTable$ExternalizerAdapter.readObject(ExternalizerTable.java:384)
	at org.infinispan.marshall.jboss.ExternalizerTable.readObject(ExternalizerTable.java:272)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:351)
	at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
	at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
	at org.infinispan.marshall.jboss.AbstractJBossMarshaller.objectFromObjectStream(AbstractJBossMarshaller.java:120)
	at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:115)
	at org.infinispan.marshall.AbstractMarshaller.objectFromInputStream(AbstractMarshaller.java:112)
	at org.infinispan.marshall.AbstractDelegatingMarshaller.objectFromInputStream(AbstractDelegatingMarshaller.java:59)
	at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:88)
	... 5 more

cache configuration follows:

<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="urn:infinispan:config:5.0 http://www.infinispan.org/schemas/infinispan-config-5.0.xsd"
	xmlns="urn:infinispan:config:5.0">
	<global>
	    <transport>
	      <properties>
	        <property name="configurationFile" value="jgroups-udp.xml" />
	      </properties>
	    </transport>
	  </global>
	
	<default>
	 
	 <locking
            lockAcquisitionTimeout="20000"
            writeSkewCheck="false"
            concurrencyLevel="5000"
            useLockStriping="false" />

            
	<clustering mode="local">
		<stateRetrieval alwaysProvideInMemoryState="true" fetchInMemoryState="false"/>
	</clustering>
	
	<indexing enabled="true" indexLocalOnly="true">
         <properties>
            <property name="hibernate.search.default.directory_provider" value="filesystem" />
            <property name="hibernate.search.default.indexBase" value="/storage/indexer"/>
         </properties>
    </indexing>
    
    <invocationBatching enabled="true" />
    
    <storeAsBinary enabled="true" />
    
	<transaction  
      transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup"
      syncRollbackPhase="false"
      syncCommitPhase="false"
      useEagerLocking="false"
      />
	</default>
	
	<namedCache name="GLOBAL_CACHE">
		<loaders>
		   <loader class="org.infinispan.loaders.jdbc.binary.JdbcBinaryCacheStore" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false">
		      <properties>
		         <property name="bucketTableNamePrefix" value="ISPN_BUCKET_TABLE"/>
		         <property name="idColumnName" value="ID_COLUMN"/>
		         <property name="dataColumnName" value="DATA_COLUMN"/>
		         <property name="timestampColumnName" value="TIMESTAMP_COLUMN"/>
		         <property name="timestampColumnType" value="NUMBER"/>
		         <property name="connectionFactoryClass" value="org.infinispan.loaders.jdbc.connectionfactory.PooledConnectionFactory"/>
		         <property name="connectionUrl" value="jdbc:oracle:thin:@127.0.0.1:1521:MyDB"/>
		         <property name="userName" value="xxxx"/>
		         <property name="password" value="xxxxx" />
		         <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"/>
		         <property name="idColumnType" value="VARCHAR(255)"/>
		         <property name="dataColumnType" value="BLOB"/>
		         <property name="dropTableOnExit" value="false"/>
		         <property name="createTableOnStart" value="true"/>
		      </properties>
		   </loader>
		</loaders>
		<eviction strategy="FIFO" maxEntries="20480" />
		<expiration maxIdle="-1" lifespan="-1" wakeUpInterval="60000"/>
		<jmxStatistics enabled="true" />
		<deadlockDetection enabled="true" />
		<storeAsBinary enabled="true"/>

		<indexing enabled="true" indexLocalOnly="true">
	         <properties>
	            <property name="hibernate.search.default.directory_provider" value="filesystem" />
	            <property name="hibernate.search.default.indexBase" value="/storage/indexer"/>
	         </properties>
        </indexing>
	</namedCache>
</infinispan>


                
> Protect against InputStream providers that do not implement available()
> -----------------------------------------------------------------------
>
>                 Key: ISPN-1514
>                 URL: https://issues.jboss.org/browse/ISPN-1514
>             Project: Infinispan
>          Issue Type: Bug
>          Components: Loaders and Stores
>    Affects Versions: 5.0.1.FINAL, 5.1.0.BETA3
>         Environment: Oracle Driver version 10.2.0.5.0
>            Reporter: Thomas Fromm
>            Assignee: Galder Zamarreño
>             Fix For: 5.1.0.BETA5, 5.1.0.FINAL
>
>         Attachments: AbstractMarshaller.patch
>
>
> Unmarshalling of value with oracle driver fails with:
> 2011-11-09 14:57:59,490 [ERROR] org.infinispan.loaders.jdbc.JdbcUtil - ISPN008009: I/O error while unmarshalling from stream
> java.io.EOFException: Read past end of file                                                                                 
>         at org.jboss.marshalling.SimpleDataInput.eofOnRead(SimpleDataInput.java:126)                                        
>         at org.jboss.marshalling.SimpleDataInput.readUnsignedByteDirect(SimpleDataInput.java:263)                           
>         at org.jboss.marshalling.SimpleDataInput.readUnsignedByte(SimpleDataInput.java:224)
>         at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1182)
>         at org.infinispan.marshall.jboss.AbstractJBossMarshaller.startObjectInput(AbstractJBossMarshaller.java:113)
>         at org.infinispan.marshall.VersionAwareMarshaller.startObjectInput(VersionAwareMarshaller.java:156)
>         at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:112)
>         at org.infinispan.marshall.AbstractMarshaller.objectFromInputStream(AbstractMarshaller.java:104)
>         at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:88)
>         at E04.main(E04.java:38)
>         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:597)
>         at com.inubit.ibis.configuration.Bootstrap.main(Bootstrap.java:66)
> org.infinispan.loaders.CacheLoaderException: I/O error while unmarshalling from stream
>         at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:91)
>         at E04.main(E04.java:38)
>         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:597)
>         at com.inubit.ibis.configuration.Bootstrap.main(Bootstrap.java:66)
> Caused by: java.io.EOFException: Read past end of file
>         at org.jboss.marshalling.SimpleDataInput.eofOnRead(SimpleDataInput.java:126)
>         at org.jboss.marshalling.SimpleDataInput.readUnsignedByteDirect(SimpleDataInput.java:263)
>         at org.jboss.marshalling.SimpleDataInput.readUnsignedByte(SimpleDataInput.java:224)
>         at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1182)
>         at org.infinispan.marshall.jboss.AbstractJBossMarshaller.startObjectInput(AbstractJBossMarshaller.java:113)
>         at org.infinispan.marshall.VersionAwareMarshaller.startObjectInput(VersionAwareMarshaller.java:156)
>         at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:112)
>         at org.infinispan.marshall.AbstractMarshaller.objectFromInputStream(AbstractMarshaller.java:104)
>         at org.infinispan.loaders.jdbc.JdbcUtil.unmarshall(JdbcUtil.java:88)
>         ... 6 more
> Solution:
> In AbstractMarshaller.objectFromInputStream is assumed, that the available() method from the incoming InputStream returns the size of data.
> But this is optional, so the InputStream from the oracle driver returns 0. So implementation of objectFromInputStream must be changed to avoid usage of available().

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the infinispan-issues mailing list