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;
}
}