Author: catholicon
Date: Wed Jan 31 01:40:53 2018
New Revision: 1822723

URL: http://svn.apache.org/viewvc?rev=1822723&view=rev
Log:
OAK-7222: Log a warn when CoW opens input from remote due to size mismatch

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java?rev=1822723&r1=1822722&r2=1822723&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java
 Wed Jan 31 01:40:53 2018
@@ -385,7 +385,6 @@ public class CopyOnWriteDirectory extend
     }
 
     private class COWRemoteFileReference extends COWFileReference {
-        private boolean validLocalCopyPresent;
         private final long length;
 
         public COWRemoteFileReference(String name) throws IOException {
@@ -400,8 +399,7 @@ public class CopyOnWriteDirectory extend
 
         @Override
         public IndexInput openInput(IOContext context) throws IOException {
-            checkIfLocalValid();
-            if (validLocalCopyPresent && 
!IndexCopier.REMOTE_ONLY.contains(name)) {
+            if (checkIfLocalValid() && 
!IndexCopier.REMOTE_ONLY.contains(name)) {
                 indexCopier.readFromLocal(false);
                 return local.openInput(name, context);
             }
@@ -424,9 +422,23 @@ public class CopyOnWriteDirectory extend
             addDeleteTask(name);
         }
 
-        private void checkIfLocalValid() throws IOException {
-            validLocalCopyPresent = local.fileExists(name)
-                    && local.fileLength(name) == remote.fileLength(name);
+        private boolean checkIfLocalValid() throws IOException {
+            boolean validLocalCopyPresent = local.fileExists(name);
+
+            if (validLocalCopyPresent) {
+                long localFileLength = local.fileLength(name);
+                long remoteFileLength = remote.fileLength(name);
+                 validLocalCopyPresent = localFileLength == remoteFileLength;
+
+                 if (!validLocalCopyPresent) {
+                     log.warn("COWRemoteFileReference::file ({}) differs in 
length. local: {}; remote: {}, init-remote-length",
+                             localFileLength, remoteFileLength, length);
+                 }
+            } else {
+                log.warn("COWRemoteFileReference::local file ({}) doesn't 
exist", name);
+            }
+
+            return validLocalCopyPresent;
         }
     }
 


Reply via email to