[ 
https://issues.apache.org/jira/browse/DERBY-5936?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13929824#comment-13929824
 ] 

Mike Matrigali commented on DERBY-5936:
---------------------------------------

I do wonder if this issue can be caused by the same issue that in most cases is 
reported
by derby checksum error.  In that case derby has requested the OS to write a 
derby page
that is made up of multiple OS/filesystem pages, and can not control the order 
that the
OS does the write.  If the OS happens to shutdown/crash in the middle of 
writing those pages
that make up a single OS page then Derby page is corrupt.  Derby checksums the 
page and writes it at the end of the page, and
for all pages EXCEPT the page that is a problem here, we first read the whole 
page and
compare the checksum of the page to expected and report that issue first.

In this case we have a bootstrap problem.  Derby needs to read the top of this 
page in the file to tell 
how big the page is so that it can then find the checksum later to do the 
compare.  

I don't know if this can be the problem as Derby goes out of its way to force 
this important information when
creating the file, because of this issue.  But I guess if write-sync were 
enabled then derby force would 
be ignored.

> AllocPage.ReadContainerInfo throws ArrayIndexOutOfBoundsException at arraycopy
> ------------------------------------------------------------------------------
>
>                 Key: DERBY-5936
>                 URL: https://issues.apache.org/jira/browse/DERBY-5936
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.6.1.0
>         Environment: intel, windows XP, embedded driver, c3p0
>            Reporter: Yuan Yao
>
> The db may not be closed normally. It throws following exceptions as starting.
> logs:
> {code}
> Caused by: java.lang.ArrayIndexOutOfBoundsException
>       at java.lang.System.arraycopy(Native Method)
>       at 
> org.apache.derby.impl.store.raw.data.AllocPage.ReadContainerInfo(Unknown 
> 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(Unknown 
> Source)
>       at org.apache.derby.impl.store.raw.data.FileContainer.setIdent(Unknown 
> Source)
>       at 
> org.apache.derby.impl.store.raw.data.RAFContainer.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.openDroppedContainer(Unknown
>  Source)
>       at 
> org.apache.derby.impl.store.raw.xact.Xact.openDroppedContainer(Unknown Source)
>       at 
> org.apache.derby.impl.store.raw.data.ContainerBasicOperation.findContainer(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(Unknown 
> 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(Unknown 
> 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.findProviderAndStartService(Unknown
>  Source)
>       at 
> org.apache.derby.impl.services.monitor.BaseMonitor.startPersistentService(Unknown
>  Source)
>       at 
> org.apache.derby.iapi.services.monitor.Monitor.startPersistentService(Unknown 
> Source)
>       ... 24 more
> {code}
> I'd like to upload data files if necessary.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to