Forums de discussion

Can not shut down JBoss server due to Jackrabbit locks

thumbnail
hung the ngo, modifié il y a 15 années.

Can not shut down JBoss server due to Jackrabbit locks

New Member Publications: 15 Date d'inscription: 05/07/08 Publications récentes
Hi everyone,

Im trying to migrate Liferay from application development server to a clustered production environments. In the process, i reconfigure Jackrabbit to use database instead of file system. However, after the configuration, i can not shut down JBoss as the thread keeps hanging at the closing down of Jackrabbit:

"ObservationManager" daemon prio=10 tid=0x00002aab48f21c00 nid=0x4aec in Object.wait() [0x000000004971f000..0x000000004971fd90]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00002aab01aa9328> (a org.apache.commons.collections.buffer.BlockingBuffer)
at java.lang.Object.wait(Object.java:485)
at org.apache.commons.collections.buffer.BlockingBuffer.remove(BlockingBuffer.java:191)
- locked <0x00002aab01aa9328> (a org.apache.commons.collections.buffer.BlockingBuffer)
at org.apache.jackrabbit.core.observation.ObservationDispatcher.run(ObservationDispatcher.java:138)
at java.lang.Thread.run(Thread.java:619)

"JBoss Shutdown Hook" daemon prio=10 tid=0x000000005e0dfc00 nid=0x4aea in Object.wait() [0x000000004991c000..0x0000000049921a90]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00002aab015cdb60> (a EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock)
at java.lang.Object.wait(Object.java:485)
at EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock.acquire(Unknown Source)
- locked <0x00002aab015cdb60> (a EDU.oswego.cs.dl.util.concurrent.WriterPreferenceReadWriteLock$WriterLock)
at org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:939)
at org.apache.jackrabbit.core.TransientRepository.stopRepository(TransientRepository.java:275)
- locked <0x00002aaac53271a0> (a org.apache.jackrabbit.core.TransientRepository)
at org.apache.jackrabbit.core.TransientRepository.loggedOut(TransientRepository.java:427)
- locked <0x00002aaac53271a0> (a org.apache.jackrabbit.core.TransientRepository)
at org.apache.jackrabbit.core.SessionImpl.notifyLoggedOut(SessionImpl.java:573)
at org.apache.jackrabbit.core.SessionImpl.logout(SessionImpl.java:1246)
- locked <0x00002aab01ac3790> (a org.apache.jackrabbit.core.XASessionImpl)
at org.apache.jackrabbit.core.XASessionImpl.logout(XASessionImpl.java:403)
- locked <0x00002aab01ac3790> (a org.apache.jackrabbit.core.XASessionImpl)
at org.apache.jackrabbit.core.RepositoryImpl.doShutdown(RepositoryImpl.java:981)
- locked <0x00002aab015cd728> (a org.apache.jackrabbit.core.RepositoryImpl)
at org.apache.jackrabbit.core.RepositoryImpl.shutdown(RepositoryImpl.java:948)
at com.liferay.portal.jcr.jackrabbit.JCRFactoryImpl.shutdown(JCRFactoryImpl.java:164)
at com.liferay.portal.jcr.JCRFactoryUtil.shutdown(JCRFactoryUtil.java:70)
at com.liferay.portal.events.GlobalShutdownAction.run(GlobalShutdownAction.java:105)
at com.liferay.portal.events.EventsProcessor._processEvent(EventsProcessor.java:167)
at com.liferay.portal.events.EventsProcessor._process(EventsProcessor.java:119)
at com.liferay.portal.events.EventsProcessor.process(EventsProcessor.java:55)
at com.liferay.portal.servlet.MainServlet.destroy(MainServlet.java:805)
at org.apache.catalina.core.StandardWrapper.unload(StandardWrapper.java:1382)
- locked <0x00002aaac97a8ed8> (a org.apache.catalina.core.StandardWrapper)
at org.apache.catalina.core.StandardWrapper.stop(StandardWrapper.java:1727)
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4513)
- locked <0x00002aaac8b797f8> (a org.apache.catalina.core.StandardContext)
at org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:1163)
at org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4617)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:296)
at org.jboss.mx.server.RawDynamicInvoker.invoke(RawDynamicInvoker.java:164)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.web.tomcat.service.TomcatDeployer.performUndeployInternal(TomcatDeployer.java:461)
at org.jboss.web.tomcat.service.TomcatDeployer.performUndeploy(TomcatDeployer.java:432)
at org.jboss.web.AbstractWebDeployer.stop(AbstractWebDeployer.java:422)
- locked <0x00002aaac8edde00> (a org.jboss.web.tomcat.service.TomcatDeployer)
at org.jboss.web.WebModule.stopModule(WebModule.java:100)
- locked <0x00002aaac72d1b08> (a org.jboss.web.WebModule)
at org.jboss.web.WebModule.stopService(WebModule.java:66)
at org.jboss.system.ServiceMBeanSupport.jbossInternalStop(ServiceMBeanSupport.java:315)
at org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:247)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceController.java:978)
at $Proxy0.stop(Unknown Source)
at org.jboss.system.ServiceController.stop(ServiceController.java:508)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy53.stop(Unknown Source)
at org.jboss.web.AbstractWebContainer.stop(AbstractWebContainer.java:498)
- locked <0x00002aaacab31d88> (a org.jboss.web.tomcat.service.JBossWeb)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.interceptor.DynamicInterceptor.invoke(DynamicInterceptor.java:97)
at org.jboss.system.InterceptorServiceMBeanSupport.invokeNext(InterceptorServiceMBeanSupport.java:238)
at org.jboss.wsf.container.jboss42.DeployerInterceptor.stop(DeployerInterceptor.java:98)
at org.jboss.deployment.SubDeployerInterceptorSupport$XMBeanInterceptor.stop(SubDeployerInterceptorSupport.java:196)
at org.jboss.deployment.SubDeployerInterceptor.invoke(SubDeployerInterceptor.java:99)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)
at $Proxy54.stop(Unknown Source)
at org.jboss.deployment.MainDeployer.stop(MainDeployer.java:667)
at org.jboss.deployment.MainDeployer.undeploy(MainDeployer.java:638)
at org.jboss.deployment.MainDeployer.shutdown(MainDeployer.java:516)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)
at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)
at org.jboss.system.server.ServerImpl$ShutdownHook.shutdownDeployments(ServerImpl.java:1058)
at org.jboss.system.server.ServerImpl$ShutdownHook.shutdown(ServerImpl.java:1033)
at org.jboss.system.server.ServerImpl$ShutdownHook.run(ServerImpl.java:996)

