Hi list,
we have troubles shutting down JackRabbit running with a derby database
over JNDI. We are using the 1.5.0 build of JackRabbit. When we invoke
JackrabbitRepository#shutdown() we get the following Exception:
2009-06-18 13:39:28,996 [OSGi Console] WARN DatabaseFileSystem -
execute failed, about to reconnect...
2009-06-18 13:39:28,996 [OSGi Console] WARN DatabaseFileSystem -
execute failed, about to reconnect...
2009-06-18 13:39:38,998 [OSGi Console] ERROR DatabaseFileSystem - failed
to re-establish connection
java.sql.SQLNonTransientConnectionException: A network protocol error
was encountered and the connection has been terminated: the requested
command encountered an unarchitected and implementation-specific
condition for which there was no architected message
at
org.apache.derby.client.am.SQLExceptionFactory40.getSQLException(Unknown
Source)
at org.apache.derby.client.am.SqlException.getSQLException(Unknown
Source)
at org.apache.derby.client.am.Connection.prepareStatement(Unknown
Source)
at
de.visualrules.team.server.core.internal.jndi.TSDataSource$TSConnection.
prepareStatement(TSDataSource.java:516)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.initPreparedStatemen
ts(DatabaseFileSystem.java:1291)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.reestablishConnectio
n(DatabaseFileSystem.java:1041)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.executeStmt(Database
FileSystem.java:1085)
at
org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.exists(DatabaseFileS
ystem.java:338)
at
org.apache.jackrabbit.core.fs.BasedFileSystem.exists(BasedFileSystem.jav
a:121)
at
org.apache.jackrabbit.core.fs.FileSystemResource.makeParentDirs(FileSyst
emResource.java:102)
at
org.apache.jackrabbit.core.RepositoryImpl.storeRepProps(RepositoryImpl.j
ava:1303)
at
org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java
:1176)
at
org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:1
111)
at
org.apache.jackrabbit.core.TransientRepository.stopRepository(TransientR
epository.java:271)
at
org.apache.jackrabbit.core.TransientRepository.loggedOut(TransientReposi
tory.java:423)
at
org.apache.jackrabbit.core.SessionImpl.notifyLoggedOut(SessionImpl.java:
600)
at
org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1174)
at
org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:403)
at
de.visualrules.repository.internal.RuleRepositorySession.logout(RuleRepo
sitorySession.java:110)
at
de.visualrules.repository.internal.RuleRepositoryManager.logout(RuleRepo
sitoryManager.java:576)
at
de.visualrules.repository.internal.RuleRepositoryManager.stopRuleReposit
ory(RuleRepositoryManager.java:530)
at
de.visualrules.team.server.TeamServerApplication.tearDownRuleRepository(
TeamServerApplication.java:554)
at
de.visualrules.team.server.TeamServerApplication.stop(TeamServerApplicat
ion.java:212)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.destroySpecific(Eclips
eAppHandle.java:87)
at
org.osgi.service.application.ApplicationHandle.destroy(ApplicationHandle
.java:168)
at
org.eclipse.equinox.internal.app.EclipseAppContainer.stopAllApps(Eclipse
AppContainer.java:377)
at
org.eclipse.equinox.internal.app.EclipseAppContainer.bundleChanged(Eclip
seAppContainer.java:365)
at
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent
(BundleContextImpl.java:1234)
at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventMana
ger.java:211)
at
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchrono
us(ListenerQueue.java:141)
at
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPri
vileged(Framework.java:1518)
at
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Fr
amework.java:1469)
at
org.eclipse.osgi.framework.internal.core.Framework.shutdown(Framework.ja
va:667)
at
org.eclipse.osgi.framework.internal.core.Framework.close(Framework.java:
576)
at
org.eclipse.osgi.framework.internal.core.OSGi.close(OSGi.java:41)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandProvider._close
(FrameworkCommandProvider.java:1154)
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:597)
at
org.eclipse.osgi.framework.internal.core.FrameworkCommandInterpreter.exe
cute(FrameworkCommandInterpreter.java:150)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.docommand(Fram
eworkConsole.java:302)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.console(Framew
orkConsole.java:287)
at
org.eclipse.osgi.framework.internal.core.FrameworkConsole.run(FrameworkC
onsole.java:223)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.derby.client.am.DisconnectException: A network
protocol error was encountered and the connection has been terminated:
the requested command encountered an unarchitected and
implementation-specific condition for which there was no architected
message
at
org.apache.derby.client.net.NetConnectionReply.parseCMDCHKRM(Unknown
Source)
at
org.apache.derby.client.net.NetStatementReply.parsePrepareError(Unknown
Source)
at
org.apache.derby.client.net.NetStatementReply.parsePRPSQLSTTreply(Unknow
n Source)
at
org.apache.derby.client.net.NetStatementReply.readPrepareDescribeOutput(
Unknown Source)
at
org.apache.derby.client.net.StatementReply.readPrepareDescribeOutput(Unk
nown Source)
at
org.apache.derby.client.net.NetStatement.readPrepareDescribeOutput_(Unkn
own Source)
at
org.apache.derby.client.am.Statement.readPrepareDescribeOutput(Unknown
Source)
at
org.apache.derby.client.am.PreparedStatement.readPrepareDescribeInputOut
put(Unknown Source)
at
org.apache.derby.client.am.PreparedStatement.flowPrepareDescribeInputOut
put(Unknown Source)
at org.apache.derby.client.am.PreparedStatement.prepare(Unknown
Source)
at org.apache.derby.client.am.Connection.prepareStatementX(Unknown
Source)
... 43 more
Here is our repository.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD
Jackrabbit 1.4//EN"
"http://jackrabbit.apache.org/dtd/repository-1.4.dtd">
<Repository>
<!--
DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
<param name="url"
value="jdbc:derby:${rep.home}/datastore/db;create=true" /> <param
name="tablePrefix" value="datastore_" /> </DataStore
-->
<FileSystem class="org.apache.jackrabbit.core.fs.db.DerbyFileSystem">
<param name="url" value="java:comp/env/jdbc/repository" />
<param name="schemaObjectPrefix" value="fs_" />
<param name="driver" value="javax.naming.InitialContext" />
<param name="schema" value="derby"/>
</FileSystem>
<Security appName="Jackrabbit">
<AccessManager
class="xxx.AccessManager">
</AccessManager>
<LoginModule
class="xxx.LoginModule">
</LoginModule>
</Security>
<Workspaces rootPath="${rep.home}/workspaces"
defaultWorkspace="default" />
<Workspace name="${wsp.name}">
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DerbyFileSystem">
<param name="url" value="java:comp/env/jdbc/repository" />
<param name="schemaObjectPrefix" value="${wsp.name}_" />
<param name="driver" value="javax.naming.InitialContext" />
<param name="schema" value="derby"/>
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceMan
ager">
<param name="url" value="java:comp/env/jdbc/repository" />
<param name="schemaObjectPrefix" value="${wsp.name}_" />
<param name="driver" value="javax.naming.InitialContext" />
<param name="schema" value="derby"/>
</PersistenceManager>
<SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index" />
<param name="useCompoundFile" value="true" />
<param name="minMergeDocs" value="100" />
<param name="volatileIdleTime" value="3" />
<param name="maxMergeDocs" value="2147483647" />
<param name="mergeFactor" value="10" />
<param name="maxFieldLength" value="10000" />
<param name="bufferSize" value="10" />
<param name="cacheSize" value="1000" />
<param name="forceConsistencyCheck" value="false" />
<param name="enableConsistencyCheck" value="false" />
<param name="autoRepair" value="true" />
<param name="analyzer"
value="org.apache.lucene.analysis.standard.StandardAnalyzer"
/>
<param name="queryClass"
value="org.apache.jackrabbit.core.query.QueryImpl" />
<param name="respectDocumentOrder" value="true" />
<param name="resultFetchSize" value="2147483647" />
<param name="extractorPoolSize" value="0" />
<param name="extractorTimeout" value="100" />
<param name="extractorBackLogSize" value="100" />
</SearchIndex>
<ISMLocking
class="org.apache.jackrabbit.core.state.FineGrainedISMLocking">
</ISMLocking>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DerbyFileSystem">
<param name="url" value="java:comp/env/jdbc/repository" />
<param name="schemaObjectPrefix" value="version_" />
<param name="driver" value="javax.naming.InitialContext" />
<param name="schema" value="derby"/>
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceMan
ager">
<param name="url" value="java:comp/env/jdbc/repository" />
<param name="schemaObjectPrefix" value="version_" />
<param name="driver" value="javax.naming.InitialContext" />
<param name="schema" value="derby"/>
</PersistenceManager>
<ISMLocking
class="org.apache.jackrabbit.core.state.FineGrainedISMLocking">
</ISMLocking>
</Versioning>
<SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${rep.home}/repository/index" />
</SearchIndex>
</Repository>
And our workspace.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Workspace name="default">
<FileSystem
class="org.apache.jackrabbit.core.fs.db.DerbyFileSystem">
<param name="url" value="java:comp/env/jdbc/repository"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="driver" value="javax.naming.InitialContext"/>
<param name="schema" value="derby"/>
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.DerbyPersistenceMan
ager">
<param name="url" value="java:comp/env/jdbc/repository"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="driver" value="javax.naming.InitialContext"/>
<param name="schema" value="derby"/>
</PersistenceManager>
<SearchIndex
class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
<param name="path" value="${wsp.home}/index"/>
<param name="useCompoundFile" value="true"/>
<param name="minMergeDocs" value="100"/>
<param name="volatileIdleTime" value="3"/>
<param name="maxMergeDocs" value="2147483647"/>
<param name="mergeFactor" value="10"/>
<param name="maxFieldLength" value="10000"/>
<param name="bufferSize" value="10"/>
<param name="cacheSize" value="1000"/>
<param name="forceConsistencyCheck" value="false"/>
<param name="enableConsistencyCheck" value="false"/>
<param name="autoRepair" value="true"/>
<param name="analyzer"
value="org.apache.lucene.analysis.standard.StandardAnalyzer"/>
<param name="queryClass"
value="org.apache.jackrabbit.core.query.QueryImpl"/>
<param name="respectDocumentOrder" value="true"/>
<param name="resultFetchSize" value="2147483647"/>
<param name="extractorPoolSize" value="0"/>
<param name="extractorTimeout" value="100"/>
<param name="extractorBackLogSize" value="100"/>
</SearchIndex>
<ISMLocking
class="org.apache.jackrabbit.core.state.FineGrainedISMLocking">
</ISMLocking>
</Workspace>
The problem seems to appear since we are using JNDI for FileSystem and
PersistenceManager. Anybody an idea?
Thanks,
Sascha Theves