diff --git a/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java b/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java index 6af5d0d091d40..20e9e1496b41b 100644 --- a/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java +++ b/community/kernel/src/main/java/org/neo4j/graphdb/factory/GraphDatabaseFactory.java @@ -24,6 +24,7 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.security.URLAccessRule; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.Edition; @@ -95,10 +96,11 @@ protected void configure( GraphDatabaseBuilder builder ) // Let the default configuration pass through. } - protected GraphDatabaseService newDatabase( File storeDir, Map config, GraphDatabaseFacadeFactory.Dependencies dependencies ) + protected GraphDatabaseService newDatabase( File storeDir, Map settings, + GraphDatabaseFacadeFactory.Dependencies dependencies ) { return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) - .newFacade( storeDir, config, dependencies ); + .newFacade( storeDir, Config.embeddedDefaults().with( settings ), dependencies ); } public GraphDatabaseFactory addURLAccessRule( String protocol, URLAccessRule rule ) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java index 4726b6c8abdf3..2cbc5b99ace0d 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacade.java @@ -205,14 +205,14 @@ public GraphDatabaseFacade() * * Any required dependencies are resolved using the resolver obtained from the SPI. */ - public final void init( SPI spi, Config config ) + public final void init( SPI spi ) { DependencyResolver resolver = spi.resolver(); init( spi, resolver.resolveDependency( Guard.class ), resolver.resolveDependency( ThreadToStatementContextBridge.class ), - config + resolver.resolveDependency( Config.class ) ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java index 80a0175920509..18a1de372cd64 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeFactory.java @@ -31,6 +31,7 @@ import org.neo4j.helpers.Exceptions; import org.neo4j.kernel.AvailabilityGuard; import org.neo4j.kernel.NeoStoreDataSource; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.coreapi.CoreAPIAvailabilityGuard; @@ -52,12 +53,12 @@ * This is the main factory for creating database instances. It delegates creation to three different modules * ({@link PlatformModule}, {@link EditionModule}, and {@link DataSourceModule}), * which create all the specific services needed to run a graph database. - *

+ *

