You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2016/12/08 06:17:20 UTC
svn commit: r1773187 - in /jackrabbit/oak/trunk/oak-lucene/src:
main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java
test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNodeTest.java
Author: chetanm
Date: Thu Dec 8 06:17:20 2016
New Revision: 1773187
URL: http://svn.apache.org/viewvc?rev=1773187&view=rev
Log:
OAK-5218 - Enable use of hybrid index before first async indexing is done
Rely on :async node to detect if its a fresh setup we no async indexing run so far and only then make use of NRT index to answer queries.
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNodeTest.java
Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java?rev=1773187&r1=1773186&r2=1773187&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNode.java Thu Dec 8 06:17:20 2016
@@ -32,6 +32,7 @@ import javax.annotation.Nullable;
import com.google.common.collect.Iterables;
import org.apache.jackrabbit.oak.commons.PathUtils;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex;
import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndexFactory;
import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.ReaderRefreshPolicy;
@@ -48,6 +49,12 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class IndexNode {
+ /**
+ * Name of the hidden node under which information about the checkpoints
+ * seen and indexed by each async indexer is kept.
+ */
+ static final String ASYNC = ":async";
+
private static final AtomicInteger INDEX_NODE_COUNTER = new AtomicInteger();
static IndexNode open(String indexPath, NodeState root, NodeState defnNodeState,
@@ -56,12 +63,16 @@ public class IndexNode {
IndexDefinition definition = new IndexDefinition(root, defnNodeState, indexPath);
List<LuceneIndexReader> readers = readerFactory.createReaders(definition, defnNodeState, indexPath);
NRTIndex nrtIndex = nrtFactory != null ? nrtFactory.createIndex(definition) : null;
- if (!readers.isEmpty() || (nrtIndex != null && !IndexDefinition.hasPersistedIndex(defnNodeState))){
+ if (!readers.isEmpty() || (nrtIndex != null && !hasAsyncIndexerRun(root))){
return new IndexNode(PathUtils.getName(indexPath), definition, readers, nrtIndex);
}
return null;
}
+ static boolean hasAsyncIndexerRun(NodeState root) {
+ return root.hasChildNode(ASYNC);
+ }
+
private static final Logger log = LoggerFactory.getLogger(IndexNode.class);
private final List<LuceneIndexReader> readers;
Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNodeTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNodeTest.java?rev=1773187&r1=1773186&r2=1773187&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNodeTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexNodeTest.java Thu Dec 8 06:17:20 2016
@@ -92,9 +92,9 @@ public class IndexNodeTest {
@Test
public void nullIndex_NonFreshIndex() throws Exception{
NodeBuilder builder = createNRTIndex().builder();
- //Create a hidden node to indicate that its not a fresh index
- builder.child(":status");
- assertNull(IndexNode.open("/foo", root, builder.getNodeState(), readerFactory, nrtFactory));
+ NodeBuilder rootBuilder = root.builder();
+ rootBuilder.child(IndexNode.ASYNC);
+ assertNull(IndexNode.open("/foo", rootBuilder.getNodeState(), builder.getNodeState(), readerFactory, nrtFactory));
}
private static NodeState createNRTIndex(){