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