diff --git a/community/community-it/it-test-support/src/main/java/org/neo4j/test/ImpermanentGraphDatabase.java b/community/community-it/it-test-support/src/main/java/org/neo4j/test/ImpermanentGraphDatabase.java index a229e11608692..95a5a6a133aaf 100644 --- a/community/community-it/it-test-support/src/main/java/org/neo4j/test/ImpermanentGraphDatabase.java +++ b/community/community-it/it-test-support/src/main/java/org/neo4j/test/ImpermanentGraphDatabase.java @@ -65,10 +65,6 @@ public class ImpermanentGraphDatabase extends EmbeddedGraphDatabase protected static final File PATH = new File( "target/test-data/impermanent-db" ); - /* No-op availabilityGuardInstaller by default - */ - private AvailabilityGuardInstaller availabilityGuardInstaller = availabilityGuard -> {}; - /** * This is deprecated. Use {@link TestGraphDatabaseFactory} instead */ @@ -151,22 +147,14 @@ public ImpermanentGraphDatabase( File storeDir, Config config, public ImpermanentGraphDatabase( File storeDir, Config config, Dependencies dependencies, AvailabilityGuardInstaller guardInstaller ) { - super( storeDir, config, dependencies ); + super( storeDir, config, dependencies, guardInstaller ); trackUnclosedUse( storeDir ); - this.availabilityGuardInstaller = guardInstaller; } @Override protected void create( File storeDir, Map params, Dependencies dependencies ) { - Function factory = platform -> - { - CommunityEditionModule edition = new CommunityEditionModule( platform ); - AvailabilityGuard guard = edition.getGlobalAvailabilityGuard( platform.clock, platform.logging, platform.config ); - availabilityGuardInstaller.install( guard ); - return edition; - }; - new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, factory ) + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, this::editionModuleFactory ) { @Override protected PlatformModule createPlatform( File storeDir, Config config, Dependencies dependencies ) diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/facade/embedded/EmbeddedGraphDatabase.java b/community/neo4j/src/main/java/org/neo4j/graphdb/facade/embedded/EmbeddedGraphDatabase.java index adb85dd7a0a1e..99b4bf70cc89d 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/facade/embedded/EmbeddedGraphDatabase.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/facade/embedded/EmbeddedGraphDatabase.java @@ -26,7 +26,11 @@ import org.neo4j.graphdb.facade.GraphDatabaseDependencies; import org.neo4j.graphdb.facade.GraphDatabaseFacadeFactory; import org.neo4j.graphdb.factory.GraphDatabaseSettings; +import org.neo4j.graphdb.factory.module.PlatformModule; +import org.neo4j.graphdb.factory.module.edition.AbstractEditionModule; import org.neo4j.graphdb.factory.module.edition.CommunityEditionModule; +import org.neo4j.kernel.availability.AvailabilityGuard; +import org.neo4j.kernel.availability.AvailabilityGuardInstaller; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.factory.GraphDatabaseFacade; @@ -53,6 +57,11 @@ */ public class EmbeddedGraphDatabase extends GraphDatabaseFacade { + /** + * No-op availability guard installer by default + */ + private final AvailabilityGuardInstaller availabilityGuardInstaller; + /** * Internal constructor used by {@link org.neo4j.graphdb.factory.GraphDatabaseFactory} */ @@ -60,6 +69,7 @@ public EmbeddedGraphDatabase( File storeDir, Map params, GraphDatabaseFacadeFactory.Dependencies dependencies ) { + this.availabilityGuardInstaller = availabilityGuard -> {}; create( storeDir, params, dependencies ); } @@ -70,6 +80,13 @@ protected EmbeddedGraphDatabase( File storeDir, Config config, GraphDatabaseFacadeFactory.Dependencies dependencies ) { + this( storeDir, config, dependencies, availabilityGuard -> {} ); + } + + protected EmbeddedGraphDatabase( File storeDir, Config config, GraphDatabaseFacadeFactory.Dependencies dependencies, + AvailabilityGuardInstaller availabilityGuardInstaller ) + { + this.availabilityGuardInstaller = availabilityGuardInstaller; create( storeDir, config, dependencies ); } @@ -78,7 +95,7 @@ protected void create( File storeDir, Map params, { GraphDatabaseDependencies newDependencies = newDependencies( dependencies ) .settingsClasses( asList( append( GraphDatabaseSettings.class, dependencies.settingsClasses() ) ) ); - new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, this::editionModuleFactory ) .initFacade( storeDir, params, newDependencies, this ); } @@ -86,7 +103,15 @@ protected void create( File storeDir, Config config, GraphDatabaseFacadeFactory. { GraphDatabaseDependencies newDependencies = newDependencies( dependencies ) .settingsClasses( asList( append( GraphDatabaseSettings.class, dependencies.settingsClasses() ) ) ); - new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, CommunityEditionModule::new ) + new GraphDatabaseFacadeFactory( DatabaseInfo.COMMUNITY, this::editionModuleFactory ) .initFacade( storeDir, config, newDependencies, this ); } + + protected AbstractEditionModule editionModuleFactory( PlatformModule platform ) + { + CommunityEditionModule edition = new CommunityEditionModule( platform ); + AvailabilityGuard guard = edition.getGlobalAvailabilityGuard( platform.clock, platform.logging, platform.config ); + availabilityGuardInstaller.install( guard ); + return edition; + } } diff --git a/community/server/src/test/java/org/neo4j/server/database/SimpleGraphFactory.java b/community/server/src/test/java/org/neo4j/server/database/SimpleGraphFactory.java index 4e160969159ff..259635e13077d 100644 --- a/community/server/src/test/java/org/neo4j/server/database/SimpleGraphFactory.java +++ b/community/server/src/test/java/org/neo4j/server/database/SimpleGraphFactory.java @@ -44,8 +44,6 @@ public GraphDatabaseFacade newGraphDatabase( Config config, GraphDatabaseFacadeF public GraphDatabaseFacade newGraphDatabase( Config config, GraphDatabaseFacadeFactory.Dependencies dependencies, AvailabilityGuardInstaller guardInstaller ) { - AvailabilityGuard guard = db.getDependencyResolver().resolveDependency( AvailabilityGuard.class ); - guardInstaller.install( guard ); return db; } }