You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by am...@apache.org on 2014/12/09 05:08:08 UTC

svn commit: r1643982 - /jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java

Author: amitj
Date: Tue Dec  9 04:08:08 2014
New Revision: 1643982

URL: http://svn.apache.org/r1643982
Log:
OAK-2326: Debug logging for merge failures

Modified:
    jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java

Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java?rev=1643982&r1=1643981&r2=1643982&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/spi/state/AbstractNodeStoreBranch.java Tue Dec  9 04:08:08 2014
@@ -39,6 +39,8 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 
 import com.google.common.collect.Maps;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * A base implementation of a node store branch, which supports partially
@@ -49,6 +51,7 @@ import com.google.common.collect.Maps;
  */
 public abstract class AbstractNodeStoreBranch<S extends NodeStore, N extends NodeState>
         implements NodeStoreBranch {
+    private static final Logger log = LoggerFactory.getLogger(AbstractNodeStoreBranch.class);
 
     private static final Random RANDOM = new Random();
 
@@ -307,17 +310,24 @@ public abstract class AbstractNodeStoreB
             if (ex != null) {
                 try {
                     numRetries++;
-                    Thread.sleep(backoff + RANDOM.nextInt((int) Math.min(backoff, Integer.MAX_VALUE)));
+                    long sleepStart = System.currentTimeMillis();
+                    Thread.sleep(
+                        backoff + RANDOM.nextInt((int) Math.min(backoff, Integer.MAX_VALUE)));
+                    log.debug("Merge - Slept '{}' for retrial {}",
+                        (System.currentTimeMillis() - sleepStart), numRetries);
                 } catch (InterruptedException e) {
                     throw new CommitFailedException(
                             MERGE, 3, "Merge interrupted", e);
                 }
             }
             try {
+                long lockTryStart = System.currentTimeMillis();
                 boolean acquired = mergeLock.tryLock(maxLockTryTimeMS, MILLISECONDS);
+                log.debug("Acquired merge lock in '{}'", (System.currentTimeMillis() - lockTryStart));
                 try {
                     return branchState.merge(checkNotNull(hook), checkNotNull(info));
                 } catch (CommitFailedException e) {
+                    log.trace("Merge Error", e);
                     ex = e;
                     // only retry on merge failures. these may be caused by
                     // changes introduce by a commit hook and may be resolved