You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-user@db.apache.org by Steven Huey <St...@sparta.com> on 2007/05/03 17:05:56 UTC

Derby Errors with Apache Jackrabbit

Hi,

I'm using Derby 10.2.1.6 with Apache Jackrabbit 1.2.3 and just  
started getting the following error in our derby.log file, which is  
rendering our Jackrabbit repository inaccessible. To date we've had  
no problems with Derby and it's been maintenance free so I'm not sure  
how to proceed to resolve the errors, any help is greatly appreciated.

Database Class Loader started - derby.database.classpath=''
----------------------------------------------------------------
2007-05-02 17:41:12.805 GMT:
Booting Derby version The Apache Software Foundation - Apache Derby -  
10.2.1.6 - (452058): instance 6074401f-0112-4de1-629c-000000150808
on database directory /opt/jcr/repository/workspaces/default/db

Database Class Loader started - derby.database.classpath=''
2007-05-02 17:41:59.626 GMT Thread 
[DefaultQuartzScheduler_Worker-1,5,main] (XID = 28872), (SESSIONID =  
0), (DATABASE = /opt/jcr/repository/workspaces/default/db), (DRDAID =  
null), Cleanup action starting
2007-05-02 17:41:59.626 GMT Thread 
[DefaultQuartzScheduler_Worker-1,5,main] (XID = 28872), (SESSIONID =  
0), (DATABASE = /opt/jcr/repository/workspaces/default/db), (DRDAID =  
null), Failed Statement is: select NODE_DATA from DEFAULT_NODE where  
NODE_ID = ?
java.lang.ArrayIndexOutOfBoundsException: -1
	at org.apache.derby.impl.store.raw.data.BasePage.getHeaderAtSlot 
(Unknown Source)
	at  
org.apache.derby.impl.store.raw.data.StoredPage.restorePortionLongColumn 
(Unknown Source)
	at  
org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder( 
Unknown Source)
	at org.apache.derby.impl.store.raw.data.OverflowInputStream.<init> 
(Unknown Source)
	at  
org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray 
(Unknown Source)
	at  
org.apache.derby.impl.store.raw.data.StoredPage.restoreLongRecordFromSlo 
t(Unknown Source)
	at  
org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot 
(Unknown Source)
	at org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot 
(Unknown Source)
	at  
org.apache.derby.impl.store.access.conglomerate.GenericConglomerateContr 
oller.fetch(Unknown Source)
	at  
org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowC 
ore(Unknown Source)
	at  
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCor 
e(Unknown Source)
	at  
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow 
(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown  
Source)
	at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)
	at  
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.loa 
d(DatabasePersistenceManager.java:339)
	at  
org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState 
(SharedItemStateManager.java:1101)
	at  
org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualIte 
mState(SharedItemStateManager.java:1028)
	at  
org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState 
(SharedItemStateManager.java:250)
	at  
org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState 
(LocalItemStateManager.java:95)
	at  
org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState 
(LocalItemStateManager.java:150)
	at org.apache.jackrabbit.core.state.XAItemStateManager.getItemState 
(XAItemStateManager.java:226)
	at  
org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState 
(SessionItemStateManager.java:177)
	at org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState 
(HierarchyManagerImpl.java:120)
	at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
(HierarchyManagerImpl.java:267)
	at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
(CachingHierarchyManager.java:132)
	at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
(HierarchyManagerImpl.java:267)
	at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
(CachingHierarchyManager.java:132)
	at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
(HierarchyManagerImpl.java:203)
	at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
(HierarchyManagerImpl.java:341)
	at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
(CachingHierarchyManager.java:193)
	at org.apache.jackrabbit.core.NodeImpl.resolveRelativeNodePath 
(NodeImpl.java:243)
	at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2412)
	at com.sparta.wcm.jobs.UpdateEmployeeList.initSession 
(UpdateEmployeeList.java:181)
	at com.sparta.wcm.jobs.UpdateEmployeeList.execute 
(UpdateEmployeeList.java:97)
	at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
	at org.quartz.simpl.SimpleThreadPool$WorkerThread.run 
(SimpleThreadPool.java:529)
Cleanup action completed


--

Steven Huey
Steven.Huey@sparta.com




