You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kathey Marsden (JIRA)" <ji...@apache.org> on 2010/11/29 22:56:11 UTC
[jira] Issue Comment Edited: (DERBY-4913) 10.3 to 10.5 upgrade
fails with ava.io.StreamCorruptedException: java.lang.ClassCastException:
org.apache.derby.catalog.types.OldRoutineType incompatible with
org.apache.derby.iapi.types.DataTypeDescriptor
[ https://issues.apache.org/jira/browse/DERBY-4913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12964959#action_12964959 ]
Kathey Marsden edited comment on DERBY-4913 at 11/29/10 4:55 PM:
-----------------------------------------------------------------
A few more notes. Attempting the upgrade with an isolated URLClassLoader did not pop the issue, see attached ClassLoaderUpgrade.java for that attempt, nor did it reproduce for someone trying to use the same environment/software here in the US. (User seeing the problem is in Europe.) The Derby version being used is 10.5.3.1 - (957402).
I have a copy of the the database after the problem occurs and it seems to be in a half upgraded state. The database won't boot with 10.3 with the message
ERROR XSLAN: Database at C:<snip dbname> has an incompatib
le format with the current version of the software. The database was created by or upgraded by version 10.5,
If I connect with 10.5 does not have the new update statistics procedure in SYS.SYSALIASES.
Happily if I reconnect with 10.5 with upgrade=true, the update statistics procedure is created.
I don't actually see where the cast might occur in FormatIdInputStream.readObject , but do see this code and comment:
catch (ClassCastException cce)
{
// We catch this here as it is usuall a user error.
// they have readExternal (or SQLData) that doesn't match
// the writeExternal. and thus the object read is of
// the incorrect type, e.g. Integer i = (Integer) in.readObject();
throw new StreamCorruptedException(cce.toString());
}
Perhaps the cce.toString() does not give the full nested exception.
was (Author: kmarsden):
A few more notes. Attempting the upgrade with an isolated URLClassLoader did not pop the issue, see attached ClassLoaderUpgrade.java for that attempt, nor did it reproduce for someone trying to use the same environment/software here in the US. (User seeing the problem is in Europe.) The Derby version being used is 10.5.3.1 - (957402).
I have a copy of the the database after the problem occurs and it seems to be in a half upgraded state. The database won't boot with 10.3 with the message
ERROR XSLAN: Database at C:<snip dbname> has an incompatib
le format with the current version of the software. The database was created by or upgraded by version 10.5,
If I connect with 10.5 does not have the new update statistics procedure in SYS.SYSALIASES.
Happily if I reconnect with 10.5 with upgrade=true, the update statistics procedure is created.
I don't actually see where the cast might occur in FormatIdInputStream.readObject , but do see this code and comment:
> 10.3 to 10.5 upgrade fails with ava.io.StreamCorruptedException: java.lang.ClassCastException: org.apache.derby.catalog.types.OldRoutineType incompatible with org.apache.derby.iapi.types.DataTypeDescriptor
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-4913
> URL: https://issues.apache.org/jira/browse/DERBY-4913
> Project: Derby
> Issue Type: Bug
> Components: Store
> Affects Versions: 10.5.3.0
> Reporter: Kathey Marsden
>
> I have a report from a user upgrading to 10.5 from 10.3 that they got the following error during upgrade. I don't have much in the way of details yet, but thought I would post an issue since I've never seen this error before. I do have the original 10.3 database and it seems to upgrade fine to 10.5 with ij.
> java.sql.SQLException: Failed to start database
> '/
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException
> (Unknown Source)
> at
> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.Util.seeNextException(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.bootDatabase(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
> Source)
> at
> org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown
> Source)
> at
> org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown
> Source)
> at org.apache.derby.jdbc.InternalDriver.connect(Unknown
> Source)
> at
> org.apache.derby.jdbc.EmbeddedDataSource.getConnection(Unknown
> Source)
> at
> org.apache.derby.jdbc.EmbedPooledConnection.openRealConnection(U
> nknown Source)
> at
> org.apache.derby.jdbc.EmbedPooledConnection.<init>(Unknown
> Source)
> at
> org.apache.derby.jdbc.EmbedPooledConnection40.<init>(Unknown
> Source)
> at
> org.apache.derby.jdbc.Driver40.getNewPooledConnection(Unknown
> Source)
> at
> org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource.createPoo
> ledConnection(Unknown Source)
> at
> org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource.getPooled
> Connection(Unknown Source)
> at
> <snip>
> Caused by: java.sql.SQLException: Failed to start database
> '<snip>759243AF2F8
> 4F1DE' with class loader <snip>.ExtClassLoader@3e955f6, see the next
> exception for details.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(U
> nknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTran
> sportAcrossDRDA(Unknown Source)
> ... 41 more
> Caused by: java.sql.SQLException: Exception during restore
> of a serializable or SQLData object of class
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(U
> nknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTran
> sportAcrossDRDA(Unknown Source)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException
> (Unknown Source)
> at
> org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
> Source)
> ... 38 more
> Caused by: ERROR XSDA8: Exception during restore of a
> serializable or SQLData object of class
> at
> org.apache.derby.iapi.error.StandardException.newException(Unkno
> wn Source)
> at
> org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromAr
> ray(Unknown Source)
> at
> org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFro
> mSlot(Unknown Source)
> at
> org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot(Unkn
> own Source)
> at
> org.apache.derby.impl.store.access.conglomerate.GenericScanContr
> oller.fetchRows(Unknown Source)
> at
> org.apache.derby.impl.store.access.heap.HeapScan.fetchNext(Unkno
> wn Source)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getDescript
> orViaHeap(Unknown Source)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.getAllSPSDe
> scriptors(Unknown Source)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.dropJDBCMet
> adataSPSes(Unknown Source)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.updateMetad
> ataSPSes(Unknown Source)
> at
> org.apache.derby.impl.sql.catalog.DD_Version.doFullUpgrade(Unkno
> wn Source)
> at
> org.apache.derby.impl.sql.catalog.DD_Version.upgradeIfNeeded(Unk
> nown Source)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.loadDiction
> aryTables(Unknown Source)
> at
> org.apache.derby.impl.sql.catalog.DataDictionaryImpl.boot(Unknow
> n Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
> Source)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(Unk
> nown Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(U
> nknown Source)
> at
> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule
> (Unknown Source)
> at org.apache.derby.impl.db.BasicDatabase.boot(Unknown
> Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
> Source)
> at
> org.apache.derby.impl.services.monitor.TopService.bootModule(Unk
> nown Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(U
> nknown Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startProvider
> Service(Unknown Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.findProviderA
> ndStartService(Unknown Source)
> at
> org.apache.derby.impl.services.monitor.BaseMonitor.startPersiste
> ntService(Unknown Source)
> at
> org.apache.derby.iapi.services.monitor.Monitor.startPersistentSe
> rvice(Unknown Source)
> ... 38 more
> Caused by: java.io.StreamCorruptedException:
> java.lang.ClassCastException:
> org.apache.derby.catalog.types.OldRoutineType incompatible with
> org.apache.derby.iapi.types.DataTypeDescriptor
> at
> org.apache.derby.iapi.services.io.FormatIdInputStream.readObject
> (Unknown Source)
> at
> org.apache.derby.impl.sql.GenericResultDescription.readExternal(
> Unknown Source)
> at
> org.apache.derby.iapi.services.io.FormatIdInputStream.readObject
> (Unknown Source)
> at
> org.apache.derby.impl.sql.GenericStorablePreparedStatement.readE
> xternal(Unknown Source)
> at
> org.apache.derby.iapi.services.io.FormatIdInputStream.readObject
> (Unknown Source)
> at
> org.apache.derby.iapi.types.UserType.readExternal(Unknown
> Source)
> ... 63 more
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.