Author: chetanm
Date: Mon Nov 7 08:46:51 2016
New Revision: 1768454
URL: http://svn.apache.org/viewvc?rev=1768454&view=rev
Log:
OAK-5075 - Refactor IndexCopier to make it more modular
Simplify state handling of index files being written
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java
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/IndexCopier.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java?rev=1768454&r1=1768453&r2=1768454&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexCopier.java
Mon Nov 7 08:46:51 2016
@@ -117,14 +117,13 @@ public class IndexCopier implements Copy
public Directory wrapForRead(String indexPath, IndexDefinition definition,
Directory remote, String dirName) throws
IOException {
Directory local = createLocalDirForIndexReader(indexPath, definition,
dirName);
- return new CopyOnReadDirectory(this, remote, local, prefetchEnabled,
indexPath, getSharedWorkingSet(indexPath), executor);
+ return new CopyOnReadDirectory(this, remote, local, prefetchEnabled,
indexPath, executor);
}
public Directory wrapForWrite(IndexDefinition definition, Directory
remote, boolean reindexMode, String dirName) throws IOException {
Directory local = createLocalDirForIndexWriter(definition, dirName);
String indexPath = definition.getIndexPathFromConfig();
- return new CopyOnWriteDirectory(this, remote, local, reindexMode,
- indexPath,
getSharedWorkingSet(definition.getIndexPathFromConfig()), executor);
+ return new CopyOnWriteDirectory(this, remote, local, reindexMode,
indexPath, executor);
}
@Override
@@ -172,6 +171,19 @@ public class IndexCopier implements Copy
return indexRootDirectory.getIndexDir(definition, indexPath, dirName);
}
+ public void addIndexFileBeingWritten(String indexPath, String name) {
+ getSharedWorkingSet(indexPath).add(name);
+ }
+
+ public void clearIndexFilesBeingWritten(String indexPath) {
+ //TODO This should also be removed at start i.e. open of
CopyOnWriteDirectory
+ getSharedWorkingSet(indexPath).clear();
+ }
+
+ public Set<String> getIndexFilesBeingWritten(String indexPath) {
+ return getSharedWorkingSet(indexPath);
+ }
+
Map<String, LocalIndexFile> getFailedToDeleteFiles() {
return Collections.unmodifiableMap(failedToDeleteFiles);
}
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java?rev=1768454&r1=1768453&r2=1768454&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnReadDirectory.java
Mon Nov 7 08:46:51 2016
@@ -65,7 +65,7 @@ public class CopyOnReadDirectory extends
private final Set<String> localFileNames = Sets.newConcurrentHashSet();
public CopyOnReadDirectory(IndexCopier indexCopier, Directory remote,
Directory local, boolean prefetch,
- String indexPath, Set<String> sharedWorkingSet,
Executor executor) throws IOException {
+ String indexPath, Executor executor) throws
IOException {
super(remote);
this.indexCopier = indexCopier;
this.executor = executor;
@@ -75,7 +75,7 @@ public class CopyOnReadDirectory extends
this.localFileNames.addAll(Arrays.asList(local.listAll()));
//Remove files which are being worked upon by COW
- this.localFileNames.removeAll(sharedWorkingSet);
+
this.localFileNames.removeAll(indexCopier.getIndexFilesBeingWritten(indexPath));
if (prefetch) {
prefetchIndexFiles();
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=1768454&r1=1768453&r2=1768454&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
Mon Nov 7 08:46:51 2016
@@ -80,7 +80,6 @@ public class CopyOnWriteDirectory extend
private final CountDownLatch copyDone = new CountDownLatch(1);
private final boolean reindexMode;
private final String indexPath;
- private final Set<String> sharedWorkingSet;
/**
* Current background task
@@ -135,7 +134,7 @@ public class CopyOnWriteDirectory extend
};
public CopyOnWriteDirectory(IndexCopier indexCopier, Directory remote,
Directory local, boolean reindexMode,
- String indexPath, Set<String>
sharedWorkingSet, Executor executor) throws
+ String indexPath, Executor executor) throws
IOException {
super(local);
this.indexCopier = indexCopier;
@@ -144,7 +143,6 @@ public class CopyOnWriteDirectory extend
this.executor = executor;
this.indexPath = indexPath;
this.reindexMode = reindexMode;
- this.sharedWorkingSet = sharedWorkingSet;
initialize();
}
@@ -184,7 +182,7 @@ public class CopyOnWriteDirectory extend
}
ref = new COWLocalFileReference(name);
fileMap.put(name, ref);
- sharedWorkingSet.add(name);
+ indexCopier.addIndexFileBeingWritten(indexPath, name);
return ref.createOutput(context);
}
@@ -261,7 +259,7 @@ public class CopyOnWriteDirectory extend
local.close();
remote.close();
- sharedWorkingSet.clear();
+ indexCopier.clearIndexFilesBeingWritten(indexPath);
}
@Override