Re: Derby Errors with Apache Jackrabbit

Posted by Mike Matrigali <mi...@sbcglobal.net>.

Mike Matrigali wrote:
> The problem looks like Derby is encountering a bad pointer while
> traversing a long column chain - likely a blob or clob column.  The
> thing to narrow down is if this is a static problem in the existing
> db, or some runtime issue with muliple threads of control accessing
> (read/write) the data.  I have seen these types of issues in 
> multi-threaded apps where multiple threads use the same connection (ie. 
> same transaction) and one thread is in a select loop on a large object 
> and another thread updates the same object breaking the linkage in the
> middle.  locking will prevent this if threads use different transactions 
> but not when using the same transaction.
> 
> Also are you using embedded or network version.
> 
> Can you reproduce the error, single threaded on a copy of the db?  You
> can use logStatementText to get the exact value of ? in that statement
> if you have some jackrabbit script that reproduces the problem
If you can't repro single threaded on copy of db, it would be 
interesting to know what isolation level the fetch is happening in.
default is read committed.  I would have to think if read uncommitted
could cause a problem in multi-user mode.

> 
> Does anyone know how hard it would be to get the error statement to log
> to derby.log the parameters of the statement?
> 
> The derby code should be checking for the -1 return, but not sure that
> will help you as I think it doesn't expect it.
> Steven Huey wrote:
> 
>> Hi,
>>
>> I'm using Derby 10.2.1.6 with Apache Jackrabbit 1.2.3 and just  
>> started getting the following error in our derby.log file, which is  
>> rendering our Jackrabbit repository inaccessible. To date we've had  
>> no problems with Derby and it's been maintenance free so I'm not sure  
>> how to proceed to resolve the errors, any help is greatly appreciated.
>>
>> Database Class Loader started - derby.database.classpath=''
>> ----------------------------------------------------------------
>> 2007-05-02 17:41:12.805 GMT:
>> Booting Derby version The Apache Software Foundation - Apache Derby -  
>> 10.2.1.6 - (452058): instance 6074401f-0112-4de1-629c-000000150808
>> on database directory /opt/jcr/repository/workspaces/default/db
>>
>> Database Class Loader started - derby.database.classpath=''
>> 2007-05-02 17:41:59.626 GMT Thread 
>> [DefaultQuartzScheduler_Worker-1,5,main] (XID = 28872), (SESSIONID =  
>> 0), (DATABASE = /opt/jcr/repository/workspaces/default/db), (DRDAID =  
>> null), Cleanup action starting
>> 2007-05-02 17:41:59.626 GMT Thread 
>> [DefaultQuartzScheduler_Worker-1,5,main] (XID = 28872), (SESSIONID =  
>> 0), (DATABASE = /opt/jcr/repository/workspaces/default/db), (DRDAID =  
>> null), Failed Statement is: select NODE_DATA from DEFAULT_NODE where  
>> NODE_ID = ?
>> java.lang.ArrayIndexOutOfBoundsException: -1
>>     at org.apache.derby.impl.store.raw.data.BasePage.getHeaderAtSlot 
>> (Unknown Source)
>>     at  
>> org.apache.derby.impl.store.raw.data.StoredPage.restorePortionLongColumn 
>> (Unknown Source)
>>     at  
>> org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder( 
>> Unknown Source)
>>     at org.apache.derby.impl.store.raw.data.OverflowInputStream.<init> 
>> (Unknown Source)
>>     at  
>> org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray 
>> (Unknown Source)
>>     at  
>> org.apache.derby.impl.store.raw.data.StoredPage.restoreLongRecordFromSlo 
>> t(Unknown Source)
>>     at  
>> org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot 
>> (Unknown Source)
>>     at org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot 
>> (Unknown Source)
>>     at  
>> org.apache.derby.impl.store.access.conglomerate.GenericConglomerateContr 
>> oller.fetch(Unknown Source)
>>     at  
>> org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowC 
>> ore(Unknown Source)
>>     at  
>> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCor 
>> e(Unknown Source)
>>     at  
>> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow 
>> (Unknown Source)
>>     at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown  
>> Source)
>>     at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)
>>     at  
>> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.loa 
>> d(DatabasePersistenceManager.java:339)
>>     at  
>> org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState 
>> (SharedItemStateManager.java:1101)
>>     at  
>> org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualIte 
>> mState(SharedItemStateManager.java:1028)
>>     at  
>> org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState 
>> (SharedItemStateManager.java:250)
>>     at  
>> org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState 
>> (LocalItemStateManager.java:95)
>>     at  
>> org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState 
>> (LocalItemStateManager.java:150)
>>     at 
>> org.apache.jackrabbit.core.state.XAItemStateManager.getItemState 
>> (XAItemStateManager.java:226)
>>     at  
>> org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState 
>> (SessionItemStateManager.java:177)
>>     at org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState 
>> (HierarchyManagerImpl.java:120)
>>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
>> (HierarchyManagerImpl.java:267)
>>     at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
>> (CachingHierarchyManager.java:132)
>>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
>> (HierarchyManagerImpl.java:267)
>>     at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
>> (CachingHierarchyManager.java:132)
>>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
>> (HierarchyManagerImpl.java:203)
>>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
>> (HierarchyManagerImpl.java:341)
>>     at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
>> (CachingHierarchyManager.java:193)
>>     at org.apache.jackrabbit.core.NodeImpl.resolveRelativeNodePath 
>> (NodeImpl.java:243)
>>     at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2412)
>>     at com.sparta.wcm.jobs.UpdateEmployeeList.initSession 
>> (UpdateEmployeeList.java:181)
>>     at com.sparta.wcm.jobs.UpdateEmployeeList.execute 
>> (UpdateEmployeeList.java:97)
>>     at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
>>     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run 
>> (SimpleThreadPool.java:529)
>> Cleanup action completed
>>
>>
>> -- 
>>
>> Steven Huey
>> Steven.Huey@sparta.com
>>
>>
>>
>>
>>
> 
> 
> 


