From 85e8608ccc376b2e7a1291a2d16eeebf53c84ba5 Mon Sep 17 00:00:00 2001 From: MishaDemianenko Date: Tue, 24 Jul 2018 16:05:04 +0200 Subject: [PATCH] Introduce contextDirectory in KernelContext. Provide description of what directory provided by KernelContext for different type of extensions, deprecate old storeDir() if favor of new contextDirectory(). --- .../api/impl/schema/LuceneIndexRecoveryIT.java | 5 ++--- .../org/neo4j/kernel/impl/spi/KernelContext.java | 16 ++++++++++++++++ .../kernel/impl/spi/SimpleKernelContext.java | 9 +++++---- .../lucene/LuceneKernelExtensionFactory.java | 2 +- .../impl/index/LuceneKernelExtensionFactory.java | 2 +- .../impl/schema/LuceneIndexProviderFactory.java | 16 ++++++++-------- ...NativeLuceneFusionIndexProviderFactory10.java | 14 +++++++------- ...NativeLuceneFusionIndexProviderFactory20.java | 10 +++++----- .../org/neo4j/kernel/api/SchemaIndexHaIT.java | 6 +++--- .../java/org/neo4j/metrics/output/CsvOutput.java | 2 +- 10 files changed, 49 insertions(+), 33 deletions(-) diff --git a/community/community-it/index-it/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneIndexRecoveryIT.java b/community/community-it/index-it/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneIndexRecoveryIT.java index deec735377cd..059f0f816150 100644 --- a/community/community-it/index-it/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneIndexRecoveryIT.java +++ b/community/community-it/index-it/src/test/java/org/neo4j/kernel/api/impl/schema/LuceneIndexRecoveryIT.java @@ -306,7 +306,6 @@ private void deleteNode( long node ) } } - // Creates a lucene index factory with the shared in-memory directory private KernelExtensionFactory createAlwaysInitiallyPopulatingLuceneIndexFactory() { return new KernelExtensionFactory( @@ -315,7 +314,7 @@ private KernelExtensionFactory createAl @Override public Lifecycle newInstance( KernelContext context, LuceneIndexProviderFactory.Dependencies dependencies ) { - return new LuceneIndexProvider( fs.get(), directoryFactory, defaultDirectoryStructure( context.storeDir() ), + return new LuceneIndexProvider( fs.get(), directoryFactory, defaultDirectoryStructure( context.contextDirectory() ), IndexProvider.Monitor.EMPTY, dependencies.getConfig(), context.databaseInfo().operationalMode ) { @Override @@ -338,7 +337,7 @@ private KernelExtensionFactory createLu @Override public Lifecycle newInstance( KernelContext context, LuceneIndexProviderFactory.Dependencies dependencies ) { - return new LuceneIndexProvider( fs.get(), directoryFactory, defaultDirectoryStructure( context.storeDir() ), + return new LuceneIndexProvider( fs.get(), directoryFactory, defaultDirectoryStructure( context.contextDirectory() ), IndexProvider.Monitor.EMPTY, dependencies.getConfig(), context.databaseInfo().operationalMode ) { @Override diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java index 0ced6560d9c7..65d0eb4c9e1a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java @@ -21,14 +21,30 @@ import java.io.File; +import org.neo4j.kernel.extension.ExtensionType; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.util.DependencySatisfier; public interface KernelContext { + /** + * @return store directory for {@link ExtensionType#GLOBAL} extensions and + * particular database directory if extension is per {@link ExtensionType#DATABASE}. + * @deprecated Please use {@link #contextDirectory()} instead. + */ + @Deprecated File storeDir(); DatabaseInfo databaseInfo(); DependencySatisfier dependencySatisfier(); + + /** + * @return store directory for {@link ExtensionType#GLOBAL} extensions and + * particular database directory if extension is per {@link ExtensionType#DATABASE}. + */ + default File contextDirectory() + { + return storeDir(); + } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java index 6ee579bed73c..2d0369207869 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java @@ -26,21 +26,22 @@ public class SimpleKernelContext implements KernelContext { - private final File storeDir; + private final File contextDirectory; private final DatabaseInfo databaseInfo; private final DependencySatisfier satisfier; - public SimpleKernelContext( File storeDir, DatabaseInfo databaseInfo, DependencySatisfier satisfier ) + public SimpleKernelContext( File contextDirectory, DatabaseInfo databaseInfo, DependencySatisfier satisfier ) { - this.storeDir = storeDir; + this.contextDirectory = contextDirectory; this.databaseInfo = databaseInfo; this.satisfier = satisfier; } @Override + @Deprecated public File storeDir() { - return storeDir; + return contextDirectory; } @Override diff --git a/community/lucene-index/src/main/java/org/neo4j/index/lucene/LuceneKernelExtensionFactory.java b/community/lucene-index/src/main/java/org/neo4j/index/lucene/LuceneKernelExtensionFactory.java index e797d5a720a0..b8396bcefd10 100644 --- a/community/lucene-index/src/main/java/org/neo4j/index/lucene/LuceneKernelExtensionFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/index/lucene/LuceneKernelExtensionFactory.java @@ -63,7 +63,7 @@ public LuceneKernelExtensionFactory() public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) { return new LuceneKernelExtension( - context.storeDir(), + context.contextDirectory(), dependencies.getConfig(), dependencies::getIndexStore, dependencies.fileSystem(), diff --git a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/index/LuceneKernelExtensionFactory.java b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/index/LuceneKernelExtensionFactory.java index de198a9f1c4d..6eaf58525814 100644 --- a/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/index/LuceneKernelExtensionFactory.java +++ b/community/lucene-index/src/main/java/org/neo4j/kernel/api/impl/index/LuceneKernelExtensionFactory.java @@ -51,7 +51,7 @@ public LuceneKernelExtensionFactory() public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) { return new LuceneKernelExtension( - context.storeDir(), + context.contextDirectory(), dependencies.getConfig(), dependencies::getIndexStore, dependencies.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 6cd44f7322af..31ed3b51f935 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 @@ -79,7 +79,7 @@ public LuceneIndexProviderFactory() public IndexProvider newInstance( KernelContext context, Dependencies dependencies ) { PageCache pageCache = dependencies.pageCache(); - File storeDir = context.storeDir(); + File databaseDirectory = context.contextDirectory(); FileSystemAbstraction fs = dependencies.fileSystem(); Monitors monitors = dependencies.monitors(); Log log = dependencies.getLogService().getInternalLogProvider().getLog( LuceneIndexProvider.class ); @@ -88,17 +88,17 @@ public IndexProvider newInstance( KernelContext context, Dependencies dependenci Config config = dependencies.getConfig(); OperationalMode operationalMode = context.databaseInfo().operationalMode; RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); - return newInstance( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + return newInstance( pageCache, databaseDirectory, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } - public static FusionIndexProvider newInstance( PageCache pageCache, File storeDir, FileSystemAbstraction fs, + public static FusionIndexProvider newInstance( PageCache pageCache, File databaseDirectory, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode ); boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index ); - IndexDirectoryStructure.Factory luceneDirStructure = directoriesByProviderKey( storeDir ); - IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( storeDir ); + IndexDirectoryStructure.Factory luceneDirStructure = directoriesByProviderKey( databaseDirectory ); + IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( databaseDirectory ); LuceneIndexProvider lucene = IndexProviderFactoryUtil.luceneProvider( fs, luceneDirStructure, monitor, config, operationalMode ); TemporalIndexProvider temporal = @@ -113,11 +113,11 @@ public static FusionIndexProvider newInstance( PageCache pageCache, File storeDi priority = 100; } return new FusionIndexProvider( EMPTY, EMPTY, spatial, temporal, lucene, new FusionSlotSelector00(), - PROVIDER_DESCRIPTOR, priority, directoriesByProvider( storeDir ), fs, archiveFailedIndex ); + PROVIDER_DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); } - private static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File storeDir ) + private static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File databaseDirectory ) { - return NativeLuceneFusionIndexProviderFactory.subProviderDirectoryStructure( storeDir, PROVIDER_DESCRIPTOR ); + return NativeLuceneFusionIndexProviderFactory.subProviderDirectoryStructure( databaseDirectory, PROVIDER_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 66ec9688e34b..4b7c86e55218 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 @@ -59,7 +59,7 @@ public interface Dependencies extends LuceneIndexProviderFactory.Dependencies public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies ) { PageCache pageCache = dependencies.pageCache(); - File storeDir = context.storeDir(); + File databaseDirectory = context.contextDirectory(); FileSystemAbstraction fs = dependencies.fileSystem(); Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); Monitors monitors = dependencies.monitors(); @@ -68,14 +68,14 @@ public FusionIndexProvider newInstance( KernelContext context, Dependencies depe Config config = dependencies.getConfig(); OperationalMode operationalMode = context.databaseInfo().operationalMode; RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); - return create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + return create( pageCache, databaseDirectory, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } - public static FusionIndexProvider create( PageCache pageCache, File storeDir, FileSystemAbstraction fs, + public static FusionIndexProvider create( PageCache pageCache, File databaseDirectory, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( storeDir ); + IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( databaseDirectory ); boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode ); boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index ); @@ -94,11 +94,11 @@ public static FusionIndexProvider create( PageCache pageCache, File storeDir, Fi priority = 100; } return new FusionIndexProvider( EMPTY, number, spatial, temporal, lucene, new FusionSlotSelector10(), - DESCRIPTOR, priority, directoriesByProvider( storeDir ), fs, archiveFailedIndex ); + DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); } - private static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File storeDir ) + private static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File databaseDirectory ) { - return NativeLuceneFusionIndexProviderFactory.subProviderDirectoryStructure( storeDir, DESCRIPTOR ); + return NativeLuceneFusionIndexProviderFactory.subProviderDirectoryStructure( databaseDirectory, DESCRIPTOR ); } } 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 22a48fcdb466..6ef7ef391cd4 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 @@ -59,7 +59,7 @@ public interface Dependencies extends LuceneIndexProviderFactory.Dependencies public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies ) { PageCache pageCache = dependencies.pageCache(); - File storeDir = context.storeDir(); + File databaseDirectory = context.contextDirectory(); FileSystemAbstraction fs = dependencies.fileSystem(); Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); Monitors monitors = dependencies.monitors(); @@ -68,14 +68,14 @@ public FusionIndexProvider newInstance( KernelContext context, Dependencies depe Config config = dependencies.getConfig(); OperationalMode operationalMode = context.databaseInfo().operationalMode; RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); - return create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + return create( pageCache, databaseDirectory, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); } - public static FusionIndexProvider create( PageCache pageCache, File storeDir, FileSystemAbstraction fs, + public static FusionIndexProvider create( PageCache pageCache, File databaseDirectory, FileSystemAbstraction fs, IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode, RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) { - IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( storeDir ); + IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( databaseDirectory ); boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode ); boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index ); @@ -96,7 +96,7 @@ public static FusionIndexProvider create( PageCache pageCache, File storeDir, Fi priority = 100; } return new FusionIndexProvider( string, number, spatial, temporal, lucene, new FusionSlotSelector20(), - DESCRIPTOR, priority, directoriesByProvider( storeDir ), fs, archiveFailedIndex ); + DESCRIPTOR, priority, directoriesByProvider( databaseDirectory ), fs, archiveFailedIndex ); } public static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File databaseDirectory ) diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/api/SchemaIndexHaIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/api/SchemaIndexHaIT.java index 736ef6598b31..4b79e1264d44 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/api/SchemaIndexHaIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/api/SchemaIndexHaIT.java @@ -557,15 +557,15 @@ private static class ControllingIndexProviderFactory extends KernelExtensionFact public Lifecycle newInstance( KernelContext context, SchemaIndexHaIT.IndexProviderDependencies deps ) { PageCache pageCache = deps.pageCache(); - File storeDir = context.storeDir(); + File databaseDirectory = context.contextDirectory(); DefaultFileSystemAbstraction fs = fileSystemRule.get(); IndexProvider.Monitor monitor = IndexProvider.Monitor.EMPTY; Config config = deps.config(); OperationalMode operationalMode = context.databaseInfo().operationalMode; RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = deps.recoveryCleanupWorkCollector(); - FusionIndexProvider fusionIndexProvider = - NativeLuceneFusionIndexProviderFactory20.create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); + FusionIndexProvider fusionIndexProvider = NativeLuceneFusionIndexProviderFactory20.create( pageCache, databaseDirectory, fs, monitor, + config, operationalMode, recoveryCleanupWorkCollector ); if ( injectLatchPredicate.test( deps.db() ) ) { diff --git a/enterprise/metrics/src/main/java/org/neo4j/metrics/output/CsvOutput.java b/enterprise/metrics/src/main/java/org/neo4j/metrics/output/CsvOutput.java index 3658b89dc0ea..f26efeae64be 100644 --- a/enterprise/metrics/src/main/java/org/neo4j/metrics/output/CsvOutput.java +++ b/enterprise/metrics/src/main/java/org/neo4j/metrics/output/CsvOutput.java @@ -83,7 +83,7 @@ public void init() throws IOException } Long rotationThreshold = config.get( MetricsSettings.csvRotationThreshold ); Integer maxArchives = config.get( MetricsSettings.csvMaxArchives ); - outputPath = absoluteFileOrRelativeTo( kernelContext.storeDir(), configuredPath ); + outputPath = absoluteFileOrRelativeTo( kernelContext.contextDirectory(), configuredPath ); csvReporter = RotatableCsvReporter.forRegistry( registry ) .convertRatesTo( TimeUnit.SECONDS ) .convertDurationsTo( TimeUnit.MILLISECONDS )