Author: mduerig
Date: Tue Aug 27 15:34:19 2013
New Revision: 1517849
URL: http://svn.apache.org/r1517849
Log:
OAK-960 Enable session refresh state coordination between multiple session in
single thread
Encapsulation: keep the actual refreshing in SessionDelegate
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/RefreshManager.java
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/RefreshManager.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/RefreshManager.java?rev=1517849&r1=1517848&r2=1517849&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/RefreshManager.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/RefreshManager.java
Tue Aug 27 15:34:19 2013
@@ -67,13 +67,13 @@ public class RefreshManager {
/**
* Called before the passed {@code sessionOperation} is performed. This
method
- * refreshes the session according to the rules given in the class comment.
+ * determines whether a session needs to be refreshed according to the
rules
+ * given in the class comment.
*
- * @param delegate session on which the {@code sessionOperation} is
executed
* @param sessionOperation the operation to be executed
* @return {@code true} if a refreshed, {@code false} otherwise.
*/
- boolean refreshIfNecessary(SessionDelegate delegate, SessionOperation<?>
sessionOperation) {
+ boolean needsRefresh(SessionOperation<?> sessionOperation) {
long now = System.currentTimeMillis();
long timeElapsed = now - lastAccessed;
lastAccessed = now;
@@ -93,7 +93,6 @@ public class RefreshManager {
// Refresh if forced or if the session has been idle too long
refreshAtNextAccess = false;
sessionSaveCount = getOr0(threadSaveCount);
- delegate.refresh(true);
return true;
}
}
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java?rev=1517849&r1=1517848&r2=1517849&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/SessionDelegate.java
Tue Aug 27 15:34:19 2013
@@ -105,7 +105,8 @@ public class SessionDelegate {
// Synchronize to avoid conflicting refreshes from concurrent JCR API
calls
if (sessionOpCount == 0) {
// Refresh and precondition checks only for non re-entrant session
operations
- if (refreshManager.refreshIfNecessary(this, sessionOperation)) {
+ if (refreshManager.needsRefresh(sessionOperation)) {
+ refresh(true);
updateCount++;
}
sessionOperation.checkPreconditions();