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


Reply via email to