Skip to content

Commit

Permalink
Pass operational mode to platform module factory method, label scan s…
Browse files Browse the repository at this point in the history
…tore and lucene schema indexes directly instead of using config
  • Loading branch information
MishaDemianenko committed Jul 23, 2016
1 parent e09d44d commit af307e1
Show file tree
Hide file tree
Showing 35 changed files with 177 additions and 94 deletions.
Expand Up @@ -52,6 +52,7 @@
import org.neo4j.logging.DuplicatingLog;
import org.neo4j.logging.Log;
import org.neo4j.logging.LogProvider;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.neo4j.io.file.Files.createOrOpenAsOuputStream;

Expand Down Expand Up @@ -140,11 +141,13 @@ public PrintWriter get()
LabelScanStore labelScanStore = null;
try
{
labelScanStore = new LuceneLabelScanStoreBuilder(
storeDir, store.getRawNeoStores(), fileSystem, consistencyCheckerConfig, logProvider ).build();
OperationalMode operationalMode = OperationalMode.single;
labelScanStore = new LuceneLabelScanStoreBuilder( storeDir, store.getRawNeoStores(), fileSystem,
consistencyCheckerConfig, operationalMode, logProvider )
.build();
SchemaIndexProvider indexes = new LuceneSchemaIndexProvider(
fileSystem, DirectoryFactory.PERSISTENT,
storeDir, tuningConfiguration );
storeDir, tuningConfiguration, operationalMode );
DirectStoreAccess stores = new DirectStoreAccess( store, labelScanStore, indexes );
FullCheck check = new FullCheck( tuningConfiguration, progressFactory );
summary = check.execute( stores, new DuplicatingLog( log, reportLog ) );
Expand Down
Expand Up @@ -65,6 +65,7 @@
import org.neo4j.test.PageCacheRule;
import org.neo4j.test.TargetDirectory;
import org.neo4j.test.TestGraphDatabaseFactory;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static java.lang.System.currentTimeMillis;

Expand All @@ -85,24 +86,28 @@ public DirectStoreAccess directStoreAccess()
PageCache pageCache = getPageCache( fileSystem );
StoreAccess nativeStores = new StoreAccess( fileSystem, pageCache, directory ).initialize();
Config config = new Config();
OperationalMode operationalMode = OperationalMode.single;
directStoreAccess = new DirectStoreAccess(
nativeStores,
new LuceneLabelScanStoreBuilder(
directory,
nativeStores.getRawNeoStores(),
fileSystem,
config,
operationalMode,
FormattedLogProvider.toOutputStream( System.out )
).build(),
createIndexes( fileSystem, config )
createIndexes( fileSystem, config, operationalMode )
);
}
return directStoreAccess;
}

private SchemaIndexProvider createIndexes( FileSystemAbstraction fileSystem, Config config )
private SchemaIndexProvider createIndexes( FileSystemAbstraction fileSystem, Config config,
OperationalMode operationalMode )
{
return new LuceneSchemaIndexProvider( fileSystem, DirectoryFactory.PERSISTENT, directory, config );
return new LuceneSchemaIndexProvider( fileSystem, DirectoryFactory.PERSISTENT, directory, config,
operationalMode );
}

public File directory()
Expand Down
Expand Up @@ -58,6 +58,7 @@
import org.neo4j.logging.DuplicatingLog;
import org.neo4j.logging.Log;
import org.neo4j.logging.LogProvider;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.neo4j.io.file.Files.createOrOpenAsOuputStream;

Expand Down Expand Up @@ -144,12 +145,14 @@ public PrintWriter get()
LabelScanStore labelScanStore = null;
try
{
OperationalMode operationalMode = OperationalMode.single;
labelScanStore = new LuceneLabelScanStoreBuilder(
storeDir, neoStores, fileSystem, consistencyCheckerConfig, logProvider ).build();
storeDir, neoStores, fileSystem, consistencyCheckerConfig, operationalMode, logProvider )
.build();
SchemaIndexProvider indexes = new LuceneSchemaIndexProvider(
fileSystem,
DirectoryFactory.PERSISTENT,
storeDir, consistencyCheckerConfig );
storeDir, consistencyCheckerConfig, operationalMode );

