Another checkpoint. Added version checking to ChildEntry.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3236 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-06-24 13:38:58 +00:00
parent 62b7425361
commit 619f31b1bd
5 changed files with 38 additions and 15 deletions

View File

@@ -195,6 +195,7 @@ class AVMTester implements Runnable
{
try
{
long threadID = Thread.currentThread().getId();
long startTime = System.currentTimeMillis();
for (int i = 0; i < fOpCount; i++)
{
@@ -206,7 +207,7 @@ class AVMTester implements Runnable
{
return;
}
System.out.print(fID + ":" + i + ":");
System.out.print(threadID + ":" + i + ":");
int which = fgRandom.nextInt(fOpTable.length);
switch (fOpTable[which])
{

View File

@@ -42,6 +42,11 @@ public class ChildEntryImpl implements ChildEntry, Serializable
*/
private AVMNode fChild;
/**
* The Optimistic lock version
*/
private long fVers;
/**
* Default constructor for Hibernate.
*/
@@ -145,4 +150,20 @@ public class ChildEntryImpl implements ChildEntry, Serializable
{
return fName.hashCode() + fParent.hashCode();
}
/**
* @return the vers
*/
protected long getVers()
{
return fVers;
}
/**
* @param vers the vers to set
*/
protected void setVers(long vers)
{
fVers = vers;
}
}

View File

@@ -148,7 +148,7 @@
column="root_id" not-null="true">
</many-to-one>
</class>
<class name="ChildEntryImpl" proxy="ChildEntry" table="child_entries">
<class name="ChildEntryImpl" proxy="ChildEntry" table="child_entries" optimistic-lock="version">
<cache usage="read-write"/>
<composite-id>
<key-property name="name" type="string" column="name">
@@ -156,6 +156,7 @@
<key-many-to-one name="parent" column="parent_id" class="DirectoryNodeImpl">
</key-many-to-one>
</composite-id>
<version name="vers" column="vers" type="long"/>
<many-to-one name="child" column="child_id" class="AVMNodeImpl"
not-null="true">
</many-to-one>

View File

@@ -115,22 +115,22 @@ public class HibernateTxn
if (t instanceof StaleStateException)
{
System.err.println("Lost Race");
// StackTraceElement [] stack = t.getStackTrace();
// long threadID = Thread.currentThread().getId();
// for (StackTraceElement frame : stack)
// {
// System.err.println(threadID + " " + frame);
// }
StackTraceElement [] stack = t.getStackTrace();
long threadID = Thread.currentThread().getId();
for (StackTraceElement frame : stack)
{
System.err.println(threadID + " " + frame);
}
}
else
{
System.err.println("Deadlock");
// StackTraceElement [] stack = t.getStackTrace();
// long threadID = Thread.currentThread().getId();
// for (StackTraceElement frame : stack)
// {
// System.err.println(threadID + " " + frame);
// }
StackTraceElement [] stack = t.getStackTrace();
long threadID = Thread.currentThread().getId();
for (StackTraceElement frame : stack)
{
System.err.println(threadID + " " + frame);
}
try
{
long interval;