* It is abstract in order for subclasses to specify their own {@link org.neo4j.kernel.impl.factory.EditionModule} - * implementations. Subclasses also have to set the edition name - * in overridden version of {@link #initFacade(File, Map, GraphDatabaseFacadeFactory.Dependencies, GraphDatabaseFacade)}, + * implementations. Subclasses also have to set the edition name in overridden version of + * {@link #initFacade(File, Map, GraphDatabaseFacadeFactory.Dependencies, GraphDatabaseFacade)}, * which is used for logging and similar. - *

+ *

* To create test versions of databases, override an edition factory (e.g. {@link org.neo4j.kernel.impl.factory * .CommunityFacadeFactory}), and replace modules * with custom versions that instantiate alternative services. @@ -116,15 +117,14 @@ public GraphDatabaseFacadeFactory( DatabaseInfo databaseInfo, Function params, final Dependencies dependencies ) + public GraphDatabaseFacade newFacade( File storeDir, Config config, final Dependencies dependencies ) { - return initFacade( storeDir, params, dependencies, new GraphDatabaseFacade() ); + return initFacade( storeDir, config, dependencies, new GraphDatabaseFacade() ); } - /** * Instantiate a graph database given configuration, dependencies, and a custom implementation of {@link org * .neo4j.kernel.impl.factory.GraphDatabaseFacade}. @@ -138,7 +138,23 @@ public GraphDatabaseFacade newFacade( File storeDir, Map params, public GraphDatabaseFacade initFacade( File storeDir, Map params, final Dependencies dependencies, final GraphDatabaseFacade graphDatabaseFacade ) { - PlatformModule platform = createPlatform( storeDir, params, dependencies, graphDatabaseFacade ); + return initFacade( storeDir, Config.embeddedDefaults().with( params ), dependencies, graphDatabaseFacade ); + } + + /** + * Instantiate a graph database given configuration, dependencies, and a custom implementation of {@link org + * .neo4j.kernel.impl.factory.GraphDatabaseFacade}. + * + * @param storeDir the directory where the Neo4j data store is located + * @param config configuration + * @param dependencies the dependencies required to construct the {@link GraphDatabaseFacade} + * @param graphDatabaseFacade the already created facade which needs initialisation + * @return the initialised {@link GraphDatabaseFacade} + */ + public GraphDatabaseFacade initFacade( File storeDir, Config config, final Dependencies dependencies, + final GraphDatabaseFacade graphDatabaseFacade ) + { + PlatformModule platform = createPlatform( storeDir, config, dependencies, graphDatabaseFacade ); EditionModule edition = editionFactory.apply( platform ); AtomicReference queryEngine = new AtomicReference<>( noEngine() ); @@ -221,10 +237,10 @@ public void unregistered( NeoStoreDataSource dataSource ) /** * Create the platform module. Override to replace with custom module. */ - protected PlatformModule createPlatform( File storeDir, Map params, final Dependencies dependencies, + protected PlatformModule createPlatform( File storeDir, Config config, final Dependencies dependencies, final GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ); } /** diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java index 64381b3c182d5..92344ebd48f01 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/factory/PlatformModule.java @@ -22,7 +22,6 @@ import java.io.File; import java.io.IOException; import java.time.Clock; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -67,6 +66,8 @@ import org.neo4j.udc.UsageData; import org.neo4j.udc.UsageDataKeys; +import static org.neo4j.helpers.collection.MapUtil.stringMap; + /** * Platform module for {@link org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory}. This creates * all the services needed by {@link org.neo4j.kernel.impl.factory.EditionModule} implementations. @@ -111,7 +112,14 @@ public class PlatformModule public final SystemNanoClock clock; - public PlatformModule( File providedStoreDir, Map params, DatabaseInfo databaseInfo, + public PlatformModule( File providedStoreDir, Map params, DatabaseInfo databaseInfo, + GraphDatabaseFacadeFactory.Dependencies externalDependencies, GraphDatabaseFacade graphDatabaseFacade ) + { + this( providedStoreDir, Config.embeddedDefaults().with( params ), databaseInfo, externalDependencies, + graphDatabaseFacade ); + } + + public PlatformModule( File providedStoreDir, Config config, DatabaseInfo databaseInfo, GraphDatabaseFacadeFactory.Dependencies externalDependencies, GraphDatabaseFacade graphDatabaseFacade ) { this.databaseInfo = databaseInfo; @@ -123,15 +131,10 @@ public PlatformModule( File providedStoreDir, Map params, Databa life = dependencies.satisfyDependency( createLife() ); this.graphDatabaseFacade = dependencies.satisfyDependency( graphDatabaseFacade ); - if ( !params.containsKey( GraphDatabaseSettings.neo4j_home.name() ) ) - { - params = new HashMap<>( params ); - params.put( GraphDatabaseSettings.neo4j_home.name(), providedStoreDir.getAbsolutePath() ); - } - // SPI - provided services - config = dependencies.satisfyDependency( new Config( params, getSettingsClasses( - externalDependencies.settingsClasses(), externalDependencies.kernelExtensions() ) ) ); + this.config = dependencies.satisfyDependency( config.withDefaults( + stringMap( GraphDatabaseSettings.neo4j_home.name(), providedStoreDir.getAbsolutePath() ) + ) ); this.storeDir = providedStoreDir.getAbsoluteFile(); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java b/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java index 501c277971267..ad1b494ee0eb4 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/internal/EmbeddedGraphDatabase.java @@ -25,6 +25,7 @@ import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.kernel.GraphDatabaseDependencies; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -72,6 +73,16 @@ public EmbeddedGraphDatabase( File storeDir, create( storeDir, params, dependencies ); } + /** + * Internal constructor + */ + public EmbeddedGraphDatabase( File storeDir, + Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies ) + { + create( storeDir, config, dependencies ); + } + protected void create( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies) { @@ -80,4 +91,13 @@ protected void create( File storeDir, Map params, new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) .initFacade( storeDir, params, newDependencies, this ); } + + protected void create( File storeDir, Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies) + { + GraphDatabaseDependencies newDependencies = newDependencies( dependencies ) + .settingsClasses( asList( append( GraphDatabaseSettings.class, dependencies.settingsClasses() ) ) ); + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) + .initFacade( storeDir, config, newDependencies, this ); + } } diff --git a/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java b/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java index b20ab46eafab7..4522bbaa78dea 100644 --- a/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java +++ b/community/kernel/src/test/java/org/neo4j/graphdb/LabelsAcceptanceTest.java @@ -38,7 +38,7 @@ import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseDependencies; import org.neo4j.kernel.api.Statement; -import org.neo4j.kernel.api.exceptions.EntityNotFoundException; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; @@ -753,9 +753,11 @@ protected IdGeneratorFactory createIdGeneratorFactory( { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, + Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); + return new ImpermanentPlatformModule( storeDir, config, databaseInfo, + dependencies, graphDatabaseFacade ); } }.initFacade( storeDir, params, dependencies, this ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java b/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java index 23977d183798e..a10dbf5b23eed 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/GraphDatabaseFacadeFactoryTest.java @@ -27,7 +27,6 @@ import java.io.File; import java.util.Collections; -import java.util.Map; import java.util.function.Supplier; import org.neo4j.helpers.Exceptions; @@ -121,14 +120,14 @@ private GraphDatabaseFacadeFactory newFaultyGraphDatabaseFacadeFactory( final Ru (p) -> Mockito.mock( EditionModule.class, Mockito.RETURNS_DEEP_STUBS )) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { final LifeSupport lifeMock = mock( LifeSupport.class ); doThrow( startupError ).when( lifeMock ).start(); doAnswer( invocation -> invocation.getArguments()[0] ).when( lifeMock ).add( any( Lifecycle.class ) ); - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override public LifeSupport createLife() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java index 81f5d3a9c7097..f5b5405bfe7e5 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTest.java @@ -28,6 +28,7 @@ import org.neo4j.graphdb.Transaction; import org.neo4j.kernel.api.Statement; import org.neo4j.kernel.api.exceptions.InvalidTransactionTypeKernelException; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.core.ThreadToStatementContextBridge; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; @@ -93,9 +94,11 @@ protected SchemaWriteGuard createSchemaWriteGuard() new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, + GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); + return new ImpermanentPlatformModule( storeDir, config, databaseInfo, dependencies, + graphDatabaseFacade ); } }.initFacade( storeDir, params, dependencies, this ); } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeTest.java index b882a644cc723..607119eb78f57 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/factory/GraphDatabaseFacadeTest.java @@ -49,7 +49,6 @@ public class GraphDatabaseFacadeTest private GraphDatabaseFacade.SPI spi = Mockito.mock( GraphDatabaseFacade.SPI.class, RETURNS_DEEP_STUBS ); private GraphDatabaseFacade graphDatabaseFacade = new GraphDatabaseFacade(); private GraphDatabaseQueryService queryService; - private Config defaultConfig; @Before public void setUp() @@ -64,9 +63,9 @@ public void setUp() when( resolver.resolveDependency( ThreadToStatementContextBridge.class ) ).thenReturn( contextBridge ); when( resolver.resolveDependency( Guard.class ) ).thenReturn( mock( Guard.class ) ); when( contextBridge.get() ).thenReturn( statement ); - defaultConfig = Config.defaults(); + when( resolver.resolveDependency( Config.class ) ).thenReturn( Config.embeddedDefaults() ); - graphDatabaseFacade.init( spi, defaultConfig ); + graphDatabaseFacade.init( spi ); } @Test @@ -82,7 +81,7 @@ public void beginTransaction() { graphDatabaseFacade.beginTx(); - long timeout = defaultConfig.get( GraphDatabaseSettings.transaction_timeout ); + long timeout = Config.embeddedDefaults().get( GraphDatabaseSettings.transaction_timeout ); verify( spi ).beginTransaction( KernelTransaction.Type.explicit, AUTH_DISABLED, timeout ); } @@ -110,7 +109,7 @@ public void executeQueryStartDefaultTransaction() graphDatabaseFacade.execute( "create (n)" ); graphDatabaseFacade.execute( "create (n)", new HashMap<>() ); - long timeout = defaultConfig.get( GraphDatabaseSettings.transaction_timeout ); + long timeout = Config.embeddedDefaults().get( GraphDatabaseSettings.transaction_timeout ); verify( spi, times( 2 ) ).beginTransaction( KernelTransaction.Type.implicit, AUTH_DISABLED, timeout ); } } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java index e7c8446567ea7..00e51672266ea 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/IdGeneratorRebuildFailureEmulationTest.java @@ -236,9 +236,9 @@ protected void create( File storeDir, Map params, GraphDatabaseF new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade facade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade facade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, facade ) + return new ImpermanentPlatformModule( storeDir, config, databaseInfo, dependencies, facade ) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java index 1b2fb329d1729..d14f42abca62a 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/CommitContentionTests.java @@ -25,13 +25,13 @@ import org.junit.Test; import java.io.File; -import java.util.Map; import java.util.concurrent.Semaphore; import java.util.concurrent.atomic.AtomicReference; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.Transaction; import org.neo4j.graphdb.factory.GraphDatabaseFactoryState; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.index.RemoveOrphanConstraintIndexesOnStartup; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; @@ -40,7 +40,6 @@ import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.test.rule.TestDirectory; -import static java.util.Collections.emptyMap; import static java.util.concurrent.TimeUnit.SECONDS; public class CommitContentionTests @@ -132,9 +131,9 @@ private GraphDatabaseService createDb() return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected TransactionStats createTransactionStats() @@ -183,7 +182,7 @@ private boolean isTheRemoveOrphanedConstraintIndexesOnStartupTransaction() } }; } - }.newFacade( storeLocation.graphDbDir(), emptyMap(), state.databaseDependencies() ); + }.newFacade( storeLocation.graphDbDir(), Config.embeddedDefaults(), state.databaseDependencies() ); } private void waitForFirstTransactionToStartPushing() throws InterruptedException diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java index 9b5775782f929..72f5c05e37c05 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/transaction/PartialTransactionFailureIT.java @@ -38,6 +38,7 @@ import org.neo4j.graphdb.factory.GraphDatabaseFactoryState; import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.io.fs.FileSystemAbstraction; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.api.index.inmemory.InMemoryIndexProviderFactory; import org.neo4j.kernel.impl.api.scan.InMemoryLabelScanStoreExtension; import org.neo4j.kernel.impl.factory.CommunityEditionModule; @@ -85,9 +86,9 @@ protected void create( File storeDir, Map params, GraphDatabaseF new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java b/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java index d8665967ddb03..54848bac273d6 100644 --- a/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java +++ b/community/kernel/src/test/java/org/neo4j/test/AdversarialPageCacheGraphDatabaseFactory.java @@ -56,10 +56,10 @@ protected GraphDatabaseService newDatabase( File dir, Map config, return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade facade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, facade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, facade ) { @Override protected FileSystemAbstraction createFileSystemAbstraction() @@ -76,7 +76,7 @@ protected PageCache createPageCache( FileSystemAbstraction fileSystem, Config co } }; } - }.newFacade( dir, config, dependencies ); + }.newFacade( dir, Config.embeddedDefaults().with( config ), dependencies ); } }; } diff --git a/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java b/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java index 1bbf4c519d914..70412b6ba86d5 100644 --- a/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java +++ b/community/kernel/src/test/java/org/neo4j/test/ImpermanentGraphDatabase.java @@ -28,11 +28,13 @@ import org.neo4j.helpers.Service; import org.neo4j.helpers.collection.Iterables; import org.neo4j.io.fs.FileSystemAbstraction; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory; +import org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.Dependencies; import org.neo4j.kernel.impl.factory.PlatformModule; import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.kernel.impl.logging.SimpleLogService; @@ -41,6 +43,7 @@ import org.neo4j.logging.NullLogProvider; import static org.neo4j.graphdb.factory.GraphDatabaseSettings.pagecache_memory; +import static org.neo4j.helpers.collection.MapUtil.stringMap; import static org.neo4j.kernel.GraphDatabaseDependencies.newDependencies; import static org.neo4j.kernel.configuration.Settings.TRUE; import static org.neo4j.kernel.impl.factory.GraphDatabaseFacadeFactory.Configuration.ephemeral; @@ -130,7 +133,13 @@ private static GraphDatabaseFacadeFactory.Dependencies getDependencies( Iterable public ImpermanentGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { super( storeDir, params, dependencies ); + trackUnclosedUse( storeDir ); + } + public ImpermanentGraphDatabase( File storeDir, Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies ) + { + super( storeDir, config, dependencies ); trackUnclosedUse( storeDir ); } @@ -140,11 +149,13 @@ protected void create( File storeDir, Map params, GraphDatabaseF new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, + GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ); + return new ImpermanentPlatformModule( storeDir, config, databaseInfo, dependencies, + graphDatabaseFacade ); } - }.initFacade( storeDir, new HashMap<>( params ), dependencies, this ); + }.initFacade( storeDir, params, dependencies, this ); } private void trackUnclosedUse( File storeDir ) @@ -171,7 +182,13 @@ public void shutdown() super.shutdown(); } - private static Map withForcedInMemoryConfiguration( Map params ) + private static Config withForcedInMemoryConfiguration( Config config ) + { + return config.with( stringMap( ephemeral.name(), TRUE ) ) + .withDefaults( stringMap( pagecache_memory.name(), "8M" ) ); + } + + /*private static Map withForcedInMemoryConfiguration( Map params ) { Map result = new HashMap<>( params ); // To signal to index provides that we should be in-memory @@ -181,15 +198,15 @@ private static Map withForcedInMemoryConfiguration( Map params, DatabaseInfo databaseInfo, - GraphDatabaseFacadeFactory.Dependencies dependencies, + public ImpermanentPlatformModule( File storeDir, Config config, DatabaseInfo databaseInfo, + Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - super( storeDir, withForcedInMemoryConfiguration(params), databaseInfo, dependencies, graphDatabaseFacade ); + super( storeDir, withForcedInMemoryConfiguration(config), databaseInfo, dependencies, graphDatabaseFacade ); } @Override diff --git a/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java b/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java index d524798a09242..ede6f7ee88039 100644 --- a/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java +++ b/community/kernel/src/test/java/org/neo4j/test/LimitedFileSystemGraphDatabase.java @@ -25,6 +25,7 @@ import org.neo4j.graphdb.mockfs.LimitedFilesystemAbstraction; import org.neo4j.graphdb.mockfs.UncloseableDelegatingFileSystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -47,9 +48,9 @@ protected void create( File storeDir, Map params, GraphDatabaseF new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade facade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade facade ) { - return new ImpermanentPlatformModule( storeDir, params, databaseInfo, dependencies, facade ) + return new ImpermanentPlatformModule( storeDir, config, databaseInfo, dependencies, facade) { @Override protected FileSystemAbstraction createFileSystemAbstraction() diff --git a/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java b/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java index 89f39d61c9d7c..b8f1e498943f2 100644 --- a/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java +++ b/community/kernel/src/test/java/org/neo4j/test/TestGraphDatabaseFactory.java @@ -32,6 +32,7 @@ import org.neo4j.graphdb.security.URLAccessRule; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseDependencies; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.extension.KernelExtensionFactory; import org.neo4j.kernel.impl.factory.CommunityEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; @@ -196,10 +197,10 @@ public GraphDatabaseService newDatabase( Map config ) return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, params, databaseInfo, + return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override @@ -244,7 +245,7 @@ public LogProvider getInternalLogProvider() }; } - }.newFacade( storeDir, config, + }.newFacade( storeDir, Config.embeddedDefaults().with( config ), GraphDatabaseDependencies.newDependencies( state.databaseDependencies() ) ); } diff --git a/community/kernel/src/test/java/org/neo4j/test/rule/EmbeddedDatabaseRule.java b/community/kernel/src/test/java/org/neo4j/test/rule/EmbeddedDatabaseRule.java index ea1e2591ee7b6..01ade3c45de64 100644 --- a/community/kernel/src/test/java/org/neo4j/test/rule/EmbeddedDatabaseRule.java +++ b/community/kernel/src/test/java/org/neo4j/test/rule/EmbeddedDatabaseRule.java @@ -28,7 +28,6 @@ import org.neo4j.graphdb.factory.GraphDatabaseFactory; import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.FileUtils; -import org.neo4j.kernel.configuration.Config; import org.neo4j.test.TestGraphDatabaseFactory; @@ -41,7 +40,6 @@ public class EmbeddedDatabaseRule extends DatabaseRule { private final TempDirectory temp; - private Config config = Config.empty(); public EmbeddedDatabaseRule() { @@ -130,12 +128,12 @@ public EmbeddedDatabaseRule startLazily() { return (EmbeddedDatabaseRule) super.startLazily(); } - +/* public EmbeddedDatabaseRule withConfig(Config config ) { this.config = config; return this; - } + }*/ @Override public String getStoreDir() @@ -158,8 +156,7 @@ protected GraphDatabaseFactory newFactory() @Override protected GraphDatabaseBuilder newBuilder( GraphDatabaseFactory factory ) { - return factory.newEmbeddedDatabaseBuilder( temp.root().getAbsoluteFile() ) - .setConfig( config.getParams() ); + return factory.newEmbeddedDatabaseBuilder( temp.root().getAbsoluteFile() ); } @Override diff --git a/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java b/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java index bf3143e6902f3..52ea57970156a 100644 --- a/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java +++ b/community/lucene-index/src/test/java/org/neo4j/index/impl/lucene/legacy/NonUniqueIndexTests.java @@ -59,7 +59,6 @@ import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import static org.neo4j.graphdb.Label.label; -import static org.neo4j.helpers.collection.MapUtil.stringMap; public class NonUniqueIndexTests { @@ -100,9 +99,10 @@ private GraphDatabaseService newEmbeddedGraphDatabaseWithSlowJobScheduler() return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, + GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected Neo4jJobScheduler createJobScheduler() @@ -117,7 +117,8 @@ protected LogService createLogService( LogProvider userLogProvider ) } }; } - }.newFacade( directory.graphDbDir(), stringMap(), graphDatabaseFactoryState.databaseDependencies() ); + }.newFacade( directory.graphDbDir(), Config.embeddedDefaults(), + graphDatabaseFactoryState.databaseDependencies() ); } private static Neo4jJobScheduler newSlowJobScheduler() diff --git a/community/neo4j/src/test/java/db/DatabaseShutdownTest.java b/community/neo4j/src/test/java/db/DatabaseShutdownTest.java index c237b5f7621b7..6482b4c6337b1 100644 --- a/community/neo4j/src/test/java/db/DatabaseShutdownTest.java +++ b/community/neo4j/src/test/java/db/DatabaseShutdownTest.java @@ -102,10 +102,10 @@ protected DataSourceModule createDataSource( } @Override - protected PlatformModule createPlatform( File storeDir, Map params, + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override protected PageCache createPageCache( FileSystemAbstraction fileSystem, Config config, @@ -124,7 +124,7 @@ public void flushAndForce( IOLimiter ioLimiter ) throws IOException } }; } - }.newFacade( storeDir, config, dependencies ); + }.newFacade( storeDir, Config.embeddedDefaults().with( config ), dependencies ); } LifecycleStatus getNeoStoreDataSourceStatus() throws NoSuchFieldException, IllegalAccessException diff --git a/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java b/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java index bd682c83efc82..7b695f6481250 100644 --- a/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java +++ b/community/server/src/main/java/org/neo4j/server/CommunityNeoServer.java @@ -54,7 +54,7 @@ public class CommunityNeoServer extends AbstractNeoServer protected static final GraphFactory COMMUNITY_FACTORY = ( config, dependencies ) -> { File storeDir = config.get( DatabaseManagementSystemSettings.database_path ); return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) - .newFacade( storeDir, config.getParams(), dependencies ); + .newFacade( storeDir, config, dependencies ); }; public CommunityNeoServer( Config config, GraphDatabaseFacadeFactory.Dependencies dependencies, diff --git a/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java b/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java index 2dfdfeb918382..359eb62f143d1 100644 --- a/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java +++ b/community/server/src/test/java/org/neo4j/server/helpers/CommunityServerBuilder.java @@ -77,9 +77,9 @@ public class CommunityServerBuilder private static LifecycleManagingDatabase.GraphFactory IN_MEMORY_DB = ( config, dependencies ) -> { File storeDir = config.get( DatabaseManagementSystemSettings.database_path ); - Map params = config.getParams(); - params.put( GraphDatabaseFacadeFactory.Configuration.ephemeral.name(), "true" ); - return new ImpermanentGraphDatabase( storeDir, params, GraphDatabaseDependencies.newDependencies(dependencies) ); + return new ImpermanentGraphDatabase( storeDir, + config.with( stringMap( GraphDatabaseFacadeFactory.Configuration.ephemeral.name(), "true" ) ), + GraphDatabaseDependencies.newDependencies( dependencies ) ); }; private Clock clock = null; diff --git a/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java b/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java index dbe006948bfe4..b80762d71cc8b 100644 --- a/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java +++ b/enterprise/backup/src/test/java/org/neo4j/backup/TestBackup.java @@ -48,6 +48,7 @@ import org.neo4j.graphdb.index.Index; import org.neo4j.io.pagecache.PageCache; import org.neo4j.kernel.StoreLockException; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.impl.api.TransactionHeaderInformation; import org.neo4j.kernel.impl.factory.CommunityEditionModule; @@ -645,7 +646,7 @@ protected TransactionHeaderInformation createUsing( byte[] additionalHeader ) } }; return new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) - .newFacade( storeDir, config, dependencies ); + .newFacade( storeDir, Config.embeddedDefaults().with( config ), dependencies ); } }; return dbFactory.newEmbeddedDatabaseBuilder( storeDir ) diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java index 1b1a38da2ddf4..b8a047fd4a27a 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/CoreGraphDatabase.java @@ -20,6 +20,7 @@ package org.neo4j.causalclustering.core; import java.io.File; +import java.util.Collections; import java.util.Map; import java.util.function.Function; @@ -47,13 +48,28 @@ public CoreGraphDatabase( File storeDir, Map params, this( storeDir, params, dependencies, new HazelcastDiscoveryServiceFactory() ); } + public CoreGraphDatabase( File storeDir, Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies ) + { + this( storeDir, config, dependencies, new HazelcastDiscoveryServiceFactory() ); + } + public CoreGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - CustomIOConfigValidator.assertCustomIOConfigNotUsed( new Config( params ), CUSTOM_IO_EXCEPTION_MESSAGE ); + this( storeDir, + Config.embeddedDefaults( params ), + dependencies, discoveryServiceFactory ); + } + + public CoreGraphDatabase( File storeDir, Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) + { + CustomIOConfigValidator.assertCustomIOConfigNotUsed( config, + CUSTOM_IO_EXCEPTION_MESSAGE ); Function factory = ( platformModule ) -> new EnterpriseCoreEditionModule( platformModule, discoveryServiceFactory ); - new GraphDatabaseFacadeFactory( DatabaseInfo.CORE, factory ).initFacade( storeDir, params, dependencies, this ); + new GraphDatabaseFacadeFactory( DatabaseInfo.CORE, factory ).initFacade( storeDir, config, dependencies, this ); } public MemberId id() diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java index 4f462be850c7d..7fcad5fb81637 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/ReadReplicaGraphDatabase.java @@ -20,9 +20,11 @@ package org.neo4j.causalclustering.readreplica; import java.io.File; +import java.util.Collections; import java.util.Map; import java.util.function.Function; +import org.neo4j.causalclustering.core.CausalClusterConfigurationValidator; import org.neo4j.causalclustering.discovery.DiscoveryServiceFactory; import org.neo4j.causalclustering.discovery.HazelcastDiscoveryServiceFactory; import org.neo4j.kernel.configuration.Config; @@ -44,12 +46,26 @@ public ReadReplicaGraphDatabase( File storeDir, Map params, Depen this( storeDir, params, dependencies, new HazelcastDiscoveryServiceFactory() ); } + public ReadReplicaGraphDatabase( File storeDir, Config config, Dependencies dependencies ) + { + this( storeDir, config, dependencies, new HazelcastDiscoveryServiceFactory() ); + } + public ReadReplicaGraphDatabase( File storeDir, Map params, Dependencies dependencies, DiscoveryServiceFactory discoveryServiceFactory ) { - CustomIOConfigValidator.assertCustomIOConfigNotUsed( new Config( params ), CUSTOM_IO_EXCEPTION_MESSAGE ); + this( storeDir, + Config.embeddedDefaults( params, Collections.emptyList() ), + dependencies, discoveryServiceFactory ); + } + + public ReadReplicaGraphDatabase( File storeDir, Config config, Dependencies dependencies, + DiscoveryServiceFactory discoveryServiceFactory ) + { + CustomIOConfigValidator.assertCustomIOConfigNotUsed( config, CUSTOM_IO_EXCEPTION_MESSAGE ); Function factory = ( platformModule ) -> new EnterpriseReadReplicaEditionModule( platformModule, discoveryServiceFactory ); - new GraphDatabaseFacadeFactory( DatabaseInfo.READ_REPLICA, factory ).initFacade( storeDir, params, dependencies, this ); + new GraphDatabaseFacadeFactory( DatabaseInfo.READ_REPLICA, factory ).initFacade( storeDir, config, + dependencies, this ); } } diff --git a/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java b/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java index 65967370bdada..c4757b7b73676 100644 --- a/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java +++ b/enterprise/com/src/main/java/org/neo4j/com/storecopy/ExternallyManagedPageCache.java @@ -130,9 +130,10 @@ protected GraphDatabaseService newDatabase( File storeDir, Map co return new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, + GraphDatabaseFacade graphDatabaseFacade ) { - return new PlatformModule( storeDir, params, databaseInfo, dependencies, graphDatabaseFacade ) + return new PlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override @@ -142,7 +143,7 @@ protected PageCache createPageCache( FileSystemAbstraction fileSystem, Config co } }; } - }.newFacade( storeDir, config, dependencies ); + }.newFacade( storeDir, Config.embeddedDefaults().with( config ), dependencies ); } public GraphDatabaseFactoryWithPageCacheFactory setKernelExtensions( Iterable> newKernelExtensions ) diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java index d2ece21f3c105..1a8ef053b34f2 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/HighlyAvailableGraphDatabase.java @@ -22,6 +22,7 @@ import java.io.File; import java.util.Map; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberState; import org.neo4j.kernel.ha.cluster.HighAvailabilityMemberStateMachine; import org.neo4j.kernel.ha.cluster.member.ClusterMembers; @@ -43,6 +44,12 @@ public HighlyAvailableGraphDatabase( File storeDir, Map params, newHighlyAvailableFacadeFactory().initFacade( storeDir, params, dependencies, this ); } + public HighlyAvailableGraphDatabase( File storeDir, Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies ) + { + newHighlyAvailableFacadeFactory().initFacade( storeDir, config, dependencies, this ); + } + // used for testing in a different project, please do not remove protected GraphDatabaseFacadeFactory newHighlyAvailableFacadeFactory() { diff --git a/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java b/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java index 4944ac9a6cc62..986521d9bbe89 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java +++ b/enterprise/kernel/src/main/java/org/neo4j/graphdb/EnterpriseGraphDatabase.java @@ -22,6 +22,7 @@ import java.io.File; import java.util.Map; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.enterprise.EnterpriseEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -35,4 +36,11 @@ public EnterpriseGraphDatabase( File storeDir, Map params, new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) .initFacade( storeDir, params, dependencies, this ); } + + public EnterpriseGraphDatabase( File storeDir, Config config, + GraphDatabaseFacadeFactory.Dependencies dependencies ) + { + new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) + .initFacade( storeDir, config, dependencies, this ); + } } diff --git a/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java b/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java index b7ebd826df0dd..8964d9d07223e 100644 --- a/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java +++ b/enterprise/kernel/src/test/java/org/neo4j/test/TestEnterpriseGraphDatabaseFactory.java @@ -26,6 +26,7 @@ import org.neo4j.graphdb.factory.GraphDatabaseBuilder; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.GraphDatabaseDependencies; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.enterprise.EnterpriseEditionModule; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -53,10 +54,10 @@ public GraphDatabaseService newDatabase( Map config ) return new GraphDatabaseFacadeFactory( DatabaseInfo.ENTERPRISE, EnterpriseEditionModule::new ) { @Override - protected PlatformModule createPlatform( File storeDir, Map params, + protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies, GraphDatabaseFacade graphDatabaseFacade ) { - return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, params, databaseInfo, + return new ImpermanentGraphDatabase.ImpermanentPlatformModule( storeDir, config, databaseInfo, dependencies, graphDatabaseFacade ) { @Override @@ -101,7 +102,7 @@ public LogProvider getInternalLogProvider() }; } - }.newFacade( storeDir, config, + }.newFacade( storeDir, Config.embeddedDefaults().with( config ), GraphDatabaseDependencies.newDependencies( state.databaseDependencies() ) ); } }; diff --git a/integrationtests/src/test/java/org/neo4j/TransactionGuardIntegrationTest.java b/integrationtests/src/test/java/org/neo4j/TransactionGuardIntegrationTest.java index 2c77d17a0fbb7..5a185b366f5f4 100644 --- a/integrationtests/src/test/java/org/neo4j/TransactionGuardIntegrationTest.java +++ b/integrationtests/src/test/java/org/neo4j/TransactionGuardIntegrationTest.java @@ -569,7 +569,7 @@ private class CustomGuardTestTestGraphDatabaseFactory extends TestGraphDatabaseF protected GraphDatabaseBuilder.DatabaseCreator createImpermanentDatabaseCreator( File storeDir, TestGraphDatabaseFactoryState state ) { - return config -> customFacadeFactory.newFacade( storeDir, config, + return config -> customFacadeFactory.newFacade( storeDir, Config.embeddedDefaults().with( config ), GraphDatabaseDependencies.newDependencies( state.databaseDependencies() ) ); } }