You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@openjpa.apache.org by ju...@us.ibm.com on 2008/06/12 15:59:14 UTC
Getting PersistenceException due to MalformedInputException OR corrupt
ResultList
We are getting a problem that is only occurring with one very large
database (over 40,000 rows): when we make a certain query
(org.apache.openjpa.persistence.QueryImpl.getResultList()), instead of
getting a List of persistent objects, openJPA is throwing a
PersistenceException which it claims is caused by a
MalformedInputException. OpenJPA seems to think that one of the columns
on one of the rows has non-UTF-8 data in it.
Unfortunately, openJPA does not include any logging code in
ResultSetResult or in any of the places that might illuminate which column
or which row is causing this error. I've had to resort to brute force by
manipulating the data in the table so different parts of it are returned
by the query, in order to see if I can narrow it down. (Although in fact
I?m not convinced that there really IS invalid data in the table -- if you
run the SQL query manually you get the results with no error).
Now that I'm down to only about 2,500 rows, what I?m seeing is even
weirder: sometimes when the query runs, it does throw the exception
below. Other times (unpredictably), *on the very same data set*, when the
query runs, it DOES return a list, but the list of objects is corrupt:
specifically, the first 26 rows seem to be repeated over and over again:
that is, after you pull the 26th java object out of the Collection, you
get a java object that is identical to the first one, and so on down the
line. I know that the table doesn't contain any duplicate rows, so I know
that this is a problem in the openJPA logic that converts the SQL results
into persistent objects.
<openjpa-1.0.0-r420667:568756 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Input length = 24346
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3849)
at
org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:458)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:843)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:801)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:723)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
at
org.apache.openjpa.jdbc.kernel.GenericResultObjectProvider.getResultObject(GenericResultObjectProvider.java:93)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
at
org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:799)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:769)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:235)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
at
cattail.dao.openjpa.OpenJPACattailDao.fetchAll(OpenJPACattailDao.java:324)
at
cattail.dao.openjpa.OpenJPACattailDao.getAllUnindexedFilesAsOf(OpenJPACattailDao.java:1861)
at cattail.lucene.ItemIndexingJob.execute(ItemIndexingJob.java:47)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by:
com.ibm.db2.jcc.c.SqlException: Input length = 24346
at com.ibm.db2.jcc.c.eb.a(eb.java:1613)
at com.ibm.db2.jcc.c.eb.n(eb.java:451)
at com.ibm.db2.jcc.c.eb.H(eb.java:1156)
at com.ibm.db2.jcc.c.bh.getString(bh.java:870)
at
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:174)
at
org.apache.openjpa.lib.jdbc.DelegatingResultSet.getString(DelegatingResultSet.java:118)
at
org.apache.openjpa.jdbc.sql.DBDictionary.getString(DBDictionary.java:712)
at
org.apache.openjpa.jdbc.sql.ResultSetResult.getStringInternal(ResultSetResult.java:452)
at
org.apache.openjpa.jdbc.sql.AbstractResult.getString(AbstractResult.java:724)
at
org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy.load(StringFieldStrategy.java:155)
at
org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:789)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
... 20 more
Caused by:
java.nio.charset.MalformedInputException: Input length = 24346
at com.ibm.db2.jcc.c.t.a(t.java:19)
at com.ibm.db2.jcc.c.eb.a(eb.java:1609)
... 34 more
Caused by:
sun.io.MalformedInputException
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:278)
at com.ibm.db2.jcc.c.t.a(t.java:16)
... 35 more
ErrorLogger.schedulerError: Job (Cattail.Lucene Item Change Queue Startup
threw an exception.
org.quartz.SchedulerException: Job threw an unhandled exception. [See
nested exception: <openjpa-1.0.0-r420667:568756 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Input length = 24346]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
at
org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:529)
Caused by:
<openjpa-1.0.0-r420667:568756 nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Input length = 24346
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3849)
at
org.apache.openjpa.jdbc.sql.DB2Dictionary.newStoreException(DB2Dictionary.java:458)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:83)
at
org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:59)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:260)
at
org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
at
org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
at
org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:843)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:801)
at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:723)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:776)
at
org.apache.openjpa.jdbc.kernel.GenericResultObjectProvider.getResultObject(GenericResultObjectProvider.java:93)
at
org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36)
at
org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1223)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:799)
at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:769)
at
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533)
at
org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:235)
at
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:277)
at
cattail.dao.openjpa.OpenJPACattailDao.fetchAll(OpenJPACattailDao.java:324)
at
cattail.dao.openjpa.OpenJPACattailDao.getAllUnindexedFilesAsOf(OpenJPACattailDao.java:1861)
at cattail.lucene.ItemIndexingJob.execute(ItemIndexingJob.java:47)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
... 1 more
Caused by:
com.ibm.db2.jcc.c.SqlException: Input length = 24346
at com.ibm.db2.jcc.c.eb.a(eb.java:1613)
at com.ibm.db2.jcc.c.eb.n(eb.java:451)
at com.ibm.db2.jcc.c.eb.H(eb.java:1156)
at com.ibm.db2.jcc.c.bh.getString(bh.java:870)
at
org.apache.commons.dbcp.DelegatingResultSet.getString(DelegatingResultSet.java:174)
at
org.apache.openjpa.lib.jdbc.DelegatingResultSet.getString(DelegatingResultSet.java:118)
at
org.apache.openjpa.jdbc.sql.DBDictionary.getString(DBDictionary.java:712)
at
org.apache.openjpa.jdbc.sql.ResultSetResult.getStringInternal(ResultSetResult.java:452)
at
org.apache.openjpa.jdbc.sql.AbstractResult.getString(AbstractResult.java:724)
at
org.apache.openjpa.jdbc.meta.strats.StringFieldStrategy.load(StringFieldStrategy.java:155)
at
org.apache.openjpa.jdbc.meta.FieldMapping.load(FieldMapping.java:789)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:833)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:785)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:336)
at
org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:255)
... 20 more
Caused by:
java.nio.charset.MalformedInputException: Input length = 24346
at com.ibm.db2.jcc.c.t.a(t.java:19)
at com.ibm.db2.jcc.c.eb.a(eb.java:1609)
... 34 more
Caused by:
sun.io.MalformedInputException
at sun.io.ByteToCharUTF8.convert(ByteToCharUTF8.java:278)
at com.ibm.db2.jcc.c.t.a(t.java:16)
... 35 more