From d64c89b985b929fc78fec5f3eee814b591456050 Mon Sep 17 00:00:00 2001 From: Anton Persson Date: Mon, 23 Jul 2018 16:13:47 +0200 Subject: [PATCH] PR comment: Extract shared code in index provider factories into AbstractIndexProviderFactory --- .../schema/AbstractIndexProviderFactory.java | 91 +++++++++++++++++++ .../GenericNativeIndexProviderFactory.java | 51 +++-------- .../schema/LuceneIndexProviderFactory.java | 62 ++++--------- ...ativeLuceneFusionIndexProviderFactory.java | 14 ++- ...iveLuceneFusionIndexProviderFactory10.java | 33 ++----- ...iveLuceneFusionIndexProviderFactory20.java | 33 ++----- 6 files changed, 149 insertions(+), 135 deletions(-) create mode 100644 community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/AbstractIndexProviderFactory.java diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/AbstractIndexProviderFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/AbstractIndexProviderFactory.java new file mode 100644 index 0000000000000..b811b9fe282ef --- /dev/null +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/AbstractIndexProviderFactory.java @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2002-2018 "Neo4j," + * Neo4j Sweden AB [http://neo4j.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.kernel.impl.index.schema; + +import java.io.File; + +import org.neo4j.graphdb.factory.GraphDatabaseSettings; +import org.neo4j.index.internal.gbptree.RecoveryCleanupWorkCollector; +import org.neo4j.io.fs.FileSystemAbstraction; +import org.neo4j.io.pagecache.PageCache; +import org.neo4j.kernel.api.index.IndexProvider; +import org.neo4j.kernel.api.index.LoggingMonitor; +import org.neo4j.kernel.configuration.Config; +import org.neo4j.kernel.extension.ExtensionType; +import org.neo4j.kernel.extension.KernelExtensionFactory; +import org.neo4j.kernel.impl.factory.OperationalMode; +import org.neo4j.kernel.impl.logging.LogService; +import org.neo4j.kernel.impl.spi.KernelContext; +import org.neo4j.kernel.lifecycle.Lifecycle; +import org.neo4j.kernel.monitoring.Monitors; +import org.neo4j.logging.Log; + +public abstract class AbstractIndexProviderFactory extends KernelExtensionFactory +{ + protected AbstractIndexProviderFactory( String key ) + { + super( ExtensionType.DATABASE, key ); + } + + @Override + public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) + { + PageCache pageCache = dependencies.pageCache(); + File databaseDir = context.directory(); + FileSystemAbstraction fs = dependencies.fileSystem(); + Log log = dependencies.getLogService().getInternalLogProvider().getLog( loggingClass() ); + Monitors monitors = dependencies.monitors(); + monitors.addMonitorListener( new LoggingMonitor( log ), descriptorString() ); + IndexProvider.Monitor monitor = monitors.newMonitor( IndexProvider.Monitor.class, descriptorString() ); + Config config = dependencies.getConfig(); + OperationalMode operationalMode = context.databaseInfo().operationalMode; + RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); + return internalCreate( pageCache, databaseDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + } + + protected static int adjustPriorityForConfig( int basePriority, GraphDatabaseSettings.SchemaIndex target, Config config ) + { + String defaultSchemaProvider = config.get( GraphDatabaseSettings.default_schema_provider ); + return target.providerIdentifier().equals( defaultSchemaProvider ) ? 100 : basePriority; + } + + protected abstract Class loggingClass(); + + protected abstract String descriptorString(); + + protected abstract IndexProvider internalCreate( PageCache pageCache, File storeDir, FileSystemAbstraction fs, + IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode, + RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ); + + public interface Dependencies + { + PageCache pageCache(); + + FileSystemAbstraction fileSystem(); + + LogService getLogService(); + + Monitors monitors(); + + Config getConfig(); + + RecoveryCleanupWorkCollector recoveryCleanupWorkCollector(); + } +} diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProviderFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProviderFactory.java index 03115603e24f3..f6db010fe3ca9 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProviderFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProviderFactory.java @@ -28,70 +28,45 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.api.index.IndexDirectoryStructure; import org.neo4j.kernel.api.index.IndexProvider; -import org.neo4j.kernel.api.index.LoggingMonitor; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.extension.ExtensionType; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.factory.OperationalMode; -import org.neo4j.kernel.impl.index.schema.fusion.FusionIndexProvider; -import org.neo4j.kernel.impl.logging.LogService; -import org.neo4j.kernel.impl.spi.KernelContext; -import org.neo4j.kernel.monitoring.Monitors; -import org.neo4j.logging.Log; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesByProvider; -import static org.neo4j.kernel.impl.index.schema.GenericNativeIndexProvider.DESCRIPTOR; @Service.Implementation( KernelExtensionFactory.class ) -public class GenericNativeIndexProviderFactory extends KernelExtensionFactory +public class GenericNativeIndexProviderFactory extends AbstractIndexProviderFactory { private static final int PRIORITY = 0; // TODO: Zero because should not be default yet. public GenericNativeIndexProviderFactory() { - super( ExtensionType.DATABASE, GenericNativeIndexProvider.KEY ); + super( GenericNativeIndexProvider.KEY ); } - public interface Dependencies + @Override + protected Class loggingClass() { - PageCache pageCache(); - - FileSystemAbstraction fileSystem(); - - LogService getLogService(); - - Monitors monitors(); - - Config getConfig(); + return GenericNativeIndexProvider.class; + } - RecoveryCleanupWorkCollector recoveryCleanupWorkCollector(); + @Override + protected String descriptorString() + { + return GenericNativeIndexProvider.DESCRIPTOR.toString(); } @Override - public GenericNativeIndexProvider newInstance( KernelContext context, Dependencies dependencies ) + protected GenericNativeIndexProvider internalCreate( PageCache pageCache, File storeDir, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, + OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - PageCache pageCache = dependencies.pageCache(); - File storeDir = context.storeDir(); - FileSystemAbstraction fs = dependencies.fileSystem(); - Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); - Monitors monitors = dependencies.monitors(); - monitors.addMonitorListener( new LoggingMonitor( log ), DESCRIPTOR.toString() ); - IndexProvider.Monitor monitor = monitors.newMonitor( IndexProvider.Monitor.class, DESCRIPTOR.toString() ); - Config config = dependencies.getConfig(); - OperationalMode operationalMode = context.databaseInfo().operationalMode; - RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); return create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } public static GenericNativeIndexProvider create( PageCache pageCache, File storeDir, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, OperationalMode mode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - String selectedSchemaProvider = config.get( GraphDatabaseSettings.default_schema_provider ); - int priority = PRIORITY; - if ( GraphDatabaseSettings.SchemaIndex.NATIVE_GBPTREE10.providerIdentifier().equals( selectedSchemaProvider ) ) - { - priority = 100; - } + int priority = adjustPriorityForConfig( PRIORITY, GraphDatabaseSettings.SchemaIndex.NATIVE_GBPTREE10, config ); IndexDirectoryStructure.Factory directoryStructure = directoriesByProvider( storeDir ); boolean readOnly = config.get( GraphDatabaseSettings.read_only ) && (OperationalMode.single == mode); diff --git a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProviderFactory.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProviderFactory.java index 92bfa7c202cb7..e5ff26ff1da92 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProviderFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProviderFactory.java @@ -28,67 +28,48 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.api.index.IndexDirectoryStructure; import org.neo4j.kernel.api.index.IndexProvider; -import org.neo4j.kernel.api.index.LoggingMonitor; import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.extension.ExtensionType; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.factory.OperationalMode; +import org.neo4j.kernel.impl.index.schema.AbstractIndexProviderFactory; import org.neo4j.kernel.impl.index.schema.SpatialIndexProvider; import org.neo4j.kernel.impl.index.schema.TemporalIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.FusionIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.FusionSlotSelector00; -import org.neo4j.kernel.impl.logging.LogService; -import org.neo4j.kernel.impl.spi.KernelContext; -import org.neo4j.kernel.monitoring.Monitors; -import org.neo4j.logging.Log; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesByProvider; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesByProviderKey; import static org.neo4j.kernel.api.index.IndexProvider.EMPTY; @Service.Implementation( KernelExtensionFactory.class ) -public class LuceneIndexProviderFactory extends - KernelExtensionFactory +public class LuceneIndexProviderFactory extends AbstractIndexProviderFactory { - public static final String KEY = "lucene"; + public static final String KEY = GraphDatabaseSettings.SchemaIndex.LUCENE10.providerName(); + public static final String VERSION = GraphDatabaseSettings.SchemaIndex.LUCENE10.providerVersion(); + public static final IndexProvider.Descriptor PROVIDER_DESCRIPTOR = new IndexProvider.Descriptor( KEY, VERSION ); - public static final IndexProvider.Descriptor PROVIDER_DESCRIPTOR = - new IndexProvider.Descriptor( KEY, "1.0" ); - - public interface Dependencies + public LuceneIndexProviderFactory() { - PageCache pageCache(); - - RecoveryCleanupWorkCollector recoveryCleanupWorkCollector(); - - Config getConfig(); - - Monitors monitors(); - - LogService getLogService(); + super( KEY ); + } - FileSystemAbstraction fileSystem(); + @Override + protected Class loggingClass() + { + return LuceneIndexProvider.class; } - public LuceneIndexProviderFactory() + @Override + protected String descriptorString() { - super( ExtensionType.DATABASE, KEY ); + return PROVIDER_DESCRIPTOR.toString(); } @Override - public IndexProvider newInstance( KernelContext context, Dependencies dependencies ) + protected IndexProvider internalCreate( PageCache pageCache, File storeDir, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, + OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - PageCache pageCache = dependencies.pageCache(); - File databaseDirectory = context.directory(); - FileSystemAbstraction fs = dependencies.fileSystem(); - Monitors monitors = dependencies.monitors(); - Log log = dependencies.getLogService().getInternalLogProvider().getLog( LuceneIndexProvider.class ); - monitors.addMonitorListener( new LoggingMonitor( log ), PROVIDER_DESCRIPTOR.toString() ); - IndexProvider.Monitor monitor = monitors.newMonitor( IndexProvider.Monitor.class, KEY ); - Config config = dependencies.getConfig(); - OperationalMode operationalMode = context.databaseInfo().operationalMode; - RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); - return newInstance( pageCache, databaseDirectory, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + return newInstance( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } public static FusionIndexProvider newInstance( PageCache pageCache, File databaseDirectory, FileSystemAbstraction fs, @@ -106,12 +87,7 @@ public static FusionIndexProvider newInstance( PageCache pageCache, File databas SpatialIndexProvider spatial = IndexProviderFactoryUtil.spatialProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly, config ); - String defaultSchemaProvider = config.get( GraphDatabaseSettings.default_schema_provider ); - int priority = LuceneIndexProvider.PRIORITY; - if ( GraphDatabaseSettings.SchemaIndex.LUCENE10.providerIdentifier().equals( defaultSchemaProvider ) ) - { - priority = 100; - } + int priority = adjustPriorityForConfig( LuceneIndexProvider.PRIORITY, GraphDatabaseSettings.SchemaIndex.LUCENE10, config ); return new FusionIndexProvider( EMPTY, EMPTY, spatial, temporal, lucene, new FusionSlotSelector00(), PROVIDER_DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); } diff --git a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory.java index 480bc14aeb3f9..7b5a430db4937 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory.java @@ -23,17 +23,23 @@ import org.neo4j.kernel.api.index.IndexDirectoryStructure; import org.neo4j.kernel.api.index.IndexProvider; -import org.neo4j.kernel.extension.ExtensionType; -import org.neo4j.kernel.extension.KernelExtensionFactory; +import org.neo4j.kernel.impl.index.schema.AbstractIndexProviderFactory; +import org.neo4j.kernel.impl.index.schema.fusion.FusionIndexProvider; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesByProvider; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesBySubProvider; -abstract class NativeLuceneFusionIndexProviderFactory extends KernelExtensionFactory +abstract class NativeLuceneFusionIndexProviderFactory extends AbstractIndexProviderFactory { NativeLuceneFusionIndexProviderFactory( String key ) { - super( ExtensionType.DATABASE, key ); + super( key ); + } + + @Override + protected Class loggingClass() + { + return FusionIndexProvider.class; } public static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File databaseDirectory, IndexProvider.Descriptor descriptor ) diff --git a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory10.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory10.java index 6c8bd3379648e..402fd65a1451e 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory10.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory10.java @@ -28,7 +28,6 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.api.index.IndexDirectoryStructure; import org.neo4j.kernel.api.index.IndexProvider; -import org.neo4j.kernel.api.index.LoggingMonitor; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.factory.OperationalMode; @@ -37,16 +36,12 @@ import org.neo4j.kernel.impl.index.schema.TemporalIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.FusionIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.FusionSlotSelector10; -import org.neo4j.kernel.impl.spi.KernelContext; -import org.neo4j.kernel.monitoring.Monitors; -import org.neo4j.logging.Log; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesByProvider; import static org.neo4j.kernel.api.index.IndexProvider.EMPTY; @Service.Implementation( KernelExtensionFactory.class ) -public class NativeLuceneFusionIndexProviderFactory10 extends - NativeLuceneFusionIndexProviderFactory +public class NativeLuceneFusionIndexProviderFactory10 extends NativeLuceneFusionIndexProviderFactory { public static final String KEY = GraphDatabaseSettings.SchemaIndex.NATIVE10.providerName(); public static final String VERSION = GraphDatabaseSettings.SchemaIndex.NATIVE10.providerVersion(); @@ -58,24 +53,17 @@ public NativeLuceneFusionIndexProviderFactory10() super( KEY ); } - public interface Dependencies extends LuceneIndexProviderFactory.Dependencies + @Override + protected String descriptorString() { + return DESCRIPTOR.toString(); } @Override - public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies ) + protected IndexProvider internalCreate( PageCache pageCache, File storeDir, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, + OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - PageCache pageCache = dependencies.pageCache(); - File databaseDirectory = context.directory(); - FileSystemAbstraction fs = dependencies.fileSystem(); - Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); - Monitors monitors = dependencies.monitors(); - monitors.addMonitorListener( new LoggingMonitor( log ), DESCRIPTOR.toString() ); - IndexProvider.Monitor monitor = monitors.newMonitor( IndexProvider.Monitor.class, DESCRIPTOR.toString() ); - Config config = dependencies.getConfig(); - OperationalMode operationalMode = context.databaseInfo().operationalMode; - RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); - return create( pageCache, databaseDirectory, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + return create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } public static FusionIndexProvider create( PageCache pageCache, File databaseDirectory, FileSystemAbstraction fs, @@ -94,12 +82,7 @@ public static FusionIndexProvider create( PageCache pageCache, File databaseDire IndexProviderFactoryUtil.temporalProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly ); LuceneIndexProvider lucene = IndexProviderFactoryUtil.luceneProvider( fs, childDirectoryStructure, monitor, config, operationalMode ); - String defaultSchemaProvider = config.get( GraphDatabaseSettings.default_schema_provider ); - int priority = PRIORITY; - if ( GraphDatabaseSettings.SchemaIndex.NATIVE10.providerIdentifier().equals( defaultSchemaProvider ) ) - { - priority = 100; - } + int priority = adjustPriorityForConfig( PRIORITY, GraphDatabaseSettings.SchemaIndex.NATIVE10, config ); return new FusionIndexProvider( EMPTY, number, spatial, temporal, lucene, new FusionSlotSelector10(), DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); } diff --git a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory20.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory20.java index dd0bb2c2bf062..85bce8c53305e 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory20.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory20.java @@ -28,7 +28,6 @@ import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.api.index.IndexDirectoryStructure; import org.neo4j.kernel.api.index.IndexProvider; -import org.neo4j.kernel.api.index.LoggingMonitor; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.factory.OperationalMode; @@ -38,15 +37,11 @@ import org.neo4j.kernel.impl.index.schema.TemporalIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.FusionIndexProvider; import org.neo4j.kernel.impl.index.schema.fusion.FusionSlotSelector20; -import org.neo4j.kernel.impl.spi.KernelContext; -import org.neo4j.kernel.monitoring.Monitors; -import org.neo4j.logging.Log; import static org.neo4j.kernel.api.index.IndexDirectoryStructure.directoriesByProvider; @Service.Implementation( KernelExtensionFactory.class ) -public class NativeLuceneFusionIndexProviderFactory20 extends - NativeLuceneFusionIndexProviderFactory +public class NativeLuceneFusionIndexProviderFactory20 extends NativeLuceneFusionIndexProviderFactory { public static final String KEY = GraphDatabaseSettings.SchemaIndex.NATIVE20.providerName(); public static final String VERSION = GraphDatabaseSettings.SchemaIndex.NATIVE20.providerVersion(); @@ -58,24 +53,17 @@ public NativeLuceneFusionIndexProviderFactory20() super( KEY ); } - public interface Dependencies extends LuceneIndexProviderFactory.Dependencies + @Override + protected String descriptorString() { + return DESCRIPTOR.toString(); } @Override - public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies ) + protected IndexProvider internalCreate( PageCache pageCache, File storeDir, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, + OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - PageCache pageCache = dependencies.pageCache(); - File databaseDirectory = context.directory(); - FileSystemAbstraction fs = dependencies.fileSystem(); - Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); - Monitors monitors = dependencies.monitors(); - monitors.addMonitorListener( new LoggingMonitor( log ), DESCRIPTOR.toString() ); - IndexProvider.Monitor monitor = monitors.newMonitor( IndexProvider.Monitor.class, DESCRIPTOR.toString() ); - Config config = dependencies.getConfig(); - OperationalMode operationalMode = context.databaseInfo().operationalMode; - RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); - return create( pageCache, databaseDirectory, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + return create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } public static FusionIndexProvider create( PageCache pageCache, File databaseDirectory, FileSystemAbstraction fs, @@ -96,12 +84,7 @@ public static FusionIndexProvider create( PageCache pageCache, File databaseDire IndexProviderFactoryUtil.temporalProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly ); LuceneIndexProvider lucene = IndexProviderFactoryUtil.luceneProvider( fs, childDirectoryStructure, monitor, config, operationalMode ); - String defaultSchemaProvider = config.get( GraphDatabaseSettings.default_schema_provider ); - int priority = PRIORITY; - if ( GraphDatabaseSettings.SchemaIndex.NATIVE20.providerIdentifier().equals( defaultSchemaProvider ) ) - { - priority = 100; - } + int priority = adjustPriorityForConfig( PRIORITY, GraphDatabaseSettings.SchemaIndex.NATIVE20, config ); return new FusionIndexProvider( string, number, spatial, temporal, lucene, new FusionSlotSelector20(), DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); }