db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phil Bradley <ph...@tower.ie>
Subject Re: Corrupt database: ArrayIndexOutOfBoundsException on connect
Date Mon, 10 Mar 2014 18:19:41 GMT

Hi Myrna,



Thanks, the data in question is really just an offline cache so there's
no issue with data loss (and it's kind of understandable that killing
the process in the middle of compressing a table might not be best
practice:)


My second question was really "is a database in this state of use to
the derby developers?"  I'm not authorised to upload the database as
part of a bug report since it belongs to a client but if there are any
Derby developers out there that would like me to run some diagnostics
then I'm happy to do so.


Regards,

Phil





On Mon, Mar 10, 2014, at 16:20, Myrna van Lunteren wrote:

Although Derby has transaction control and a recovery mechanism, if a
JVM crashes or gets interrupted, the normal transaction steps might be
interrupted in unfortunate places, especially during compress. Was the
database shutdown before compress? Do you have a backup?

But perhaps there is something of use to you on this page:
[1]https://wiki.apache.org/db-derby/DatabaseCorruption

HTH
Myrna



On Mon, Mar 10, 2014 at 4:49 AM, Phil Bradley <[2]philb@tower.ie>
wrote:


Hi,


I have a derby database that I am unable to connect to; when I try I
get

"java.lang.ArrayIndexOutOfBoundsException". The full stack trace is

shown below.


Firstly, some background:


- I'm using derby 10.8.2.2 with a Java Webstart application that

connects in embedded mode. The clients are using Java 7u45 on Windows
7,

32 bit


- The application is configured to run
SYSCS_UTIL.SYSCS_COMPRESS_TABLE()

every 5 days on each table on startup


- The client was running SYSCS_UTIL.SYSCS_COMPRESS_TABLE() on a

particular table and based on the application logs, it looks like
either

the JVM crashed or the application was ended via task manager.


- On subsequent attempts to start the application, the client was
unable

to connect to the database as per the stack trace below. I have made a

copy of the database and I get this error reliably on accessing the

copy.


I have two questions:


1. Is there anything that I can do to recover from this kind of
scenario

automatically?

2. Is there any debugging or other investigation that I can do that
will

help reduce the severity of this kind of problem?


Thanks,

Phil






java.sql.SQLException: Failed to start database

'C:\Users\Administrator\.myapp\myapp_db' with class loader

com.sun.jnlp.JNLPClassLoader@1bef5e8, see the next exception for

details.

        at


org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknow
n

        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.AutoloadedDriver.connect(Unknown

        Source)

        at java.sql.DriverManager.getConnection(Unknown Source)

        at java.sql.DriverManager.getConnection(Unknown Source)

        at


com.mycompany.database.DbInitializer.runScript(DbInitializer.java:143)

        at


com.mycompany.myapp.ApplicationRunner.initialiseDb(ApplicationRunner.ja
va:817)

        at


com.mycompany.myapp.ApplicationRunner.startApplication(ApplicationRunne
r.java:945)

        at


com.mycompany.myapp.ApplicationRunner.run(ApplicationRunner.java:581)

        at


com.mycompany.myapp.ApplicationRunner.main(ApplicationRunner.java:552)

        at


com.mycompany.myapp.ApplicationLoader.main(ApplicationLoader.java:90)

        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown

        Source)

        at java.lang.reflect.Method.invoke(Unknown Source)

        at com.sun.javaws.Launcher.executeApplication(Unknown Source)

        at com.sun.javaws.Launcher.executeMainClass(Unknown Source)

        at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)

        at com.sun.javaws.Launcher.run(Unknown Source)

        at java.lang.Thread.run(Unknown Source)

Caused by: java.sql.SQLException: Failed to start database

'C:\Users\Administrator\.myapp\myapp_db' with class loader

com.sun.jnlp.JNLPClassLoader@1bef5e8, see the next exception for

details.

        at


org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown

        Source)

        at


org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAc
rossDRDA(Unknown

        Source)

        ... 27 more

Caused by: java.sql.SQLException: Java exception: ':

java.lang.ArrayIndexOutOfBoundsException'.

        at


org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown

        Source)

        at


org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAc
rossDRDA(Unknown

        Source)

        at


org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknow
n

        Source)

        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown

        Source)

        at org.apache.derby.impl.jdbc.Util.javaException(Unknown
Source)

        ... 24 more

Caused by: java.lang.ArrayIndexOutOfBoundsException

        at java.lang.System.arraycopy(Native Method)

        at


org.apache.derby.impl.store.raw.data.AllocPage.ReadContainerInfo(Unknow
n

        Source)

        at


org.apache.derby.impl.store.raw.data.FileContainer.readHeader(Unknown

        Source)

        at
org.apache.derby.impl.store.raw.data.RAFContainer.run(Unknown

        Source)

        at java.security.AccessController.doPrivileged(Native Method)

        at


org.apache.derby.impl.store.raw.data.RAFContainer.openContainer(Unknown

        Source)

        at


org.apache.derby.impl.store.raw.data.RAFContainer4.openContainer(Unknow
n

        Source)

        at


org.apache.derby.impl.store.raw.data.FileContainer.setIdent(Unknown

        Source)

        at


org.apache.derby.impl.store.raw.data.FileContainer.setIdentity(Unknown

        Source)

        at


org.apache.derby.impl.services.cache.ConcurrentCache.find(Unknown

        Source)

        at


org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(
Unknown

        Source)

        at


org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openDroppedCon
tainer(Unknown

        Source)

        at


org.apache.derby.impl.store.raw.xact.Xact.openDroppedContainer(Unknown

        Source)

        at


org.apache.derby.impl.store.raw.data.ContainerBasicOperation.findContai
ner(Unknown

        Source)

        at


org.apache.derby.impl.store.raw.data.ContainerBasicOperation.needsRedo(
Unknown

        Source)

        at org.apache.derby.impl.store.raw.log.FileLogger.redo(Unknown

        Source)

        at
org.apache.derby.impl.store.raw.log.LogToFile.recover(Unknown

        Source)

        at org.apache.derby.impl.store.raw.RawStore.boot(Unknown
Source)

        at

        org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown

        Source)

        at


org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknow
n

        Source)

        at


org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown

        Source)

        at

        org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown

        Source)

        at


org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknow
n

        Source)

        at org.apache.derby.impl.db.BasicDatabase.bootStore(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(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.BaseMonitor.startProviderService
(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.BaseMonitor.findProviderAndStart
Service(Unknown

        Source)

        at


org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentServi
ce(Unknown

        Source)

        at


org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(U
nknown

        Source)

        ... 24 more

2014-03-08 06:10:59,357 javawsApplicationMain ERROR  Initialisation

error [40000] [XJ040] Failed to start database

'C:\Users\Administrator\.myapp\myapp_db' with class loader

com.sun.jnlp.JNLPClassLoader@1bef5e8, see the next exception for

details.

2014-03-08 06:10:59,357 javawsApplicationMain ERROR Initialisation
error

[0] [XJ001] Java exception: ':

java.lang.ArrayIndexOutOfBoundsException'.

References

1. https://wiki.apache.org/db-derby/DatabaseCorruption
2. mailto:philb@tower.ie

Mime
View raw message