I read the wiki and followed the instructions in configuring Jackrabbit for clustering. I can still use the document library portlet and upload documents, just that there is a problem when trying to shut down the whole server.

There is also a ".lock" file created under jackrabbit home folder even though i already configure it to use database. Just wonder whether it is correct?

Thank you in advance. Any helps will be greatly appreciated.


Below is my repository.xml:


<?xml version="1.0"?>

<Repository>

<!--
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/repository" />
</FileSystem>
-->

<!--
Database File System (Cluster Configuration)

This is sample configuration for mysql persistence that can be used for
clustering Jackrabbit. For other databases, change the connection,
credentials, and schema settings.
-->

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost/dbncscorpjcr" />
<param name="user" value="dbadmin" />
<param name="password" value="itoldyou" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_R_FS_"/>
</FileSystem>

<Security appName="Jackrabbit">
<AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager" />
<LoginModule class="org.apache.jackrabbit.core.security.SimpleLoginModule">
<param name="anonymousId" value="anonymous" />
</LoginModule>
</Security>
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="liferay" />
<Workspace name="${wsp.name}">
<!--
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${wsp.home}" />
</FileSystem>

<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager" />
-->
<!--
Database File System and Persistence (Cluster Configuration)

This is sample configuration for mysql persistence that can be used for
clustering Jackrabbit. For other databases, change the connection,
credentials, and schema settings.
-->

<PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url" value="jdbc:mysql://localhost/dbncscorpjcr" />
<param name="user" value="dbadmin" />
<param name="password" value="itoldyou" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_PM_${wsp.name}_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost/dbncscorpjcr" />
<param name="user" value="dbadmin" />
<param name="password" value="itoldyou" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_FS_${wsp.name}_"/>
</FileSystem>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<!--
<FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
<param name="path" value="${rep.home}/version" />
</FileSystem>

<PersistenceManager class="org.apache.jackrabbit.core.persistence.bundle.BundleFsPersistenceManager" />
-->
<!--
Database File System and Persistence (Cluster Configuration)

This is sample configuration for mysql persistence that can be used for
clustering Jackrabbit. For other databases, change the connection,
credentials, and schema settings.
-->

<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost/dbncscorpjcr" />
<param name="user" value="dbadmin" />
<param name="password" value="itoldyou" />
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_V_FS_"/>
</FileSystem>
<PersistenceManager class="org.apache.jackrabbit.core.state.db.SimpleDbPersistenceManager">
<param name="driver" value="com.mysql.jdbc.Driver" />
<param name="url" value="jdbc:mysql://localhost/dbncscorpjcr" />
<param name="user" value="dbadmin" />
<param name="password" value="itoldyou" />
<param name="schema" value="mysql" />
<param name="schemaObjectPrefix" value="J_V_PM_" />
<param name="externalBLOBs" value="false" />
</PersistenceManager>
</Versioning>

<!--
Cluster Configuration

This is sample configuration for mysql persistence that can be used for
clustering Jackrabbit. For other databases, change the connection,
credentials, and schema settings.
-->

<!--
<Cluster id="node_1" syncDelay="5">
<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
<param name="revision" value="${rep.home}/revision"/>
<param name="driver" value="com.mysql.jdbc.Driver"/>
<param name="url" value="jdbc:mysql://localhost/dbncscorpjcr" />
<param name="user" value="dbadmin"/>
<param name="password" value="itoldyou"/>
<param name="schema" value="mysql"/>
<param name="schemaObjectPrefix" value="J_C_"/>
</Journal>
</Cluster>
-->
</Repository>
thumbnail
hung the ngo, modifié il y a 15 années.

RE: Can not shut down JBoss server due to Jackrabbit locks

New Member Publications: 15 Date d'inscription: 05/07/08 Publications récentes
I found out that this is related to a bug:

https://issues.apache.org/jira/browse/JCR-990?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Anybody encounters the same problem and willing to share? i can modify the source code but it is too risky to remove the lock.
Patrick Cornelissen, modifié il y a 14 années.

RE: Can not shut down JBoss server due to Jackrabbit locks

New Member Publications: 2 Date d'inscription: 14/07/09 Publications récentes
We're currently having the same problem with liferay 5.2.2 Hopefully we'll find a solution for that...