Skip to content

Commit

Permalink
Introduce contextDirectory in KernelContext.
Browse files Browse the repository at this point in the history
Provide description of what directory provided by KernelContext
for different type of extensions, deprecate old storeDir()
if favor of new contextDirectory().
  • Loading branch information
MishaDemianenko committed Jul 26, 2018
1 parent 686f1ec commit 85e8608
Show file tree
Hide file tree
Showing 10 changed files with 49 additions and 33 deletions.
Expand Up @@ -306,7 +306,6 @@ private void deleteNode( long node )
} }
} }


// Creates a lucene index factory with the shared in-memory directory
private KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies> createAlwaysInitiallyPopulatingLuceneIndexFactory() private KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies> createAlwaysInitiallyPopulatingLuceneIndexFactory()
{ {
return new KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies>( return new KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies>(
Expand All @@ -315,7 +314,7 @@ private KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies> createAl
@Override @Override
public Lifecycle newInstance( KernelContext context, LuceneIndexProviderFactory.Dependencies dependencies ) 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 ) IndexProvider.Monitor.EMPTY, dependencies.getConfig(), context.databaseInfo().operationalMode )
{ {
@Override @Override
Expand All @@ -338,7 +337,7 @@ private KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies> createLu
@Override @Override
public Lifecycle newInstance( KernelContext context, LuceneIndexProviderFactory.Dependencies dependencies ) 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 ) IndexProvider.Monitor.EMPTY, dependencies.getConfig(), context.databaseInfo().operationalMode )
{ {
@Override @Override
Expand Down
Expand Up @@ -21,14 +21,30 @@


import java.io.File; import java.io.File;


import org.neo4j.kernel.extension.ExtensionType;
import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.DatabaseInfo;
import org.neo4j.kernel.impl.util.DependencySatisfier; import org.neo4j.kernel.impl.util.DependencySatisfier;


public interface KernelContext 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(); File storeDir();


DatabaseInfo databaseInfo(); DatabaseInfo databaseInfo();


DependencySatisfier dependencySatisfier(); 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();
}
} }
Expand Up @@ -26,21 +26,22 @@


public class SimpleKernelContext implements KernelContext public class SimpleKernelContext implements KernelContext
{ {
private final File storeDir; private final File contextDirectory;
private final DatabaseInfo databaseInfo; private final DatabaseInfo databaseInfo;
private final DependencySatisfier satisfier; 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.databaseInfo = databaseInfo;
this.satisfier = satisfier; this.satisfier = satisfier;
} }


@Override @Override
@Deprecated
public File storeDir() public File storeDir()
{ {
return storeDir; return contextDirectory;
} }


@Override @Override
Expand Down
Expand Up @@ -63,7 +63,7 @@ public LuceneKernelExtensionFactory()
public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) public Lifecycle newInstance( KernelContext context, Dependencies dependencies )
{ {
return new LuceneKernelExtension( return new LuceneKernelExtension(
context.storeDir(), context.contextDirectory(),
dependencies.getConfig(), dependencies.getConfig(),
dependencies::getIndexStore, dependencies::getIndexStore,
dependencies.fileSystem(), dependencies.fileSystem(),
Expand Down
Expand Up @@ -51,7 +51,7 @@ public LuceneKernelExtensionFactory()
public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) public Lifecycle newInstance( KernelContext context, Dependencies dependencies )
{ {
return new LuceneKernelExtension( return new LuceneKernelExtension(
context.storeDir(), context.contextDirectory(),
dependencies.getConfig(), dependencies.getConfig(),
dependencies::getIndexStore, dependencies::getIndexStore,
dependencies.fileSystem(), dependencies.fileSystem(),
Expand Down
Expand Up @@ -79,7 +79,7 @@ public LuceneIndexProviderFactory()
public IndexProvider newInstance( KernelContext context, Dependencies dependencies ) public IndexProvider newInstance( KernelContext context, Dependencies dependencies )
{ {
PageCache pageCache = dependencies.pageCache(); PageCache pageCache = dependencies.pageCache();
File storeDir = context.storeDir(); File databaseDirectory = context.contextDirectory();
FileSystemAbstraction fs = dependencies.fileSystem(); FileSystemAbstraction fs = dependencies.fileSystem();
Monitors monitors = dependencies.monitors(); Monitors monitors = dependencies.monitors();
Log log = dependencies.getLogService().getInternalLogProvider().getLog( LuceneIndexProvider.class ); Log log = dependencies.getLogService().getInternalLogProvider().getLog( LuceneIndexProvider.class );
Expand All @@ -88,17 +88,17 @@ public IndexProvider newInstance( KernelContext context, Dependencies dependenci
Config config = dependencies.getConfig(); Config config = dependencies.getConfig();
OperationalMode operationalMode = context.databaseInfo().operationalMode; OperationalMode operationalMode = context.databaseInfo().operationalMode;
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); 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, IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode,
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) RecoveryCleanupWorkCollector recoveryCleanupWorkCollector )
{ {
boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode ); boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode );
boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index ); boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index );
IndexDirectoryStructure.Factory luceneDirStructure = directoriesByProviderKey( storeDir ); IndexDirectoryStructure.Factory luceneDirStructure = directoriesByProviderKey( databaseDirectory );
IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( storeDir ); IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( databaseDirectory );


LuceneIndexProvider lucene = IndexProviderFactoryUtil.luceneProvider( fs, luceneDirStructure, monitor, config, operationalMode ); LuceneIndexProvider lucene = IndexProviderFactoryUtil.luceneProvider( fs, luceneDirStructure, monitor, config, operationalMode );
TemporalIndexProvider temporal = TemporalIndexProvider temporal =
Expand All @@ -113,11 +113,11 @@ public static FusionIndexProvider newInstance( PageCache pageCache, File storeDi
priority = 100; priority = 100;
} }
return new FusionIndexProvider( EMPTY, EMPTY, spatial, temporal, lucene, new FusionSlotSelector00(), 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 );
} }
} }
Expand Up @@ -59,7 +59,7 @@ public interface Dependencies extends LuceneIndexProviderFactory.Dependencies
public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies ) public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies )
{ {
PageCache pageCache = dependencies.pageCache(); PageCache pageCache = dependencies.pageCache();
File storeDir = context.storeDir(); File databaseDirectory = context.contextDirectory();
FileSystemAbstraction fs = dependencies.fileSystem(); FileSystemAbstraction fs = dependencies.fileSystem();
Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class );
Monitors monitors = dependencies.monitors(); Monitors monitors = dependencies.monitors();
Expand All @@ -68,14 +68,14 @@ public FusionIndexProvider newInstance( KernelContext context, Dependencies depe
Config config = dependencies.getConfig(); Config config = dependencies.getConfig();
OperationalMode operationalMode = context.databaseInfo().operationalMode; OperationalMode operationalMode = context.databaseInfo().operationalMode;
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); 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, IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode,
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) RecoveryCleanupWorkCollector recoveryCleanupWorkCollector )
{ {
IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( storeDir ); IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( databaseDirectory );
boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode ); boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode );
boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index ); boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index );


