[ https://issues.apache.org/jira/browse/OAK-9094?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mohit Kataria resolved OAK-9094. -------------------------------- Resolution: Fixed > Error message "Could not access the Lucene index" / FileNotFoundException > ------------------------------------------------------------------------- > > Key: OAK-9094 > URL: https://issues.apache.org/jira/browse/OAK-9094 > Project: Jackrabbit Oak > Issue Type: Improvement > Reporter: Mohit Kataria > Assignee: Mohit Kataria > Priority: Minor > > It may happen that between retrieving files from remote and evaluating size > of file, the remote file may get get removed leading to IO exception. Adding > a check to handle this case. > {noformat} > IndexSanityChecker > private boolean isThereASizeMismatch() throws IOException { > for (String fileName : remote.listAll()){ > long localLength = DirectoryUtils.getFileLength(local, fileName); > long remoteLength = remote.fileLength(fileName); // <== line 81 > //This is a weak check based on length. > if (localLength > 0 && localLength != remoteLength){ > log.warn("[{}] Found local copy for {} in {} but size of > local {} differs from remote {}. ", > indexPath, fileName, local, localLength, > remoteLength); > return true; > } > if (localLength > 0) { > localDirSize += localLength; > localFileCount++; > } > remoteDirSize += remoteLength; > remoteFileCount++; > } > return false; > } > OakDirectory: > @Override > public long fileLength(String name) throws IOException { > NodeBuilder file = directoryBuilder.getChildNode(name); > if (!file.exists()) { > String msg = String.format("[%s] %s", indexName, name); > throw new FileNotFoundException(msg); > } > OakIndexInput input = new OakIndexInput(name, file, indexName, > blobFactory); > try { > return input.length(); > } finally { > input.close(); > } > } > {noformat} > -- This message was sent by Atlassian Jira (v8.3.4#803005)