[ 
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>.extclassloa...@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.

Reply via email to