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()
{
return new KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies>(
Expand All @@ -315,7 +314,7 @@ private KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies> 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
Expand All @@ -338,7 +337,7 @@ private KernelExtensionFactory<LuceneIndexProviderFactory.Dependencies> 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
Expand Down
Expand Up @@ -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();
}
}
Expand Up @@ -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
Expand Down
Expand Up @@ -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(),
Expand Down
Expand Up @@ -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(),
Expand Down
Expand Up @@ -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 );
Expand All @@ -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 =
Expand All @@ -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 );
}
}
Expand Up @@ -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();
Expand All @@ -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 );

Expand All @@ -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 );
}
}
Expand Up @@ -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();
Expand All @@ -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 );

Expand All @@ -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 )
Expand Down
Expand Up @@ -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() ) )
{
Expand Down
Expand Up @@ -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 )
Expand Down

0 comments on commit 85e8608

Please sign in to comment.