int numberOfThreads = defaultConsistencyCheckThreadsNumber();
Statistics statistics;
Expand Down
Expand Up @@ -62,6 +62,7 @@
import org.neo4j.test.TargetDirectory;
import org.neo4j.test.TestGraphDatabaseFactory;
import org.neo4j.test.TestGraphDatabaseFactoryState;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.instanceOf;
Expand Down Expand Up @@ -340,10 +341,12 @@ private static class NonEphemeralImpermanentFacadeFactory extends CommunityFacad
}

@Override
protected PlatformModule createPlatform( File storeDir, Map<String, String> params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade )
protected PlatformModule createPlatform( File storeDir, Map<String, String> params,
Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
params.put( Configuration.ephemeral.name(), "false" );
return new PlatformModule( storeDir, params, dependencies, graphDatabaseFacade )
return new PlatformModule( storeDir, params, dependencies, graphDatabaseFacade, operationalMode )
{
@Override
protected FileSystemAbstraction createFileSystemAbstraction()
Expand Down
Expand Up @@ -73,6 +73,7 @@
import org.neo4j.test.PageCacheRule;
import org.neo4j.test.TargetDirectory;
import org.neo4j.test.TestGraphDatabaseFactory;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static java.lang.System.currentTimeMillis;
import static org.neo4j.consistency.ConsistencyCheckService.defaultConsistencyCheckThreadsNumber;
Expand Down Expand Up @@ -121,24 +122,27 @@ public DirectStoreAccess directStoreAccess()
}
nativeStores.initialize();
Config config = new Config();
OperationalMode operationalMode = OperationalMode.single;
directStoreAccess = new DirectStoreAccess(
nativeStores,
new LuceneLabelScanStoreBuilder(
directory,
nativeStores.getRawNeoStores(),
fileSystem,
config,
operationalMode,
FormattedLogProvider.toOutputStream( System.out )
).build(),
createIndexes( fileSystem, config )
createIndexes( fileSystem, config, operationalMode )
);
}
return directStoreAccess;
}

private SchemaIndexProvider createIndexes( FileSystemAbstraction fileSystem, Config config )
private SchemaIndexProvider createIndexes( FileSystemAbstraction fileSystem, Config config,
OperationalMode operationalMode )
{
return new LuceneSchemaIndexProvider( fileSystem, DirectoryFactory.PERSISTENT, directory, config );
return new LuceneSchemaIndexProvider( fileSystem, DirectoryFactory.PERSISTENT, directory, config, operationalMode );
}

public File directory()
Expand Down
Expand Up @@ -23,7 +23,7 @@
import java.util.Map;

import org.neo4j.graphdb.factory.GraphDatabaseSettings;
import org.neo4j.udc.UsageDataKeys;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.neo4j.helpers.collection.Iterables.append;
import static org.neo4j.helpers.collection.Iterables.toList;
Expand All @@ -40,10 +40,9 @@ public GraphDatabaseFacade newFacade( File storeDir, Map<String, String> params,
graphDatabaseFacade )
{
params.put( Configuration.editionName.name(), "Community" );
params.put( Configuration.operationalMode.name(), UsageDataKeys.OperationalMode.single.name() );
return super.newFacade( storeDir, params, newDependencies( dependencies ).settingsClasses(
toList( append( GraphDatabaseSettings.class, dependencies.settingsClasses() ) ) ),
graphDatabaseFacade );
graphDatabaseFacade, OperationalMode.single );
}

protected EditionModule createEdition( PlatformModule platformModule )
Expand Down
Expand Up @@ -33,7 +33,7 @@
import org.neo4j.kernel.monitoring.Monitors;
import org.neo4j.logging.LogProvider;
import org.neo4j.logging.Logger;
import org.neo4j.udc.UsageDataKeys;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.neo4j.kernel.configuration.Settings.ANY;
import static org.neo4j.kernel.configuration.Settings.STRING;
Expand Down Expand Up @@ -94,8 +94,7 @@ public static class Configuration
setting( "dbms.tracer", Settings.STRING, (String) null ); // 'null' default.

public static final Setting<String> editionName = setting( "edition", Settings.STRING, "Community" );
public static final Setting<UsageDataKeys.OperationalMode> operationalMode = setting( "operationalMode",
Settings.options( UsageDataKeys.OperationalMode.class ), UsageDataKeys.OperationalMode.single.name() );

}

