Author: catholicon
Date: Wed Jan 31 01:44:30 2018
New Revision: 1822724

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

Modified:
    jackrabbit/oak/branches/1.8/   (props changed)
    
jackrabbit/oak/branches/1.8/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java

Propchange: jackrabbit/oak/branches/1.8/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 31 01:44:30 2018
@@ -1,3 +1,3 @@
 /jackrabbit/oak/branches/1.0:1665962
-/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681
+/jackrabbit/oak/trunk:1820660-1820661,1820729,1820734,1820859,1820861,1820878,1820888,1820947,1821130,1821140-1821141,1821240,1821249,1821258,1821325,1821358,1821361-1821362,1821370,1821375,1821393,1821477,1821487,1821516,1821665,1821668,1821681,1822723
 /jackrabbit/trunk:1345480

Modified: 
jackrabbit/oak/branches/1.8/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.8/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java?rev=1822724&r1=1822723&r2=1822724&view=diff
==============================================================================
--- 
jackrabbit/oak/branches/1.8/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java
 (original)
+++ 
jackrabbit/oak/branches/1.8/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectory.java
 Wed Jan 31 01:44:30 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