Bug 29150

Summary: Deadlock while initializing when using two jdbc stores with different scopes
Product: Slide Reporter: James Mason <masonjm>
Component: StoresAssignee: Slide Developer List <slide-dev>
Status: NEW ---    
Severity: minor    
Priority: P3    
Version: 2.0   
Target Milestone: ---   
Hardware: PC   
OS: All   

Description James Mason 2004-05-21 22:45:04 UTC
Quick Overview:
  I've setup my Domain to use two MySQL databases as stores, one scoped to "/"
and the other scoped to "/users". During startup when Slide attempts to
initialize the domain it encounters a deadlock trying to create "/users". After
a few seconds it tries to continue but dies because "/actions/read" never gets
created.

A similar setup using MySQL for one store and TX for the other works fine.

Other Info:
 MySQL version: 4.0.18-nt
 Slide version: 2.0 (The Tomcat 5.0.19 bundle)
 JDBC Driver version: 3.0.11

Below are snips from my Domain.xml file and a portion of the startup output.

Domain.xml:

<definition>
		
	<store name="main">
		<nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
			<parameter
name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
			<parameter name="driver">com.mysql.jdbc.Driver</parameter>
			<parameter name="url">jdbc:mysql://localhost/slide</parameter>
			<parameter name="user">slide</parameter>
			<parameter name="password">slide</parameter>
			<parameter name="dbcpPooling">true</parameter>
			<parameter name="maxPooledConnections">2</parameter>
			<parameter name="isolation">SERIALIZABLE</parameter>
			<parameter name="compress">false</parameter>
		</nodestore>
		<contentstore>
			<reference store="nodestore" />
		</contentstore>
		<securitystore>
			<reference store="nodestore" />
		</securitystore>
		<lockstore>
			<reference store="nodestore" />
		</lockstore>
		<revisiondescriptorsstore>
			<reference store="nodestore" />
		</revisiondescriptorsstore>
		<revisiondescriptorstore>
			<reference store="nodestore" />
		</revisiondescriptorstore>
	</store>

	<store name="users">
		<nodestore classname="org.apache.slide.store.impl.rdbms.JDBCStore">
			<parameter
name="adapter">org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter</parameter>
			<parameter name="driver">com.mysql.jdbc.Driver</parameter>
			<parameter name="url">jdbc:mysql://localhost/slide_users</parameter>
			<parameter name="user">slide_users</parameter>
			<parameter name="password">slide_users</parameter>
			<parameter name="dbcpPooling">true</parameter>
			<parameter name="maxPooledConnections">2</parameter>
			<parameter name="isolation">SERIALIZABLE</parameter>
			<parameter name="compress">false</parameter>
		</nodestore>
		<contentstore>
			<reference store="nodestore" />
		</contentstore>
		<securitystore>
			<reference store="nodestore" />
		</securitystore>
		<lockstore>
			<reference store="nodestore" />
		</lockstore>
		<revisiondescriptorsstore>
			<reference store="nodestore" />
		</revisiondescriptorsstore>
		<revisiondescriptorstore>
			<reference store="nodestore" />
		</revisiondescriptorstore>
	</store>
	
	<scope match="/" store="main"/>
	<scope match="/users" store="users"/>
</definition>

Console Output:

21 May 2004 15:27:37 - org.apache.slide.common.XMLUnmarshaller - INFO - Loading
object /
21 May 2004 15:27:37 - org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter -
INFO - /1.0
21 May 2004 15:27:37 - org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter -
INFO - /1.0
21 May 2004 15:27:37 - org.apache.slide.common.XMLUnmarshaller - INFO - Loading
object /users
21 May 2004 15:28:28 - org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter -
ERROR - SQL error 1205 on /users: Deadlock
found when trying to get lock; Try restarting transaction,  message from server:
"Lock wait timeout exceeded; Try restarting transaction"
org.apache.slide.common.ServiceAccessException: Service
org.apache.slide.store.impl.rdbms.JDBCStore@1b0bdc8 access error : Deadlock
found when trying to get lock; Try restarting transaction,  message from server:
"Lock wait timeout exceeded; Try restarting transaction"
        at
org.apache.slide.store.impl.rdbms.MySqlRDBMSAdapter.createException(MySqlRDBMSAdapter.java:60)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.storeObject(StandardRDBMSAdapter.java:197)
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.createObject(StandardRDBMSAdapter.java:89)
        at
org.apache.slide.store.impl.rdbms.AbstractRDBMSStore.createObject(AbstractRDBMSStore.java:476)
        at org.apache.slide.store.AbstractStore.createObject(AbstractStore.java:557)
        at org.apache.slide.store.ExtendedStore.createObject(ExtendedStore.java:436)
        at org.apache.slide.structure.StructureImpl.create(StructureImpl.java:322)
        at
org.apache.slide.common.XMLUnmarshaller.loadObjectNode(XMLUnmarshaller.java:158)
        at
org.apache.slide.common.XMLUnmarshaller.loadObjectNode(XMLUnmarshaller.java:295)
        at
org.apache.slide.common.XMLUnmarshaller.unmarshal(XMLUnmarshaller.java:90)
        at
org.apache.slide.common.NamespaceAccessTokenImpl.importData(NamespaceAccessTokenImpl.java:267)
        at org.apache.slide.common.Namespace.loadBaseData(Namespace.java:775)
        at org.apache.slide.common.Domain.initNamespace(Domain.java:814)
        at org.apache.slide.common.Domain.init(Domain.java:433)
        at org.apache.slide.common.Domain.selfInit(Domain.java:747)
        at org.apache.slide.common.Domain.accessNamespace(Domain.java:235)
        at wrappers.catalina.SlideRealm.start(SlideRealm.java:178)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1118)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:521)
        at org.apache.catalina.core.StandardService.start(StandardService.java:519)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:2345)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:594)
        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:324)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:297)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:398)
21 May 2004 15:28:28 - org.apache.slide.common.Namespace - INFO - Namespace base
configuration was already done before
21 May 2004 15:28:28 - org.apache.slide.common.Namespace - INFO - Loading
namespace slide configuration
21 May 2004 15:28:28 - org.apache.slide.common.Domain - ERROR -
org.apache.slide.structure.ObjectNotFoundException: No object found at /actions/read
org.apache.slide.structure.ObjectNotFoundException: No object found at /actions/read
        at
org.apache.slide.store.impl.rdbms.StandardRDBMSAdapter.retrieveObject(StandardRDBMSAdapter.java:283)