Author: catholicon
Date: Fri Apr 13 02:04:21 2018
New Revision: 1829026
URL: http://svn.apache.org/viewvc?rev=1829026&view=rev
Log:
OAK-7408: LuceneIndexProviderService uses default tracker constructor with
disabled CoR
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderServiceTest.java
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java?rev=1829026&r1=1829025&r2=1829026&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderService.java
Fri Apr 13 02:04:21 2018
@@ -523,7 +523,7 @@ public class LuceneIndexProviderService
}
tracker = new IndexTracker(new
DefaultIndexReaderFactory(mountInfoProvider, indexCopier), nrtIndexFactory);
} else {
- tracker = new IndexTracker();
+ tracker = new IndexTracker(new
DefaultIndexReaderFactory(mountInfoProvider, null));
}
tracker.setAsyncIndexInfoService(asyncIndexInfoService);
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderServiceTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderServiceTest.java?rev=1829026&r1=1829025&r2=1829026&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderServiceTest.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexProviderServiceTest.java
Fri Apr 13 02:04:21 2018
@@ -27,6 +27,7 @@ import static org.junit.Assert.assertTru
import static org.mockito.Mockito.mock;
import java.io.File;
+import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Callable;
@@ -50,6 +51,7 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.index.importer.IndexImporterProvider;
import
org.apache.jackrabbit.oak.plugins.index.lucene.property.PropertyIndexCleaner;
import
org.apache.jackrabbit.oak.plugins.index.lucene.directory.BufferedOakDirectory;
+import
org.apache.jackrabbit.oak.plugins.index.lucene.reader.DefaultIndexReaderFactory;
import
org.apache.jackrabbit.oak.plugins.index.lucene.score.ScorerProviderFactory;
import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
import org.apache.jackrabbit.oak.spi.blob.GarbageCollectableBlobStore;
@@ -90,9 +92,12 @@ public class LuceneIndexProviderServiceT
private Whiteboard wb;
+ private MountInfoProvider mip;
+
@Before
public void setUp(){
- context.registerService(MountInfoProvider.class,
Mounts.defaultMountInfoProvider());
+ mip = Mounts.newBuilder().build();
+ context.registerService(MountInfoProvider.class, mip);
context.registerService(StatisticsProvider.class,
StatisticsProvider.NOOP);
context.registerService(ScorerProviderFactory.class,
ScorerProviderFactory.DEFAULT);
context.registerService(IndexAugmentorFactory.class, new
IndexAugmentorFactory());
@@ -203,6 +208,27 @@ public class LuceneIndexProviderServiceT
// activation should work
MockOsgi.activate(service, context.bundleContext(), config);
+ // get lucene index provider
+ LuceneIndexProvider lip = null;
+ for (QueryIndexProvider qip :
context.getServices(QueryIndexProvider.class, null)) {
+ if (qip instanceof LuceneIndexProvider) {
+ lip = (LuceneIndexProvider)qip;
+ break;
+ }
+ }
+ assertNotNull(lip);
+ IndexTracker tracker = lip.getTracker();
+
+ // access reader factory with reflection and implicitly assert that
it's DefaultIndexReaderFactory
+ Field readerFactorFld =
IndexTracker.class.getDeclaredField("readerFactory");
+ readerFactorFld.setAccessible(true);
+ DefaultIndexReaderFactory readerFactory =
(DefaultIndexReaderFactory)readerFactorFld.get(tracker);
+
+ Field mipFld =
DefaultIndexReaderFactory.class.getDeclaredField("mountInfoProvider");
+ mipFld.setAccessible(true);
+ // OAK-7408: LIPS was using default tracker ctor and hence reader
factor used default mounts
+ assertEquals("Reader factory not using configured MountInfoProvider",
mip, mipFld.get(readerFactory));
+
// de-activation should work
MockOsgi.deactivate(service, context.bundleContext());
}