Author: fortino
Date: Thu Jul 16 12:56:50 2020
New Revision: 1879952

URL: http://svn.apache.org/viewvc?rev=1879952&view=rev
Log:
OAK-9140: don't use stored index definition in elastic indexes (patch provided 
by Amrit Verma)

Modified:
    jackrabbit/oak/trunk/oak-search-elastic/pom.xml
    
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexDefinition.java
    
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexEditorContext.java
    
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
    jackrabbit/oak/trunk/oak-search/pom.xml
    
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ReindexOperations.java
    
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditorContext.java

Modified: jackrabbit/oak/trunk/oak-search-elastic/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/pom.xml?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/pom.xml Thu Jul 16 12:56:50 2020
@@ -45,7 +45,7 @@
         <configuration>
           <instructions>
             <_exportcontents>
-                
org.apache.jackrabbit.oak.plugins.index.elastic.ElasticIndexProviderService
+              
org.apache.jackrabbit.oak.plugins.index.elastic.ElasticIndexProviderService
             </_exportcontents>
             <Import-Package>
               !com.carrotsearch.randomizedtesting.*,
@@ -81,8 +81,8 @@
             <exclude>**/fvs.csv</exclude>
           </excludes>
         </configuration>
-       </plugin>
-     </plugins>
+      </plugin>
+    </plugins>
   </build>
 
   <dependencies>
@@ -185,7 +185,6 @@
       <groupId>org.apache.jackrabbit</groupId>
       <artifactId>oak-search</artifactId>
       <version>${project.version}</version>
-      <scope>provided</scope>
     </dependency>
     <dependency>
       <groupId>org.apache.jackrabbit</groupId>

Modified: 
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexDefinition.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexDefinition.java?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexDefinition.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticIndexDefinition.java
 Thu Jul 16 12:56:50 2020
@@ -19,7 +19,6 @@
 package org.apache.jackrabbit.oak.plugins.index.elastic;
 
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.search.PropertyDefinition;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -79,17 +78,14 @@ public class ElasticIndexDefinition exte
     public final long bulkFlushIntervalMs;
     public final int bulkRetries;
     public final long bulkRetriesBackoff;
