[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