You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@manifoldcf.apache.org by kw...@apache.org on 2014/01/22 22:49:35 UTC
svn commit: r1560527 - in
/manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager:
LockGate.java LockObject.java
Author: kwright
Date: Wed Jan 22 21:49:35 2014
New Revision: 1560527
URL: http://svn.apache.org/r1560527
Log:
Fix the way we handle retirement of records from pool.
Modified:
manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockGate.java
manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockObject.java
Modified: manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockGate.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockGate.java?rev=1560527&r1=1560526&r2=1560527&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockGate.java (original)
+++ manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockGate.java Wed Jan 22 21:49:35 2014
@@ -104,10 +104,13 @@ public class LockGate
this.lockPool = lockPool;
}
- public synchronized void makeInvalid()
+ public void makeInvalid()
{
- this.lockPool = null;
- lockObject.makeInvalid();
+ synchronized (lockObject)
+ {
+ this.lockPool = null;
+ lockObject.makeInvalid();
+ }
}
protected void waitForPermission(Long threadID)
@@ -196,13 +199,14 @@ public class LockGate
public void leaveWriteLock()
throws ManifoldCFException, InterruptedException, ExpiredObjectException
{
- // Leave, and if we succeed, flush from pool.
- lockObject.leaveWriteLock();
- synchronized (this)
+ synchronized (lockObject)
{
- if (lockPool == null)
- throw new ExpiredObjectException("Invalid");
- lockPool.releaseObject(lockKey, this);
+ // Leave, and if we succeed, flush from pool.
+ if (lockObject.leaveWriteLock())
+ {
+ if (lockPool != null)
+ lockPool.releaseObject(lockKey, this);
+ }
}
}
@@ -237,13 +241,14 @@ public class LockGate
public void leaveNonExWriteLock()
throws ManifoldCFException, InterruptedException, ExpiredObjectException
{
- // Leave, and if we succeed, flush from pool.
- lockObject.leaveNonExWriteLock();
- synchronized (this)
+ synchronized (lockObject)
{
- if (lockPool == null)
- throw new ExpiredObjectException("Invalid");
- lockPool.releaseObject(lockKey, this);
+ // Leave, and if we succeed, flush from pool.
+ if (lockObject.leaveNonExWriteLock())
+ {
+ if (lockPool != null)
+ lockPool.releaseObject(lockKey, this);
+ }
}
}
@@ -279,12 +284,13 @@ public class LockGate
throws ManifoldCFException, InterruptedException, ExpiredObjectException
{
// Leave, and if we succeed, flush from pool.
- lockObject.leaveReadLock();
- synchronized (this)
+ synchronized (lockObject)
{
- if (lockPool == null)
- throw new ExpiredObjectException("Invalid");
- lockPool.releaseObject(lockKey, this);
+ if (lockObject.leaveReadLock())
+ {
+ if (lockPool != null)
+ lockPool.releaseObject(lockKey, this);
+ }
}
}
Modified: manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockObject.java
URL: http://svn.apache.org/viewvc/manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockObject.java?rev=1560527&r1=1560526&r2=1560527&view=diff
==============================================================================
--- manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockObject.java (original)
+++ manifoldcf/branches/CONNECTORS-867/framework/core/src/main/java/org/apache/manifoldcf/core/lockmanager/LockObject.java Wed Jan 22 21:49:35 2014
@@ -129,7 +129,7 @@ public class LockObject
}
}
- public synchronized void leaveWriteLock()
+ public synchronized boolean leaveWriteLock()
throws ManifoldCFException, InterruptedException, ExpiredObjectException
{
if (lockPool == null)
@@ -142,6 +142,7 @@ public class LockObject
obtainedWrite = false;
notifyAll();
+ return true;
}
protected void clearGlobalWriteLockNoWait()
@@ -246,7 +247,7 @@ public class LockObject
}
}
- public synchronized void leaveNonExWriteLock()
+ public synchronized boolean leaveNonExWriteLock()
throws ManifoldCFException, InterruptedException, ExpiredObjectException
{
if (lockPool == null)
@@ -257,13 +258,14 @@ public class LockObject
if (obtainedNonExWrite > 1)
{
obtainedNonExWrite--;
- return;
+ return false;
}
clearGlobalNonExWriteLock();
obtainedNonExWrite--;
notifyAll();
+ return true;
}
protected void clearGlobalNonExWriteLockNoWait()
@@ -357,7 +359,7 @@ public class LockObject
}
}
- public synchronized void leaveReadLock()
+ public synchronized boolean leaveReadLock()
throws ManifoldCFException, InterruptedException, ExpiredObjectException
{
if (lockPool == null)
@@ -368,13 +370,14 @@ public class LockObject
if (obtainedRead > 1)
{
obtainedRead--;
- return;
+ return false;
}
clearGlobalReadLock();
obtainedRead--;
notifyAll();
+ return true;
}
protected void clearGlobalReadLockNoWait()