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 ng...@apache.org on 2020/04/16 15:51:18 UTC
svn commit: r1876610 - in /jackrabbit/oak/trunk:
oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/
oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/
oak-search-elastic/src/main/java/org/apache/jackra...
Author: ngupta
Date: Thu Apr 16 15:51:18 2020
New Revision: 1876610
URL: http://svn.apache.org/viewvc?rev=1876610&view=rev
Log:
OAK-9004 | Multitenant index name strategy with reindex support (Some additional modifications - patch by Amrit Verma)
Added:
jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/TestHelper.java (with props)
Modified:
jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java
jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java
jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java
jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java
jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java
jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java
jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java
Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithGlobalIndexSearchTest.java Thu Apr 16 15:51:18 2020
@@ -23,6 +23,7 @@ package org.apache.jackrabbit.oak.benchm
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.benchmark.util.ElasticGlobalInitializer;
+import org.apache.jackrabbit.oak.benchmark.util.TestHelper;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
@@ -40,15 +41,16 @@ import java.io.File;
public class ElasticFullTextWithGlobalIndexSearchTest extends SearchTest {
private ElasticsearchConnection coordinate;
- private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal" + System.nanoTime();
+ private String ELASTIC_GLOBAL_INDEX;
- public ElasticFullTextWithGlobalIndexSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
+ ElasticFullTextWithGlobalIndexSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
super(dump, flat, doReport, storageEnabled);
this.coordinate = coordinate;
}
@Override
protected Repository[] createRepository(RepositoryFixture fixture) throws Exception {
+ ELASTIC_GLOBAL_INDEX = TestHelper.getUniqueIndexName("elasticGlobal");
if (fixture instanceof OakRepositoryFixture) {
return ((OakRepositoryFixture) fixture).setUpCluster(1, new JcrCreator() {
@Override
Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticFullTextWithoutGlobalIndexSearchTest.java Thu Apr 16 15:51:18 2020
@@ -21,6 +21,7 @@ package org.apache.jackrabbit.oak.benchm
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.benchmark.util.TestHelper;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
@@ -42,7 +43,7 @@ public class ElasticFullTextWithoutGloba
private ElasticsearchConnection coordinate;
- public ElasticFullTextWithoutGlobalIndexSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
+ ElasticFullTextWithoutGlobalIndexSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
super(dump, flat, doReport, storageEnabled);
this.coordinate = coordinate;
}
@@ -60,7 +61,7 @@ public class ElasticFullTextWithoutGloba
.with(indexProvider)
.with(new PropertyIndexEditorProvider())
.with(new NodeTypeIndexProvider())
- .with(new PropertyFullTextTest.FullTextPropertyInitialiser("elasticText" + System.nanoTime(), of("text"),
+ .with(new PropertyFullTextTest.FullTextPropertyInitialiser(TestHelper.getUniqueIndexName("elasticText"), of("text"),
ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH).nodeScope().analyzed());
return new Jcr(oak);
}
Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTIndexedContentAvailability.java Thu Apr 16 15:51:18 2020
@@ -20,6 +20,7 @@ package org.apache.jackrabbit.oak.benchm
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.benchmark.util.ElasticGlobalInitializer;
+import org.apache.jackrabbit.oak.benchmark.util.TestHelper;
import org.apache.jackrabbit.oak.benchmark.wikipedia.WikipediaImport;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
@@ -66,7 +67,7 @@ public class ElasticPropertyFTIndexedCon
private static final Logger LOG = LoggerFactory.getLogger(ElasticPropertyFTIndexedContentAvailability.class);
private String currentFixtureName;
private ElasticsearchConnection coordinate;
- private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal" + System.nanoTime();
+ private String ELASTIC_GLOBAL_INDEX;
@Override
public String getCurrentFixtureName() {
@@ -79,7 +80,7 @@ public class ElasticPropertyFTIndexedCon
}
- public ElasticPropertyFTIndexedContentAvailability(final File dump,
+ ElasticPropertyFTIndexedContentAvailability(final File dump,
final boolean flat,
final boolean doReport,
final Boolean storageEnabled, ElasticsearchConnection coordinate) {
@@ -89,6 +90,7 @@ public class ElasticPropertyFTIndexedCon
@Override
protected Repository[] createRepository(RepositoryFixture fixture) throws Exception {
+ ELASTIC_GLOBAL_INDEX = TestHelper.getUniqueIndexName("elasticGlobal");
if (fixture instanceof OakRepositoryFixture) {
currentFixtureName = fixture.toString();
return ((OakRepositoryFixture) fixture).setUpCluster(1, new JcrCreator() {
@@ -101,7 +103,7 @@ public class ElasticPropertyFTIndexedCon
.with(indexProvider)
.with((new ElasticGlobalInitializer(ELASTIC_GLOBAL_INDEX, storageEnabled)).async())
// the WikipediaImporter set a property `title`
- .with(new FullTextPropertyInitialiser("elasticTitle" + System.nanoTime(), of("title"),
+ .with(new FullTextPropertyInitialiser(TestHelper.getUniqueIndexName("elasticTitle"), of("title"),
ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH).async())
.withAsyncIndexing("async", 5);
return new Jcr(oak);
Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyFTSeparatedIndexedContentAvailability.java Thu Apr 16 15:51:18 2020
@@ -22,6 +22,7 @@ package org.apache.jackrabbit.oak.benchm
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.benchmark.util.ElasticGlobalInitializer;
+import org.apache.jackrabbit.oak.benchmark.util.TestHelper;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
@@ -45,9 +46,9 @@ public class ElasticPropertyFTSeparatedI
private String currentFixtureName;
private ElasticsearchConnection coordinate;
- private final String ELASTIC_GLOBAL_INDEX = "elasticGlobal" + System.nanoTime();
+ private String ELASTIC_GLOBAL_INDEX;
- public ElasticPropertyFTSeparatedIndexedContentAvailability(final File dump,
+ ElasticPropertyFTSeparatedIndexedContentAvailability(final File dump,
final boolean flat,
final boolean doReport,
final Boolean storageEnabled, ElasticsearchConnection coordinate) {
@@ -67,6 +68,7 @@ public class ElasticPropertyFTSeparatedI
@Override
protected Repository[] createRepository(RepositoryFixture fixture) throws Exception {
+ ELASTIC_GLOBAL_INDEX = TestHelper.getUniqueIndexName("elasticGlobal");
if (fixture instanceof OakRepositoryFixture) {
currentFixtureName = fixture.toString();
return ((OakRepositoryFixture) fixture).setUpCluster(1, new JcrCreator() {
@@ -79,7 +81,7 @@ public class ElasticPropertyFTSeparatedI
.with(indexProvider)
.with((new ElasticGlobalInitializer(ELASTIC_GLOBAL_INDEX, storageEnabled)).async("fulltext-async"))
// the WikipediaImporter set a property `title`
- .with(new FullTextPropertyInitialiser("elasticTitle" + System.nanoTime(), of("title"),
+ .with(new FullTextPropertyInitialiser(TestHelper.getUniqueIndexName("elasticTitle"), of("title"),
ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH).async())
.withAsyncIndexing("async", 5)
.withAsyncIndexing("fulltext-async", 5);
Modified: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java (original)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/ElasticPropertyTextSearchTest.java Thu Apr 16 15:51:18 2020
@@ -21,6 +21,7 @@ package org.apache.jackrabbit.oak.benchm
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.benchmark.util.TestHelper;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
@@ -43,7 +44,7 @@ public class ElasticPropertyTextSearchTe
private ElasticsearchConnection coordinate;
- public ElasticPropertyTextSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
+ ElasticPropertyTextSearchTest(File dump, boolean flat, boolean doReport, Boolean storageEnabled, ElasticsearchConnection coordinate) {
super(dump, flat, doReport, storageEnabled);
this.coordinate = coordinate;
}
@@ -76,7 +77,7 @@ public class ElasticPropertyTextSearchTe
.with(indexProvider)
.with(new PropertyIndexEditorProvider())
.with(new NodeTypeIndexProvider())
- .with(new PropertyFullTextTest.FullTextPropertyInitialiser("elasticTitle" + System.nanoTime(), of("title"),
+ .with(new PropertyFullTextTest.FullTextPropertyInitialiser(TestHelper.getUniqueIndexName("elasticTitle"), of("title"),
ElasticsearchIndexDefinition.TYPE_ELASTICSEARCH));
return new Jcr(oak);
}
Added: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/TestHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/TestHelper.java?rev=1876610&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/TestHelper.java (added)
+++ jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/TestHelper.java Thu Apr 16 15:51:18 2020
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.oak.benchmark.util;
+
+public class TestHelper {
+
+ /**
+ * Generates a unique index name from the given suggestion.
+ * @param name name suggestion
+ * @return unique index name
+ */
+ public static String getUniqueIndexName(String name) {
+ return name + System.currentTimeMillis();
+ }
+
+}
Propchange: jackrabbit/oak/trunk/oak-benchmarks-elastic/src/main/java/org/apache/jackrabbit/oak/benchmark/util/TestHelper.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchConnection.java Thu Apr 16 15:51:18 2020
@@ -37,14 +37,14 @@ import java.util.function.Supplier;
*/
public class ElasticsearchConnection implements Closeable {
- protected static final String SCHEME_PROP = "elasticsearch.scheme";
- protected static final String DEFAULT_SCHEME = "http";
- protected static final String HOST_PROP = "elasticsearch.host";
- protected static final String DEFAULT_HOST = "127.0.0.1";
- protected static final String PORT_PROP = "elasticsearch.port";
- protected static final int DEFAULT_PORT = 9200;
+ static final String SCHEME_PROP = "elasticsearch.scheme";
+ static final String DEFAULT_SCHEME = "http";
+ static final String HOST_PROP = "elasticsearch.host";
+ static final String DEFAULT_HOST = "127.0.0.1";
+ static final String PORT_PROP = "elasticsearch.port";
+ static final int DEFAULT_PORT = 9200;
- protected static final Supplier<ElasticsearchConnection> defaultConnection = () ->
+ static final Supplier<ElasticsearchConnection> defaultConnection = () ->
new ElasticsearchConnection(DEFAULT_SCHEME, DEFAULT_HOST, DEFAULT_PORT, "elastic");
private String scheme;
@@ -57,9 +57,10 @@ public class ElasticsearchConnection imp
private AtomicBoolean isClosed = new AtomicBoolean(false);
public ElasticsearchConnection(String scheme, String host, Integer port, String indexPrefix) {
- if (scheme == null || host == null || port == null || indexPrefix == null) {
- throw new IllegalArgumentException();
- }
+ Objects.requireNonNull(scheme, "Scheme is null");
+ Objects.requireNonNull(host, "Host is null");
+ Objects.requireNonNull(port, "Port is null");
+ Objects.requireNonNull(indexPrefix, "Index prefix is null");
this.scheme = scheme;
this.host = host;
this.port = port;
Modified: jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/main/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchIndexDefinition.java Thu Apr 16 15:51:18 2020
@@ -86,7 +86,7 @@ public class ElasticsearchIndexDefinitio
private String setupIndexName() {
// TODO: implement advanced remote index name strategy that takes into account multiple tenants and re-index process
- return getESSafeIndexName(indexPrefix + getIndexPath() + "-" + getReindexCount());
+ return getESSafeIndexName(indexPrefix + "." + getIndexPath() + "-" + getReindexCount());
}
/**
Modified: jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java?rev=1876610&r1=1876609&r2=1876610&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-search-elastic/src/test/java/org/apache/jackrabbit/oak/plugins/index/elasticsearch/ElasticsearchPropertyIndexTest.java Thu Apr 16 15:51:18 2020
@@ -78,7 +78,7 @@ public class ElasticsearchPropertyIndexT
ElasticsearchConnection.DEFAULT_SCHEME,
elastic.getContainerIpAddress(),
elastic.getMappedPort(ElasticsearchConnection.DEFAULT_PORT),
- "" + System.nanoTime()
+ "" + System.currentTimeMillis()
);
ElasticsearchIndexEditorProvider editorProvider = new ElasticsearchIndexEditorProvider(coordinate,
new ExtractedTextCache(10 * FileUtils.ONE_MB, 100));