Author: chetanm
Date: Mon Jan 25 11:59:55 2016
New Revision: 1726612
URL: http://svn.apache.org/viewvc?rev=1726612&view=rev
Log:
OAK-3920 - OakDirectory not usable in readOnly mode with a readOnly builder
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java?rev=1726612&r1=1726611&r2=1726612&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectory.java
Mon Jan 25 11:59:55 2016
@@ -91,7 +91,7 @@ class OakDirectory extends Directory {
public OakDirectory(NodeBuilder builder, String dataNodeName,
IndexDefinition definition, boolean readOnly) {
this.lockFactory = NoLockFactory.getNoLockFactory();
this.builder = builder;
- this.directoryBuilder = builder.child(dataNodeName);
+ this.directoryBuilder = readOnly ? builder.getChildNode(dataNodeName)
: builder.child(dataNodeName);
this.definition = definition;
this.readOnly = readOnly;
this.fileNames.addAll(getListing());
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java?rev=1726612&r1=1726611&r2=1726612&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/OakDirectoryTest.java
Mon Jan 25 11:59:55 2016
@@ -41,6 +41,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.spi.blob.MemoryBlobStore;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.ReadOnlyBuilder;
import org.apache.lucene.store.AlreadyClosedException;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.IOContext;
@@ -410,6 +411,13 @@ public class OakDirectoryTest {
}
}
+ @Test
+ public void readOnlyDirectory() throws Exception{
+ Directory dir = new OakDirectory(new
ReadOnlyBuilder(builder.getNodeState()),
+ new IndexDefinition(root, builder.getNodeState()), true);
+ assertEquals(0, dir.listAll().length);
+ }
+
private static void readInputToEnd(long expectedSize, IndexInput input)
throws IOException {
int COPY_BUFFER_SIZE = 16384;
byte[] copyBuffer = new byte[(int) ONE_MB];