Expand All @@ -94,11 +94,11 @@ public static FusionIndexProvider create( PageCache pageCache, File storeDir, Fi
priority = 100; priority = 100;
} }
return new FusionIndexProvider( EMPTY, number, spatial, temporal, lucene, new FusionSlotSelector10(), 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 );
} }
} }
Expand Up @@ -59,7 +59,7 @@ public interface Dependencies extends LuceneIndexProviderFactory.Dependencies
public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies ) public FusionIndexProvider newInstance( KernelContext context, Dependencies dependencies )
{ {
PageCache pageCache = dependencies.pageCache(); PageCache pageCache = dependencies.pageCache();
File storeDir = context.storeDir(); File databaseDirectory = context.contextDirectory();
FileSystemAbstraction fs = dependencies.fileSystem(); FileSystemAbstraction fs = dependencies.fileSystem();
Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class ); Log log = dependencies.getLogService().getInternalLogProvider().getLog( FusionIndexProvider.class );
Monitors monitors = dependencies.monitors(); Monitors monitors = dependencies.monitors();
Expand All @@ -68,14 +68,14 @@ public FusionIndexProvider newInstance( KernelContext context, Dependencies depe
Config config = dependencies.getConfig(); Config config = dependencies.getConfig();
OperationalMode operationalMode = context.databaseInfo().operationalMode; OperationalMode operationalMode = context.databaseInfo().operationalMode;
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = dependencies.recoveryCleanupWorkCollector(); 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, IndexProvider.Monitor monitor, Config config, OperationalMode operationalMode,
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector ) RecoveryCleanupWorkCollector recoveryCleanupWorkCollector )
{ {
IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( storeDir ); IndexDirectoryStructure.Factory childDirectoryStructure = subProviderDirectoryStructure( databaseDirectory );
boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode ); boolean readOnly = IndexProviderFactoryUtil.isReadOnly( config, operationalMode );
boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index ); boolean archiveFailedIndex = config.get( GraphDatabaseSettings.archive_failed_index );