/**
Expand All @@ -111,6 +110,20 @@ public GraphDatabaseFacade newFacade( File storeDir, Map<String, String> params,
return newFacade( storeDir, params, dependencies, new GraphDatabaseFacade() );
}

/**
* Instantiate a graph database given configuration and dependencies in single instance operational mode
* @param storeDir
* @param params
* @param dependencies
* @param graphDatabaseFacade
* @return
*/
public GraphDatabaseFacade newFacade( File storeDir, Map<String, String> params, final Dependencies dependencies,
final GraphDatabaseFacade graphDatabaseFacade)
{
return newFacade( storeDir, params, dependencies, new GraphDatabaseFacade(), OperationalMode.single );
}

/**
* Instantiate a graph database given configuration, dependencies, and a custom implementation of {@link org
* .neo4j.kernel.impl.factory.GraphDatabaseFacade}.
Expand All @@ -122,9 +135,10 @@ public GraphDatabaseFacade newFacade( File storeDir, Map<String, String> params,
* @return
*/
public GraphDatabaseFacade newFacade( File storeDir, Map<String, String> params, final Dependencies dependencies,
final GraphDatabaseFacade graphDatabaseFacade )
final GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
PlatformModule platform = createPlatform( storeDir, params, dependencies, graphDatabaseFacade );
PlatformModule platform = createPlatform( storeDir, params, dependencies, graphDatabaseFacade, operationalMode );
EditionModule edition = createEdition( platform );
final DataSourceModule dataSource = createDataSource( dependencies, platform, edition );

Expand Down Expand Up @@ -179,9 +193,10 @@ public GraphDatabaseFacade newFacade( File storeDir, Map<String, String> params,
* @return
*/
protected PlatformModule createPlatform( File storeDir, Map<String, String> params, final Dependencies dependencies,
final GraphDatabaseFacade graphDatabaseFacade )
final GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
return new PlatformModule( storeDir, params, dependencies, graphDatabaseFacade );
return new PlatformModule( storeDir, params, dependencies, graphDatabaseFacade, operationalMode );
}

/**
Expand Down
Expand Up @@ -64,6 +64,7 @@
import org.neo4j.logging.LogProvider;
import org.neo4j.udc.UsageData;
import org.neo4j.udc.UsageDataKeys;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

/**
* Platform module for {@link org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory}. This creates
Expand Down Expand Up @@ -106,7 +107,8 @@ public class PlatformModule
public final TransactionCounters transactionMonitor;

public PlatformModule( File storeDir, Map<String, String> params, final GraphDatabaseFacadeFactory.Dependencies externalDependencies,
final GraphDatabaseFacade graphDatabaseFacade)
final GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
dependencies = new org.neo4j.kernel.impl.util.Dependencies( new Supplier<DependencyResolver>()
{
Expand Down Expand Up @@ -171,7 +173,6 @@ public DependencyResolver get()

transactionMonitor = dependencies.satisfyDependency( createTransactionCounters() );

UsageDataKeys.OperationalMode operationalMode = config.get( GraphDatabaseFacadeFactory.Configuration.operationalMode );
KernelContext kernelContext = dependencies.satisfyDependency(
new SimpleKernelContext( this.fileSystem, this.storeDir, operationalMode ));

Expand All @@ -190,7 +191,7 @@ private void publishPlatformInfo( UsageData sysInfo )
{
sysInfo.set( UsageDataKeys.version, Version.getKernel().getReleaseVersion() );
sysInfo.set( UsageDataKeys.revision, Version.getKernel().getVersion() );
sysInfo.set( UsageDataKeys.operationalMode, UsageDataKeys.OperationalMode.ha );
sysInfo.set( UsageDataKeys.operationalMode, OperationalMode.ha );
}

public LifeSupport createLife()
Expand Down
Expand Up @@ -60,6 +60,7 @@
import org.neo4j.test.TestGraphDatabaseFactoryState;
import org.neo4j.test.impl.EphemeralIdGenerator;
import org.neo4j.tooling.GlobalGraphOperations;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.hamcrest.Matchers.hasItems;
import static org.hamcrest.Matchers.not;
Expand Down Expand Up @@ -683,7 +684,9 @@ protected IdGeneratorFactory createIdGeneratorFactory(
}

@Override
protected PlatformModule createPlatform( File storeDir, Map<String, String> params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade )
protected PlatformModule createPlatform( File storeDir, Map<String, String> params,
Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
return new ImpermanentPlatformModule( storeDir, params, dependencies, graphDatabaseFacade );
}
Expand Down
Expand Up @@ -19,15 +19,15 @@
*/
package org.neo4j.kernel;