-    private final String indexPrefix;
     private final String remoteAlias;
 
     private final Map<String, List<PropertyDefinition>> propertiesByName;
 
     public ElasticIndexDefinition(NodeState root, NodeState defn, String 
indexPath, String indexPrefix) {
-        super(root, getIndexDefinitionState(defn), 
determineIndexFormatVersion(defn), determineUniqueId(defn), indexPath);
-        boolean isReindex = 
defn.getBoolean(IndexConstants.REINDEX_PROPERTY_NAME);
-        String indexSuffix = "-" + (getReindexCount() + (isReindex ? 1 : 0));
-        this.indexPrefix = indexPrefix != null ? indexPrefix : "";
-        this.remoteAlias = ElasticIndexNameHelper.getIndexAlias(indexPrefix, 
getIndexPath());
+        super(root, defn, determineIndexFormatVersion(defn), 
determineUniqueId(defn), indexPath);
+        String indexSuffix = "-" + getReindexCount();
+        this.remoteAlias = ElasticIndexNameHelper.getIndexAlias(indexPrefix != 
null ? indexPrefix : "", getIndexPath());
         this.remoteIndexName = 
ElasticIndexNameHelper.getElasticSafeIndexName(this.remoteAlias + indexSuffix);
         this.bulkActions = getOptionalValue(defn, BULK_ACTIONS, 
BULK_ACTIONS_DEFAULT);
         this.bulkSizeBytes = getOptionalValue(defn, BULK_SIZE_BYTES, 
BULK_SIZE_BYTES_DEFAULT);

Modified: 
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexEditorContext.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexEditorContext.java?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexEditorContext.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elastic/index/ElasticIndexEditorContext.java
 Thu Jul 16 12:56:50 2020
@@ -31,7 +31,7 @@ import java.io.IOException;
 
 class ElasticIndexEditorContext extends 
FulltextIndexEditorContext<ElasticDocument> {
 
-    private String indexPrefix;
+    private final String indexPrefix;
 
     ElasticIndexEditorContext(NodeState root,
                               NodeBuilder definition, @Nullable 
IndexDefinition indexDefinition,
@@ -71,4 +71,9 @@ class ElasticIndexEditorContext extends
     public ElasticIndexWriter getWriter() {
         return (ElasticIndexWriter) super.getWriter();
     }
+
+    @Override
+    public boolean storedIndexDefinitionEnabled() {
+        return false;
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elastic/ElasticFullTextAsyncTest.java
 Thu Jul 16 12:56:50 2020
@@ -16,14 +16,22 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.elastic;
 
+import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.api.Type;
+import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import 
org.apache.jackrabbit.oak.plugins.index.search.util.IndexDefinitionBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
+import org.junit.Assert;
 import org.junit.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.UUID;
 
+import static 
org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static 
org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition.INDEX_DEFINITION_NODE;
 import static org.hamcrest.CoreMatchers.containsString;
 import static org.hamcrest.MatcherAssert.assertThat;
 
@@ -62,6 +70,24 @@ public class ElasticFullTextAsyncTest ex
     }
 
     @Test
+    public void testNoStoredIndexDefinition() throws Exception {
+        IndexDefinitionBuilder builder = createIndex("propa");
+        builder.async("async");
+        builder.indexRule("nt:base").property("propa").analyzed();
+
+        String indexId = UUID.randomUUID().toString();
+        setIndex(indexId, builder);
+        root.commit();
+
+        assertEventually(() -> {
+            NodeState node = NodeStateUtils.getNode(nodeStore.getRoot(), "/" + 
INDEX_DEFINITIONS_NAME + "/" + indexId);
+            PropertyState ps = node.getProperty(IndexConstants.REINDEX_COUNT);
+            Assert.assertTrue(ps != null && ps.getValue(Type.LONG) == 1 && 
!node.hasChildNode(INDEX_DEFINITION_NODE));
+        });
+
+    }
+
+    @Test
     public void testNodeScopeIndexedQuery() throws Exception {
         IndexDefinitionBuilder builder = createIndex("a", "b").async("async");
         builder.indexRule("nt:base").property("a").analyzed().nodeScopeIndex();

Modified: jackrabbit/oak/trunk/oak-search/pom.xml
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/pom.xml?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search/pom.xml (original)
+++ jackrabbit/oak/trunk/oak-search/pom.xml Thu Jul 16 12:56:50 2020
@@ -53,12 +53,12 @@
                         </goals>
                         <phase>pre-integration-test</phase>
                         <configuration>
-                          <!--
-                            This is required as classes present in this module
-                            were part of oak-lucene. This should be removed
-                            post 1.10 release
-                          -->
-                          
<comparisonArtifactId>oak-lucene</comparisonArtifactId>
+                            <!--
+                              This is required as classes present in this 
module
+                              were part of oak-lucene. This should be removed
+                              post 1.10 release
+                            -->
+                            
<comparisonArtifactId>oak-lucene</comparisonArtifactId>
                         </configuration>
                     </execution>
                 </executions>
@@ -127,6 +127,7 @@
             <groupId>org.apache.tika</groupId>
             <artifactId>tika-core</artifactId>
             <version>${tika.version}</version>
+            <scope>provided</scope>
         </dependency>
 
         <!-- Logging -->

Modified: 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ReindexOperations.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ReindexOperations.java?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ReindexOperations.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/ReindexOperations.java
 Thu Jul 16 12:56:50 2020
@@ -39,13 +39,20 @@ public class ReindexOperations {
     private final NodeBuilder definitionBuilder;
     private final String indexPath;
     private final IndexDefinition.Builder indexDefBuilder;
+    private final boolean storedIndexDefinitionEnabled;
 
     public ReindexOperations(NodeState root, NodeBuilder definitionBuilder, 
String indexPath,
                              IndexDefinition.Builder indexDefBuilder) {
+        this(root, definitionBuilder, indexPath, indexDefBuilder, 
!IndexDefinition.isDisableStoredIndexDefinition());
+    }
+
+    public ReindexOperations(NodeState root, NodeBuilder definitionBuilder, 
String indexPath,
+                             IndexDefinition.Builder indexDefBuilder, boolean 
storedIndexDefinitionEnabled) {
         this.root = root;
         this.definitionBuilder = definitionBuilder;
         this.indexPath = indexPath;
         this.indexDefBuilder = indexDefBuilder;
+        this.storedIndexDefinitionEnabled = storedIndexDefinitionEnabled;
     }
 
     /**
@@ -61,7 +68,7 @@ public class ReindexOperations {
         //as index definition does not get modified as part of IndexUpdate run 
in most case we rely on base state
         //For case where index definition is rewritten there we get fresh state
         NodeState defnState = useStateFromBuilder ? 
definitionBuilder.getNodeState() : definitionBuilder.getBaseState();
-        if (!IndexDefinition.isDisableStoredIndexDefinition()) {
+        if (storedIndexDefinitionEnabled) {
             definitionBuilder.setChildNode(INDEX_DEFINITION_NODE, 
NodeStateCloner.cloneVisibleState(defnState));
             if (definitionBuilder.getChildNode(STATUS_NODE).exists()) {
                 
definitionBuilder.getChildNode(STATUS_NODE).removeProperty(REINDEX_COMPLETION_TIMESTAMP);

Modified: 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditorContext.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditorContext.java?rev=1879952&r1=1879951&r2=1879952&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditorContext.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-search/src/main/java/org/apache/jackrabbit/oak/plugins/index/search/spi/editor/FulltextIndexEditorContext.java
 Thu Jul 16 12:56:50 2020
@@ -59,10 +59,10 @@ import static org.apache.jackrabbit.oak.
 public abstract class FulltextIndexEditorContext<D> {
 
   private static final Logger log = LoggerFactory
-      .getLogger(FulltextIndexEditorContext.class);
+          .getLogger(FulltextIndexEditorContext.class);
 
   private static final PerfLogger PERF_LOGGER =
-      new 
PerfLogger(LoggerFactory.getLogger(FulltextIndexEditorContext.class.getName() + 
".perf"));
+          new 
PerfLogger(LoggerFactory.getLogger(FulltextIndexEditorContext.class.getName() + 
".perf"));
 
   protected IndexDefinition definition;
 
@@ -107,7 +107,7 @@ public abstract class FulltextIndexEdito
     this.definitionBuilder = definition;
     this.indexWriterFactory = indexWriterFactory;
     this.definition = indexDefinition != null ? indexDefinition :
-        createIndexDefinition(root, definition, indexingContext, 
asyncIndexing);
+            createIndexDefinition(root, definition, indexingContext, 
asyncIndexing);
     this.indexedNodes = 0;
     this.updateCallback = updateCallback;
     this.extractedTextCache = extractedTextCache;
@@ -167,7 +167,7 @@ public abstract class FulltextIndexEdito
       NodeBuilder status = 
definitionBuilder.child(IndexDefinition.STATUS_NODE);
       status.setProperty(IndexDefinition.STATUS_LAST_UPDATED, 
getUpdatedTime(currentTime), Type.DATE);
       status.setProperty("indexedNodes", indexedNodes);
-      if (!IndexDefinition.isDisableStoredIndexDefinition() && reindex) {
+      if (storedIndexDefinitionEnabled() && reindex) {
         NodeBuilder indexDefinition = definitionBuilder.child(STATUS_NODE);
         
indexDefinition.setProperty(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP, 
ISO8601.format(currentTime), Type.DATE);
         log.info(IndexDefinition.REINDEX_COMPLETION_TIMESTAMP + " set to 
current time for index:" + definition.getIndexPath());
@@ -205,10 +205,14 @@ public abstract class FulltextIndexEdito
   public void enableReindexMode(){
     reindex = true;
     ReindexOperations reindexOps =
-            new ReindexOperations(root, definitionBuilder, 
definition.getIndexPath(), newDefinitionBuilder());
+            new ReindexOperations(root, definitionBuilder, 
definition.getIndexPath(), newDefinitionBuilder(), 
storedIndexDefinitionEnabled());
     definition = reindexOps.apply(indexDefnRewritten);
   }
 
+  public boolean storedIndexDefinitionEnabled() {
+    return !IndexDefinition.isDisableStoredIndexDefinition();
+  }
+
   public long incIndexedNodes() {
     indexedNodes++;
     return indexedNodes;
@@ -258,7 +262,7 @@ public abstract class FulltextIndexEdito
   }
 
   private IndexDefinition createIndexDefinition(NodeState root, NodeBuilder 
definition, IndexingContext
-      indexingContext, boolean asyncIndexing) {
+          indexingContext, boolean asyncIndexing) {
     NodeState defnState = definition.getBaseState();
     if (asyncIndexing) {
       // A good time to check and see if we want to inject our random
@@ -270,7 +274,7 @@ public abstract class FulltextIndexEdito
         defRandom = seed;
       }
 
-      if (!IndexDefinition.isDisableStoredIndexDefinition()) {
+      if (storedIndexDefinitionEnabled()) {
         if (definition.getBoolean(PROP_REFRESH_DEFN)) {
           definition.removeProperty(PROP_REFRESH_DEFN);
           NodeState clonedState = NodeStateCloner.cloneVisibleState(defnState);


Reply via email to