Expand All @@ -96,7 +96,7 @@ public static FusionIndexProvider create( PageCache pageCache, File storeDir, Fi
priority = 100; priority = 100;
} }
return new FusionIndexProvider( string, number, spatial, temporal, lucene, new FusionSlotSelector20(), 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 ) public static IndexDirectoryStructure.Factory subProviderDirectoryStructure( File databaseDirectory )
Expand Down
Expand Up @@ -557,15 +557,15 @@ private static class ControllingIndexProviderFactory extends KernelExtensionFact
public Lifecycle newInstance( KernelContext context, SchemaIndexHaIT.IndexProviderDependencies deps ) public Lifecycle newInstance( KernelContext context, SchemaIndexHaIT.IndexProviderDependencies deps )
{ {
PageCache pageCache = deps.pageCache(); PageCache pageCache = deps.pageCache();
File storeDir = context.storeDir(); File databaseDirectory = context.contextDirectory();
DefaultFileSystemAbstraction fs = fileSystemRule.get(); DefaultFileSystemAbstraction fs = fileSystemRule.get();
IndexProvider.Monitor monitor = IndexProvider.Monitor.EMPTY; IndexProvider.Monitor monitor = IndexProvider.Monitor.EMPTY;
Config config = deps.config(); Config config = deps.config();
OperationalMode operationalMode = context.databaseInfo().operationalMode; OperationalMode operationalMode = context.databaseInfo().operationalMode;
RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = deps.recoveryCleanupWorkCollector(); RecoveryCleanupWorkCollector recoveryCleanupWorkCollector = deps.recoveryCleanupWorkCollector();


FusionIndexProvider fusionIndexProvider = FusionIndexProvider fusionIndexProvider = NativeLuceneFusionIndexProviderFactory20.create( pageCache, databaseDirectory, fs, monitor,
NativeLuceneFusionIndexProviderFactory20.create( pageCache, storeDir, fs, monitor, config, operationalMode, recoveryCleanupWorkCollector ); config, operationalMode, recoveryCleanupWorkCollector );


if ( injectLatchPredicate.test( deps.db() ) ) if ( injectLatchPredicate.test( deps.db() ) )
{ {
Expand Down
Expand Up @@ -83,7 +83,7 @@ public void init() throws IOException
} }
Long rotationThreshold = config.get( MetricsSettings.csvRotationThreshold ); Long rotationThreshold = config.get( MetricsSettings.csvRotationThreshold );
Integer maxArchives = config.get( MetricsSettings.csvMaxArchives ); Integer maxArchives = config.get( MetricsSettings.csvMaxArchives );
outputPath = absoluteFileOrRelativeTo( kernelContext.storeDir(), configuredPath ); outputPath = absoluteFileOrRelativeTo( kernelContext.contextDirectory(), configuredPath );
csvReporter = RotatableCsvReporter.forRegistry( registry ) csvReporter = RotatableCsvReporter.forRegistry( registry )
.convertRatesTo( TimeUnit.SECONDS ) .convertRatesTo( TimeUnit.SECONDS )
.convertDurationsTo( TimeUnit.MILLISECONDS ) .convertDurationsTo( TimeUnit.MILLISECONDS )
Expand Down

0 comments on commit 85e8608

Please sign in to comment.