import java.io.File;
import java.util.Collections;
import java.util.Map;

import org.junit.Rule;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

import java.io.File;
import java.util.Collections;
import java.util.Map;

import org.neo4j.graphdb.mockfs.EphemeralFileSystemAbstraction;
import org.neo4j.helpers.Exceptions;
import org.neo4j.kernel.impl.factory.DataSourceModule;
Expand All @@ -38,6 +38,7 @@
import org.neo4j.kernel.lifecycle.LifeSupport;
import org.neo4j.kernel.lifecycle.Lifecycle;
import org.neo4j.test.TargetDirectory;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
Expand Down Expand Up @@ -67,7 +68,8 @@ public void shouldThrowAppropriateExceptionIfStartFails()
try
{
// When
db.newFacade( dir.graphDbDir(), Collections.<String,String>emptyMap(), deps, mockFacade );
db.newFacade( dir.graphDbDir(), Collections.<String,String>emptyMap(), deps, mockFacade,
OperationalMode.single );
fail( "Should have thrown " + RuntimeException.class );
}
catch ( RuntimeException exception )
Expand All @@ -89,7 +91,8 @@ public void shouldThrowAppropriateExceptionIfBothStartAndShutdownFail()
try
{
// When
db.newFacade( dir.graphDbDir(), Collections.<String,String>emptyMap(), deps, mockFacade );
db.newFacade( dir.graphDbDir(), Collections.<String,String>emptyMap(), deps, mockFacade,
OperationalMode.single );
fail( "Should have thrown " + RuntimeException.class );
}
catch ( RuntimeException exception )
Expand All @@ -106,7 +109,8 @@ private GraphDatabaseFacadeFactory newFaultyGraphDatabaseFacadeFactory( final Ru
{
@Override
protected PlatformModule createPlatform( File storeDir, Map<String,String> params,
Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade )
Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
final LifeSupport lifeMock = mock( LifeSupport.class );
doThrow( startupError ).when( lifeMock ).start();
Expand All @@ -120,7 +124,7 @@ public Object answer( InvocationOnMock invocationOnMock ) throws Throwable
} ).when( lifeMock ).add( any( Lifecycle.class ) );


return new PlatformModule( storeDir, params, dependencies, graphDatabaseFacade )
return new PlatformModule( storeDir, params, dependencies, graphDatabaseFacade, operationalMode )
{
@Override
public LifeSupport createLife()
Expand Down
Expand Up @@ -19,11 +19,11 @@
*/
package org.neo4j.kernel.impl.api;

import org.junit.Test;

import java.io.File;
import java.util.Map;

import org.junit.Test;

import org.neo4j.graphdb.Transaction;
import org.neo4j.kernel.GraphDatabaseAPI;
import org.neo4j.kernel.api.Statement;
Expand All @@ -36,6 +36,7 @@
import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory;
import org.neo4j.kernel.impl.factory.PlatformModule;
import org.neo4j.test.ImpermanentGraphDatabase;
import org.neo4j.udc.UsageDataKeys.OperationalMode;

import static org.hamcrest.Matchers.containsString;
import static org.junit.Assert.assertThat;
Expand Down Expand Up @@ -78,7 +79,9 @@ protected void create( File storeDir, Map<String, String> params, GraphDatabaseF
new CommunityFacadeFactory()
{
@Override
protected PlatformModule createPlatform( File storeDir, Map<String, String> params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade )
protected PlatformModule createPlatform( File storeDir, Map<String, String> params,
Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade,
OperationalMode operationalMode )
{
return new ImpermanentPlatformModule( storeDir, params, dependencies, graphDatabaseFacade );
}
Expand Down

0 comments on commit af307e1

Please sign in to comment.