From 1876944a184a76d11ec8278512cca00ba9ad8fb9 Mon Sep 17 00:00:00 2001 From: Anton Persson Date: Mon, 23 Jul 2018 16:34:30 +0200 Subject: [PATCH] PR comment: GraphDatabaseSettings#SchemaIndex owns index provider priority --- .../factory/GraphDatabaseSettings.java | 19 ++++++++++++++----- .../schema/AbstractIndexProviderFactory.java | 7 ------- .../schema/GenericNativeIndexProvider.java | 6 +++--- .../GenericNativeIndexProviderFactory.java | 4 +--- .../api/impl/schema/LuceneIndexProvider.java | 4 +--- .../schema/LuceneIndexProviderFactory.java | 8 ++++---- ...iveLuceneFusionIndexProviderFactory10.java | 9 ++++----- ...iveLuceneFusionIndexProviderFactory20.java | 9 ++++----- 8 files changed, 31 insertions(+), 35 deletions(-) diff --git a/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseSettings.java b/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseSettings.java index 76183c5967dd..57fcc9c89666 100644 --- a/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseSettings.java +++ b/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseSettings.java @@ -37,6 +37,7 @@ import org.neo4j.helpers.ListenSocketAddress; import org.neo4j.io.ByteUnit; import org.neo4j.kernel.configuration.BoltConnectorValidator; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.ConfigurationMigrator; import org.neo4j.kernel.configuration.GraphDatabaseConfigurationMigrator; import org.neo4j.kernel.configuration.Group; @@ -559,16 +560,18 @@ public class GraphDatabaseSettings implements LoadableConfig public enum SchemaIndex { - NATIVE_GBPTREE10( "native-gbptree", "1.0" ), - NATIVE20( "lucene+native", "2.0" ), - NATIVE10( "lucene+native", "1.0" ), - LUCENE10( "lucene", "1.0" ); + NATIVE_GBPTREE10( 0, "native-gbptree", "1.0" ), // TODO: Zero because should not be default yet. + NATIVE20( 3, "lucene+native", "2.0" ), + NATIVE10( 2, "lucene+native", "1.0" ), + LUCENE10( 1, "lucene", "1.0" ); + private final int priority; // Higher is better private final String providerName; private final String providerVersion; - SchemaIndex( String providerName, String providerVersion ) + SchemaIndex( int priority, String providerName, String providerVersion ) { + this.priority = priority; this.providerName = providerName; this.providerVersion = providerVersion; } @@ -587,6 +590,12 @@ public String providerVersion() { return providerVersion; } + + public int priority( Config config ) + { + String configuredSchemaProvider = config.get( GraphDatabaseSettings.default_schema_provider ); + return providerIdentifier().equals( configuredSchemaProvider ) ? 100 : priority; + } } @Description( "Index provider to use for newly created schema indexes. " + 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 index b811b9fe282e..6fafdfdaad78 100644 --- 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 @@ -21,7 +21,6 @@ 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; @@ -60,12 +59,6 @@ public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) 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(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProvider.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProvider.java index ba73307132e2..f72481acec7d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProvider.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/index/schema/GenericNativeIndexProvider.java @@ -82,9 +82,9 @@ */ public class GenericNativeIndexProvider extends NativeIndexProvider { - public static final String KEY = GraphDatabaseSettings.SchemaIndex.NATIVE_GBPTREE10.providerName(); - public static final String VERSION = GraphDatabaseSettings.SchemaIndex.NATIVE_GBPTREE10.providerVersion(); - public static final IndexProvider.Descriptor DESCRIPTOR = new IndexProvider.Descriptor( KEY, VERSION ); + public static final GraphDatabaseSettings.SchemaIndex SCHEMA_INDEX = GraphDatabaseSettings.SchemaIndex.NATIVE_GBPTREE10; + public static final String KEY = SCHEMA_INDEX.providerName(); + public static final IndexProvider.Descriptor DESCRIPTOR = new IndexProvider.Descriptor( KEY, SCHEMA_INDEX.providerVersion() ); // TODO implement public static final IndexCapability CAPABILITY = new IndexCapability() 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 f6db010fe3ca..b653638207c6 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 @@ -37,8 +37,6 @@ @Service.Implementation( KernelExtensionFactory.class ) public class GenericNativeIndexProviderFactory extends AbstractIndexProviderFactory { - private static final int PRIORITY = 0; // TODO: Zero because should not be default yet. - public GenericNativeIndexProviderFactory() { super( GenericNativeIndexProvider.KEY ); @@ -66,7 +64,7 @@ protected GenericNativeIndexProvider internalCreate( PageCache pageCache, File s public static GenericNativeIndexProvider create( PageCache pageCache, File storeDir, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, OperationalMode mode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - int priority = adjustPriorityForConfig( PRIORITY, GraphDatabaseSettings.SchemaIndex.NATIVE_GBPTREE10, config ); + int priority = GenericNativeIndexProvider.SCHEMA_INDEX.priority( 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/LuceneIndexProvider.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProvider.java index 4da93146a87f..7451b881b4c4 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProvider.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/LuceneIndexProvider.java @@ -48,8 +48,6 @@ public class LuceneIndexProvider extends IndexProvider { - static final int PRIORITY = 1; - private final IndexStorageFactory indexStorageFactory; private final Config config; private final OperationalMode operationalMode; @@ -60,7 +58,7 @@ public LuceneIndexProvider( FileSystemAbstraction fileSystem, DirectoryFactory d IndexDirectoryStructure.Factory directoryStructureFactory, Monitor monitor, Config config, OperationalMode operationalMode ) { - super( LuceneIndexProviderFactory.PROVIDER_DESCRIPTOR, PRIORITY, directoryStructureFactory ); + super( LuceneIndexProviderFactory.PROVIDER_DESCRIPTOR, 0, directoryStructureFactory ); this.monitor = monitor; this.indexStorageFactory = buildIndexStorageFactory( fileSystem, directoryFactory ); this.fileSystem = fileSystem; 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 e5ff26ff1da9..587e0ee0741a 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 @@ -44,9 +44,9 @@ @Service.Implementation( KernelExtensionFactory.class ) public class LuceneIndexProviderFactory extends AbstractIndexProviderFactory { - 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 ); + private static final GraphDatabaseSettings.SchemaIndex SCHEMA_INDEX = GraphDatabaseSettings.SchemaIndex.LUCENE10; + private static final String KEY = SCHEMA_INDEX.providerName(); + public static final IndexProvider.Descriptor PROVIDER_DESCRIPTOR = new IndexProvider.Descriptor( KEY, SCHEMA_INDEX.providerVersion() ); public LuceneIndexProviderFactory() { @@ -87,7 +87,7 @@ public static FusionIndexProvider newInstance( PageCache pageCache, File databas SpatialIndexProvider spatial = IndexProviderFactoryUtil.spatialProvider( pageCache, fs, childDirectoryStructure, monitor, recoveryCleanupWorkCollector, readOnly, config ); - int priority = adjustPriorityForConfig( LuceneIndexProvider.PRIORITY, GraphDatabaseSettings.SchemaIndex.LUCENE10, config ); + int priority = SCHEMA_INDEX.priority( 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/NativeLuceneFusionIndexProviderFactory10.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/schema/NativeLuceneFusionIndexProviderFactory10.java index 402fd65a1451..8ad8b330f1b9 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 @@ -43,10 +43,9 @@ @Service.Implementation( KernelExtensionFactory.class ) public class NativeLuceneFusionIndexProviderFactory10 extends NativeLuceneFusionIndexProviderFactory { - public static final String KEY = GraphDatabaseSettings.SchemaIndex.NATIVE10.providerName(); - public static final String VERSION = GraphDatabaseSettings.SchemaIndex.NATIVE10.providerVersion(); - public static final IndexProvider.Descriptor DESCRIPTOR = new IndexProvider.Descriptor( KEY, VERSION ); - static final int PRIORITY = LuceneIndexProvider.PRIORITY + 1; + private static final GraphDatabaseSettings.SchemaIndex SCHEMA_INDEX = GraphDatabaseSettings.SchemaIndex.NATIVE10; + private static final String KEY = SCHEMA_INDEX.providerName(); + public static final IndexProvider.Descriptor DESCRIPTOR = new IndexProvider.Descriptor( KEY, SCHEMA_INDEX.providerVersion() ); public NativeLuceneFusionIndexProviderFactory10() { @@ -82,7 +81,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 ); - int priority = adjustPriorityForConfig( PRIORITY, GraphDatabaseSettings.SchemaIndex.NATIVE10, config ); + int priority = SCHEMA_INDEX.priority( 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 85bce8c53305..f1039cec531e 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 @@ -43,10 +43,9 @@ @Service.Implementation( KernelExtensionFactory.class ) public class NativeLuceneFusionIndexProviderFactory20 extends NativeLuceneFusionIndexProviderFactory { - public static final String KEY = GraphDatabaseSettings.SchemaIndex.NATIVE20.providerName(); - public static final String VERSION = GraphDatabaseSettings.SchemaIndex.NATIVE20.providerVersion(); - public static final IndexProvider.Descriptor DESCRIPTOR = new IndexProvider.Descriptor( KEY, VERSION ); - private static final int PRIORITY = NativeLuceneFusionIndexProviderFactory10.PRIORITY + 1; + private static final GraphDatabaseSettings.SchemaIndex SCHEMA_INDEX = GraphDatabaseSettings.SchemaIndex.NATIVE20; + public static final String KEY = SCHEMA_INDEX.providerName(); + public static final IndexProvider.Descriptor DESCRIPTOR = new IndexProvider.Descriptor( KEY, SCHEMA_INDEX.providerVersion() ); public NativeLuceneFusionIndexProviderFactory20() { @@ -84,7 +83,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 ); - int priority = adjustPriorityForConfig( PRIORITY, GraphDatabaseSettings.SchemaIndex.NATIVE20, config ); + int priority = SCHEMA_INDEX.priority( config ); return new FusionIndexProvider( string, number, spatial, temporal, lucene, new FusionSlotSelector20(), DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); }