I'm having a weird issue that I think is related to the Derby database
used in the repository. As far as I can tell I'm using the api
correctly, adding nodes, making versionable nodes versionable, checking
out those nodes, but when I try to check in I'm getting a
javax.jcr.InvalidItemStateException: Unable to checkin node. Node has
pending changes:
This is understandable since I haven't saved the session yet.
So I decided to save the session or the parent node or any node above
the node I want to check in for that matter and I'm getting this stack
trace from the jackrabbit logs:
ERROR 40XD1: Container was opened in read-only mode.
at
org.apache.derby.iapi.error.StandardException.newException(Unknown
Source)
at
org.apache.derby.impl.store.raw.data.BaseContainer.use(Unknown Source)
at
org.apache.derby.impl.store.raw.data.BaseContainerHandle.useContainer(Un
known Source)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(U
nknown Source)
at
org.apache.derby.impl.store.raw.data.BaseDataFileFactory.openContainer(U
nknown Source)
at
org.apache.derby.impl.store.raw.xact.Xact.openContainer(Unknown Source)
at
org.apache.derby.impl.store.access.conglomerate.OpenConglomerate.init(Un
known Source)
at org.apache.derby.impl.store.access.heap.Heap.open(Unknown
Source)
at
org.apache.derby.impl.store.access.RAMTransaction.openConglomerate(Unkno
wn Source)
at
org.apache.derby.impl.store.access.RAMTransaction.openCompiledConglomera
te(Unknown Source)
at
org.apache.derby.impl.sql.execute.RowChangerImpl.openForUpdate(Unknown
Source)
at org.apache.derby.impl.sql.execute.RowChangerImpl.open(Unknown
Source)
at org.apache.derby.impl.sql.execute.RowChangerImpl.open(Unknown
Source)
at
org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unkno
wn Source)
at
org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unkno
wn Source)
at
org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown
Source)
at
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.exe
cuteStmt(DatabasePersistenceManager.java:858)
at
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.sto
re(DatabasePersistenceManager.java:441)
at
org.apache.jackrabbit.core.persistence.AbstractPersistenceManager.store(
AbstractPersistenceManager.java:73)
at
org.apache.jackrabbit.core.persistence.db.DatabasePersistenceManager.sto
re(DatabasePersistenceManager.java:282)
at
org.apache.jackrabbit.core.state.SharedItemStateManager$Update.end(Share
dItemStateManager.java:688)
at
org.apache.jackrabbit.core.state.SharedItemStateManager.update(SharedIte
mStateManager.java:857)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemS
tateManager.java:324)
at
org.apache.jackrabbit.core.state.LocalItemStateManager.update(LocalItemS
tateManager.java:300)
at
org.apache.jackrabbit.core.version.AbstractVersionManager$WriteOperation
.save(AbstractVersionManager.java:180)
at
org.apache.jackrabbit.core.version.AbstractVersionManager.createVersionH
istory(AbstractVersionManager.java:323)
at
org.apache.jackrabbit.core.version.VersionManagerImpl$1.run(VersionManag
erImpl.java:224)
at
org.apache.jackrabbit.core.version.VersionManagerImpl$DynamicESCFactory.
doSourced(VersionManagerImpl.java:579)
at
org.apache.jackrabbit.core.version.VersionManagerImpl.createVersionHisto
ry(VersionManagerImpl.java:221)
at
org.apache.jackrabbit.core.version.XAVersionManager.createVersionHistory
(XAVersionManager.java:149)
at
org.apache.jackrabbit.core.ItemImpl.initVersionHistories(ItemImpl.java:7
85)
at org.apache.jackrabbit.core.ItemImpl.save(ItemImpl.java:1221)
at
org.apache.jackrabbit.core.SessionImpl.save(SessionImpl.java:896)
at
org.apache.jackrabbit.jca.JCASessionHandle.save(JCASessionHandle.java:17
8)
at
org.apache.jackrabbit.rmi.server.ServerSession.save(ServerSession.java:2
10)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.jav
a:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessor
Impl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
at sun.rmi.transport.Transport$1.run(Transport.java:153)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:149)
at
sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:466)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.ja
va:707)
at java.lang.Thread.run(Thread.java:595)
I've been looking around and I've found that this error is attributed to
a Derby bug, https://issues.apache.org/jira/browse/DERBY-541, that was
supposedly fixed in 10.2.1.6 and looking in my server I find that I have
derby-10.2.1.6.jar.
Unfortunately I am stuck! I don't have a clue how to fix this, does
anyone have any ideas?
Thanks