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