Re: Derby Errors with Apache Jackrabbit

Posted by Mike Matrigali <mi...@sbcglobal.net>.
The problem looks like Derby is encountering a bad pointer while
traversing a long column chain - likely a blob or clob column.  The
thing to narrow down is if this is a static problem in the existing
db, or some runtime issue with muliple threads of control accessing
(read/write) the data.  I have seen these types of issues in 
multi-threaded apps where multiple threads use the same connection (ie. 
same transaction) and one thread is in a select loop on a large object 
and another thread updates the same object breaking the linkage in the
middle.  locking will prevent this if threads use different transactions 
but not when using the same transaction.

Also are you using embedded or network version.

Can you reproduce the error, single threaded on a copy of the db?  You
can use logStatementText to get the exact value of ? in that statement
if you have some jackrabbit script that reproduces the problem.

Does anyone know how hard it would be to get the error statement to log
to derby.log the parameters of the statement?

The derby code should be checking for the -1 return, but not sure that
will help you as I think it doesn't expect it.
Steven Huey wrote:
> Hi,
> 
> I'm using Derby 10.2.1.6 with Apache Jackrabbit 1.2.3 and just  started 
> getting the following error in our derby.log file, which is  rendering 
> our Jackrabbit repository inaccessible. To date we've had  no problems 
> with Derby and it's been maintenance free so I'm not sure  how to 
> proceed to resolve the errors, any help is greatly appreciated.
> 
> Database Class Loader started - derby.database.classpath=''
> ----------------------------------------------------------------
> 2007-05-02 17:41:12.805 GMT:
> Booting Derby version The Apache Software Foundation - Apache Derby -  
> 10.2.1.6 - (452058): instance 6074401f-0112-4de1-629c-000000150808
> on database directory /opt/jcr/repository/workspaces/default/db
> 
> Database Class Loader started - derby.database.classpath=''
> 2007-05-02 17:41:59.626 GMT Thread 
> [DefaultQuartzScheduler_Worker-1,5,main] (XID = 28872), (SESSIONID =  
> 0), (DATABASE = /opt/jcr/repository/workspaces/default/db), (DRDAID =  
> null), Cleanup action starting
> 2007-05-02 17:41:59.626 GMT Thread 
> [DefaultQuartzScheduler_Worker-1,5,main] (XID = 28872), (SESSIONID =  
> 0), (DATABASE = /opt/jcr/repository/workspaces/default/db), (DRDAID =  
> null), Failed Statement is: select NODE_DATA from DEFAULT_NODE where  
> NODE_ID = ?
> java.lang.ArrayIndexOutOfBoundsException: -1
>     at org.apache.derby.impl.store.raw.data.BasePage.getHeaderAtSlot 
> (Unknown Source)
>     at  
> org.apache.derby.impl.store.raw.data.StoredPage.restorePortionLongColumn 
> (Unknown Source)
>     at  
> org.apache.derby.impl.store.raw.data.OverflowInputStream.fillByteHolder( 
> Unknown Source)
>     at org.apache.derby.impl.store.raw.data.OverflowInputStream.<init> 
> (Unknown Source)
>     at  
> org.apache.derby.impl.store.raw.data.StoredPage.readRecordFromArray 
> (Unknown Source)
>     at  
> org.apache.derby.impl.store.raw.data.StoredPage.restoreLongRecordFromSlo 
> t(Unknown Source)
>     at  
> org.apache.derby.impl.store.raw.data.StoredPage.restoreRecordFromSlot 
> (Unknown Source)
>     at org.apache.derby.impl.store.raw.data.BasePage.fetchFromSlot 
> (Unknown Source)
>     at  
> org.apache.derby.impl.store.access.conglomerate.GenericConglomerateContr 
> oller.fetch(Unknown Source)
>     at  
> org.apache.derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowC 
> ore(Unknown Source)
>     at  
> org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCor 
> e(Unknown Source)
>     at  
> org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow 
> (Unknown Source)
>     at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(Unknown  
> Source)
>     at org.apache.derby.impl.jdbc.EmbedResultSet.next(Unknown Source)
>     at  
> org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.loa 
> d(DatabasePersistenceManager.java:339)
>     at  
> org.apache.jackrabbit.core.state.SharedItemStateManager.loadItemState 
> (SharedItemStateManager.java:1101)
>     at  
> org.apache.jackrabbit.core.state.SharedItemStateManager.getNonVirtualIte 
> mState(SharedItemStateManager.java:1028)
>     at  
> org.apache.jackrabbit.core.state.SharedItemStateManager.getItemState 
> (SharedItemStateManager.java:250)
>     at  
> org.apache.jackrabbit.core.state.LocalItemStateManager.getNodeState 
> (LocalItemStateManager.java:95)
>     at  
> org.apache.jackrabbit.core.state.LocalItemStateManager.getItemState 
> (LocalItemStateManager.java:150)
>     at org.apache.jackrabbit.core.state.XAItemStateManager.getItemState 
> (XAItemStateManager.java:226)
>     at  
> org.apache.jackrabbit.core.state.SessionItemStateManager.getItemState 
> (SessionItemStateManager.java:177)
>     at org.apache.jackrabbit.core.HierarchyManagerImpl.getItemState 
> (HierarchyManagerImpl.java:120)
>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
> (HierarchyManagerImpl.java:267)
>     at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
> (CachingHierarchyManager.java:132)
>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
> (HierarchyManagerImpl.java:267)
>     at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
> (CachingHierarchyManager.java:132)
>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
> (HierarchyManagerImpl.java:203)
>     at org.apache.jackrabbit.core.HierarchyManagerImpl.resolvePath 
> (HierarchyManagerImpl.java:341)
>     at org.apache.jackrabbit.core.CachingHierarchyManager.resolvePath 
> (CachingHierarchyManager.java:193)
>     at org.apache.jackrabbit.core.NodeImpl.resolveRelativeNodePath 
> (NodeImpl.java:243)
>     at org.apache.jackrabbit.core.NodeImpl.getNode(NodeImpl.java:2412)
>     at com.sparta.wcm.jobs.UpdateEmployeeList.initSession 
> (UpdateEmployeeList.java:181)
>     at com.sparta.wcm.jobs.UpdateEmployeeList.execute 
> (UpdateEmployeeList.java:97)
>     at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
>     at org.quartz.simpl.SimpleThreadPool$WorkerThread.run 
> (SimpleThreadPool.java:529)
> Cleanup action completed
> 
> 
> -- 
> 
> Steven Huey
> Steven.Huey@sparta.com
> 
> 
> 
> 
>