Return-Path: X-Original-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Delivered-To: apmail-jackrabbit-oak-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 16D85104C7 for ; Tue, 27 Aug 2013 15:34:50 +0000 (UTC) Received: (qmail 98386 invoked by uid 500); 27 Aug 2013 15:34:50 -0000 Delivered-To: apmail-jackrabbit-oak-commits-archive@jackrabbit.apache.org Received: (qmail 98325 invoked by uid 500); 27 Aug 2013 15:34:45 -0000 Mailing-List: contact oak-commits-help@jackrabbit.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: oak-dev@jackrabbit.apache.org Delivered-To: mailing list oak-commits@jackrabbit.apache.org Received: (qmail 98266 invoked by uid 99); 27 Aug 2013 15:34:43 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Aug 2013 15:34:43 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 Aug 2013 15:34:39 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 92AA32388A3D; Tue, 27 Aug 2013 15:34:19 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1517849 - in /jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate: RefreshManager.java SessionDelegate.java Date: Tue, 27 Aug 2013 15:34:19 -0000 To: oak-commits@jackrabbit.apache.org From: mduerig@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20130827153419.92AA32388A3D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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();