Author: chetanm
Date: Tue Jul 28 12:37:18 2015
New Revision: 1693086
URL: http://svn.apache.org/r1693086
Log:
OAK-2853 - Use default codec for fulltext index
Update the benchmark to enable CopyOnRead feature
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProvider.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/package-info.java
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProvider.java?rev=1693086&r1=1693085&r2=1693086&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProvider.java
Tue Jul 28 12:37:18 2015
@@ -49,6 +49,10 @@ public class LuceneIndexProvider impleme
this(new IndexTracker());
}
+ public LuceneIndexProvider(IndexCopier indexCopier) {
+ this(new IndexTracker(indexCopier), ScorerProviderFactory.DEFAULT);
+ }
+
public LuceneIndexProvider(IndexTracker tracker) {
this(tracker, ScorerProviderFactory.DEFAULT);
}
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/package-info.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/package-info.java?rev=1693086&r1=1693085&r2=1693086&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/package-info.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/package-info.java
Tue Jul 28 12:37:18 2015
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-@Version("2.1.0")
+@Version("2.2.0")
@Export(optional = "provide:=true")
package org.apache.jackrabbit.oak.plugins.index.lucene;
Modified:
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java?rev=1693086&r1=1693085&r2=1693086&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
(original)
+++
jackrabbit/oak/trunk/oak-run/src/main/java/org/apache/jackrabbit/oak/benchmark/FullTextSearchTest.java
Tue Jul 28 12:37:18 2015
@@ -22,9 +22,13 @@ import static com.google.common.collect.
import static com.google.common.collect.Sets.newHashSet;
import java.io.File;
+import java.io.IOException;
import java.util.List;
import java.util.Random;
import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -36,12 +40,14 @@ import javax.jcr.query.QueryManager;
import javax.jcr.query.QueryResult;
import javax.jcr.query.RowIterator;
+import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.oak.Oak;
import org.apache.jackrabbit.oak.benchmark.wikipedia.WikipediaImport;
import org.apache.jackrabbit.oak.fixture.JcrCreator;
import org.apache.jackrabbit.oak.fixture.OakRepositoryFixture;
import org.apache.jackrabbit.oak.fixture.RepositoryFixture;
import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
import
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
import
org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneInitializerHelper;
@@ -59,6 +65,8 @@ public class FullTextSearchTest extends
private int maxSampleSize = 100;
+ private final boolean disableCopyOnRead =
Boolean.getBoolean("disableCopyOnRead");
+
private final WikipediaImport importer;
private final Set<String> sampleSet = newHashSet();
@@ -76,6 +84,10 @@ public class FullTextSearchTest extends
*/
protected Boolean storageEnabled;
+ private ExecutorService executorService = Executors.newFixedThreadPool(2);
+
+ private File indexCopierDir;
+
public FullTextSearchTest(File dump, boolean flat, boolean doReport,
Boolean storageEnabled) {
this.importer = new WikipediaImport(dump, flat, doReport) {
@Override
@@ -98,6 +110,7 @@ public class FullTextSearchTest extends
}
};
this.storageEnabled = storageEnabled;
+ this.indexCopierDir = createTemporaryFolder(null);
}
@Override
@@ -113,6 +126,13 @@ public class FullTextSearchTest extends
}
@Override
+ protected void afterSuite() throws Exception {
+ executorService.shutdown();
+ executorService.awaitTermination(1, TimeUnit.MINUTES);
+ FileUtils.deleteDirectory(indexCopierDir);
+ }
+
+ @Override
protected TestContext prepareThreadExecutionContext() {
return new TestContext();
}
@@ -161,11 +181,11 @@ public class FullTextSearchTest extends
return ((OakRepositoryFixture) fixture).setUpCluster(1, new
JcrCreator() {
@Override
public Jcr customize(Oak oak) {
- LuceneIndexProvider provider = new LuceneIndexProvider();
+ LuceneIndexProvider provider = createLuceneIndexProvider();
oak.with((QueryIndexProvider) provider)
- .with((Observer) provider)
- .with(new LuceneIndexEditorProvider())
- .with(new LuceneInitializerHelper("luceneGlobal",
storageEnabled));
+ .with((Observer) provider)
+ .with(new LuceneIndexEditorProvider())
+ .with(new LuceneInitializerHelper("luceneGlobal",
storageEnabled));
return new Jcr(oak);
}
});
@@ -173,4 +193,27 @@ public class FullTextSearchTest extends
return super.createRepository(fixture);
}
+ private LuceneIndexProvider createLuceneIndexProvider() {
+ if (!disableCopyOnRead) {
+ try {
+ IndexCopier copier = new IndexCopier(executorService,
indexCopierDir, true);
+ return new LuceneIndexProvider(copier);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+ return new LuceneIndexProvider();
+ }
+
+ private File createTemporaryFolder(File parentFolder){
+ File createdFolder = null;
+ try {
+ createdFolder = File.createTempFile("oak", "", parentFolder);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ createdFolder.delete();
+ createdFolder.mkdir();
+ return createdFolder;
+ }
}