From 09033c1fc0265a1c51b79056e8afb32853306a5d Mon Sep 17 00:00:00 2001 From: MishaDemianenko Date: Mon, 16 Jul 2018 13:52:15 +0200 Subject: [PATCH] Allow CC tests to work with new directory structure. Update directory that returned from SPI to return particular DB instead of store dir. --- .../impl/factory/GraphDatabaseFacade.java | 14 ++++----- .../graphdb/facade/spi/ClassicCoreSPI.java | 3 +- .../core/EnterpriseCoreEditionModule.java | 31 +++++++++---------- .../core/state/ClusteringModule.java | 4 +-- .../core/state/CoreBootstrapper.java | 18 +++++------ .../EnterpriseReadReplicaEditionModule.java | 6 ++-- .../catchup/storecopy/CatchupServerIT.java | 15 +++++---- .../core/state/CoreBootstrapperIT.java | 21 +++++++------ .../causalclustering/discovery/Cluster.java | 24 +++++++------- .../discovery/ClusterMember.java | 2 +- .../discovery/CoreClusterMember.java | 15 ++++++--- .../discovery/ReadReplica.java | 18 ++++++----- .../scenarios/ClusterBindingIT.java | 6 ++-- .../ClusterCommunityToEnterpriseIT.java | 6 ++-- .../scenarios/ClusterCustomLogLocationIT.java | 10 +++--- .../scenarios/CoreToCoreCopySnapshotIT.java | 2 +- .../scenarios/MultiClusteringIT.java | 9 +++--- .../scenarios/ReadReplicaReplicationIT.java | 19 ++++++------ .../scenarios/RecoveryIT.java | 18 +++++------ .../causalclustering/scenarios/RestartIT.java | 4 +-- .../scenarios/TransactionLogRecoveryIT.java | 6 ++-- .../test/causalclustering/ClusterRule.java | 5 ++- .../stresstests/CatchupNewReadReplica.java | 8 ++--- .../stresstests/ConsistencyCheck.java | 2 +- .../causalclustering/stresstests/IdReuse.java | 2 +- .../LucenePartitionedIndexStressTesting.java | 2 +- 26 files changed, 138 insertions(+), 132 deletions(-) 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 9c33f83dd284f..e9a21c846a339 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 @@ -749,7 +749,7 @@ private ResourceIterator nodesByLabelAndProperties( return getNodesByLabelAndPropertyWithoutIndex( statement, labelId, queries ); } - private IndexReference findMatchingIndex( KernelTransaction transaction, int labelId, int[] propertyIds ) + private static IndexReference findMatchingIndex( KernelTransaction transaction, int labelId, int[] propertyIds ) { IndexReference index = transaction.schemaRead().index( labelId, propertyIds ); if ( index != IndexReference.NO_INDEX ) @@ -780,7 +780,7 @@ private IndexReference findMatchingIndex( KernelTransaction transaction, int lab } } - private IndexQuery[] getReorderedIndexQueries( int[] indexPropertyIds, IndexQuery[] queries ) + private static IndexQuery[] getReorderedIndexQueries( int[] indexPropertyIds, IndexQuery[] queries ) { IndexQuery[] orderedQueries = new IndexQuery[queries.length]; for ( int i = 0; i < indexPropertyIds.length; i++ ) @@ -798,7 +798,7 @@ private IndexQuery[] getReorderedIndexQueries( int[] indexPropertyIds, IndexQuer return orderedQueries; } - private boolean hasSamePropertyIds( int[] original, int[] workingCopy, int[] propertyIds ) + private static boolean hasSamePropertyIds( int[] original, int[] workingCopy, int[] propertyIds ) { if ( original.length == propertyIds.length ) { @@ -809,7 +809,7 @@ private boolean hasSamePropertyIds( int[] original, int[] workingCopy, int[] pro return false; } - private int[] getPropertyIds( IndexQuery[] queries ) + private static int[] getPropertyIds( IndexQuery[] queries ) { int[] propertyIds = new int[queries.length]; for ( int i = 0; i < queries.length; i++ ) @@ -819,7 +819,7 @@ private int[] getPropertyIds( IndexQuery[] queries ) return propertyIds; } - private boolean isInvalidQuery( int labelId, IndexQuery[] queries ) + private static boolean isInvalidQuery( int labelId, IndexQuery[] queries ) { boolean invalidQuery = labelId == TokenRead.NO_TOKEN; for ( IndexQuery query : queries ) @@ -830,7 +830,7 @@ private boolean isInvalidQuery( int labelId, IndexQuery[] queries ) return invalidQuery; } - private void assertNoDuplicates( int[] propertyIds, TokenRead tokenRead ) + private static void assertNoDuplicates( int[] propertyIds, TokenRead tokenRead ) { int prev = propertyIds[0]; for ( int i = 1; i < propertyIds.length; i++ ) @@ -1085,7 +1085,7 @@ private void assertTransactionOpen() assertTransactionOpen( statementContext.getKernelTransactionBoundToThisThread( true ) ); } - private void assertTransactionOpen( KernelTransaction transaction ) + private static void assertTransactionOpen( KernelTransaction transaction ) { if ( transaction.isTerminated() ) { diff --git a/community/neo4j/src/main/java/org/neo4j/graphdb/facade/spi/ClassicCoreSPI.java b/community/neo4j/src/main/java/org/neo4j/graphdb/facade/spi/ClassicCoreSPI.java index b4433c48fe0b1..b35871141bd70 100644 --- a/community/neo4j/src/main/java/org/neo4j/graphdb/facade/spi/ClassicCoreSPI.java +++ b/community/neo4j/src/main/java/org/neo4j/graphdb/facade/spi/ClassicCoreSPI.java @@ -131,8 +131,7 @@ public StoreId storeId() @Override public File storeDir() { - //TODO: change to particular data base store dir - return platform.storeDir; + return dataSource.neoStoreDataSource.getDatabaseDirectory(); } @Override diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java index 98a3b7169042d..1a282de828966 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/EnterpriseCoreEditionModule.java @@ -206,12 +206,13 @@ public EnterpriseCoreEditionModule( final PlatformModule platformModule, final LogService logging = platformModule.logging; final FileSystemAbstraction fileSystem = platformModule.fileSystem; final File storeDir = platformModule.storeDir; + final File databaseDirectory = new File( storeDir, config.get( GraphDatabaseSettings.active_database ) ); final LifeSupport life = platformModule.life; CoreMonitor.register( logging.getInternalLogProvider(), logging.getUserLogProvider(), platformModule.monitors ); final File dataDir = config.get( GraphDatabaseSettings.data_directory ); - final ClusterStateDirectory clusterStateDirectory = new ClusterStateDirectory( dataDir, storeDir, false ); + final ClusterStateDirectory clusterStateDirectory = new ClusterStateDirectory( dataDir, databaseDirectory, false ); try { clusterStateDirectory.initialize( fileSystem ); @@ -230,8 +231,8 @@ public EnterpriseCoreEditionModule( final PlatformModule platformModule, watcherService = createFileSystemWatcherService( fileSystem, storeDir, logging, platformModule.jobScheduler, fileWatcherFileNameFilter() ); dependencies.satisfyDependencies( watcherService ); - LogFiles logFiles = buildLocalDatabaseLogFiles( platformModule, fileSystem, storeDir ); - LocalDatabase localDatabase = new LocalDatabase( storeDir, + LogFiles logFiles = buildLocalDatabaseLogFiles( platformModule, fileSystem, databaseDirectory ); + LocalDatabase localDatabase = new LocalDatabase( databaseDirectory, new StoreFiles( fileSystem, platformModule.pageCache ), logFiles, platformModule.dataSourceManager, @@ -243,7 +244,7 @@ public EnterpriseCoreEditionModule( final PlatformModule platformModule, IdentityModule identityModule = new IdentityModule( platformModule, clusterStateDirectory.get() ); ClusteringModule clusteringModule = getClusteringModule( platformModule, discoveryServiceFactory, - clusterStateDirectory, identityModule, dependencies ); + clusterStateDirectory, identityModule, databaseDirectory ); // We need to satisfy the dependency here to keep users of it, such as BoltKernelExtension, happy. dependencies.satisfyDependency( SslPolicyLoader.create( config, logProvider ) ); @@ -355,11 +356,11 @@ private UpstreamDatabaseStrategySelector createUpstreamDatabaseStrategySelector( return new UpstreamDatabaseStrategySelector( defaultStrategy, loader, logProvider ); } - private LogFiles buildLocalDatabaseLogFiles( PlatformModule platformModule, FileSystemAbstraction fileSystem, File storeDir ) + private LogFiles buildLocalDatabaseLogFiles( PlatformModule platformModule, FileSystemAbstraction fileSystem, File databaseDirectory ) { try { - return LogFilesBuilder.activeFilesBuilder( storeDir, fileSystem, platformModule.pageCache ).withConfig( config ).build(); + return LogFilesBuilder.activeFilesBuilder( databaseDirectory, fileSystem, platformModule.pageCache ).withConfig( config ).build(); } catch ( IOException e ) { @@ -367,13 +368,11 @@ private LogFiles buildLocalDatabaseLogFiles( PlatformModule platformModule, File } } - protected ClusteringModule getClusteringModule( PlatformModule platformModule, - DiscoveryServiceFactory discoveryServiceFactory, - ClusterStateDirectory clusterStateDirectory, - IdentityModule identityModule, Dependencies dependencies ) + protected ClusteringModule getClusteringModule( PlatformModule platformModule, DiscoveryServiceFactory discoveryServiceFactory, + ClusterStateDirectory clusterStateDirectory, IdentityModule identityModule, File databaseDirectory ) { return new ClusteringModule( discoveryServiceFactory, identityModule.myself(), - platformModule, clusterStateDirectory.get() ); + platformModule, clusterStateDirectory.get(), databaseDirectory ); } protected DuplexPipelineWrapperFactory pipelineWrapperFactory() @@ -400,7 +399,7 @@ static Predicate fileWatcherFileNameFilter() ); } - private MessageLogger createMessageLogger( Config config, LifeSupport life, MemberId myself ) + private static MessageLogger createMessageLogger( Config config, LifeSupport life, MemberId myself ) { final MessageLogger messageLogger; if ( config.get( CausalClusteringSettings.raft_messages_log_enable ) ) @@ -461,19 +460,19 @@ private static PrintWriter raftMessagesLog( File logFile ) } } - private SchemaWriteGuard createSchemaWriteGuard() + private static SchemaWriteGuard createSchemaWriteGuard() { return SchemaWriteGuard.ALLOW_ALL_WRITES; } - private KernelData createKernelData( FileSystemAbstraction fileSystem, PageCache pageCache, File storeDir, - Config config, GraphDatabaseAPI graphAPI, LifeSupport life ) + private static KernelData createKernelData( FileSystemAbstraction fileSystem, PageCache pageCache, File storeDir, Config config, GraphDatabaseAPI graphAPI, + LifeSupport life ) { KernelData kernelData = new KernelData( fileSystem, pageCache, storeDir, config, graphAPI ); return life.add( kernelData ); } - private TransactionHeaderInformationFactory createHeaderInformationFactory() + private static TransactionHeaderInformationFactory createHeaderInformationFactory() { return () -> new TransactionHeaderInformation( -1, -1, new byte[0] ); } diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/ClusteringModule.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/ClusteringModule.java index b652bf022d2c2..43aea9f78f9bd 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/ClusteringModule.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/ClusteringModule.java @@ -58,7 +58,7 @@ public class ClusteringModule private final ClusterBinder clusterBinder; public ClusteringModule( DiscoveryServiceFactory discoveryServiceFactory, MemberId myself, - PlatformModule platformModule, File clusterStateDirectory ) + PlatformModule platformModule, File clusterStateDirectory, File databaseDirectory ) { LifeSupport life = platformModule.life; Config config = platformModule.config; @@ -77,7 +77,7 @@ public ClusteringModule( DiscoveryServiceFactory discoveryServiceFactory, Member dependencies.satisfyDependency( topologyService ); // for tests CoreBootstrapper coreBootstrapper = - new CoreBootstrapper( platformModule.storeDir, platformModule.pageCache, fileSystem, config, logProvider ); + new CoreBootstrapper( databaseDirectory, platformModule.pageCache, fileSystem, config, logProvider ); SimpleStorage clusterIdStorage = new SimpleFileStorage<>( fileSystem, clusterStateDirectory, CLUSTER_ID_NAME, new ClusterId.Marshal(), diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreBootstrapper.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreBootstrapper.java index d5ddbd1f85654..30e043ea5a5bb 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreBootstrapper.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/core/state/CoreBootstrapper.java @@ -92,15 +92,15 @@ public class CoreBootstrapper private static final long FIRST_INDEX = 0L; private static final long FIRST_TERM = 0L; - private final File storeDir; + private final File databaseDirectory; private final PageCache pageCache; private final FileSystemAbstraction fs; private final Config config; private final LogProvider logProvider; - CoreBootstrapper( File storeDir, PageCache pageCache, FileSystemAbstraction fs, Config config, LogProvider logProvider ) + CoreBootstrapper( File databaseDirectory, PageCache pageCache, FileSystemAbstraction fs, Config config, LogProvider logProvider ) { - this.storeDir = storeDir; + this.databaseDirectory = databaseDirectory; this.pageCache = pageCache; this.fs = fs; this.config = config; @@ -109,14 +109,14 @@ public class CoreBootstrapper public CoreSnapshot bootstrap( Set members ) throws IOException { - StoreFactory factory = new StoreFactory( storeDir, config, + StoreFactory factory = new StoreFactory( databaseDirectory, config, new DefaultIdGeneratorFactory( fs ), pageCache, fs, logProvider, EmptyVersionContextSupplier.EMPTY ); NeoStores neoStores = factory.openAllNeoStores( true ); neoStores.close(); CoreSnapshot coreSnapshot = new CoreSnapshot( FIRST_INDEX, FIRST_TERM ); - coreSnapshot.add( CoreStateType.ID_ALLOCATION, deriveIdAllocationState( storeDir ) ); + coreSnapshot.add( CoreStateType.ID_ALLOCATION, deriveIdAllocationState( databaseDirectory ) ); coreSnapshot.add( CoreStateType.LOCK_TOKEN, new ReplicatedLockTokenState() ); coreSnapshot.add( CoreStateType.RAFT_CORE_STATE, new RaftCoreState( new MembershipEntry( FIRST_INDEX, members ) ) ); @@ -127,8 +127,8 @@ public CoreSnapshot bootstrap( Set members ) throws IOException private void appendNullTransactionLogEntryToSetRaftIndexToMinusOne() throws IOException { - ReadOnlyTransactionIdStore readOnlyTransactionIdStore = new ReadOnlyTransactionIdStore( pageCache, storeDir ); - LogFiles logFiles = LogFilesBuilder.activeFilesBuilder( storeDir, fs, pageCache ) + ReadOnlyTransactionIdStore readOnlyTransactionIdStore = new ReadOnlyTransactionIdStore( pageCache, databaseDirectory ); + LogFiles logFiles = LogFilesBuilder.activeFilesBuilder( databaseDirectory, fs, pageCache ) .withConfig( config ) .withLastCommittedTransactionIdSupplier( () -> readOnlyTransactionIdStore.getLastClosedTransactionId() - 1 ) .build(); @@ -149,7 +149,7 @@ private void appendNullTransactionLogEntryToSetRaftIndexToMinusOne() throws IOEx channel.prepareForFlush().flush(); } - File neoStoreFile = new File( storeDir, MetaDataStore.DEFAULT_NAME ); + File neoStoreFile = new File( databaseDirectory, MetaDataStore.DEFAULT_NAME ); MetaDataStore.setRecord( pageCache, neoStoreFile, LAST_TRANSACTION_ID, dummyTransactionId ); } @@ -177,7 +177,7 @@ private IdAllocationState deriveIdAllocationState( File dbDir ) return new IdAllocationState( highIds, FIRST_INDEX ); } - private long getHighId( File coreDir, DefaultIdGeneratorFactory factory, IdType idType, String store ) + private static long getHighId( File coreDir, DefaultIdGeneratorFactory factory, IdType idType, String store ) { IdGenerator idGenerator = factory.open( new File( coreDir, idFile( store ) ), idType, () -> -1L, Long.MAX_VALUE ); long highId = idGenerator.getHighId(); diff --git a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java index b8fb3fe060769..9ad6af98ea2de 100644 --- a/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java +++ b/enterprise/causal-clustering/src/main/java/org/neo4j/causalclustering/readreplica/EnterpriseReadReplicaEditionModule.java @@ -163,6 +163,8 @@ public EnterpriseReadReplicaEditionModule( final PlatformModule platformModule, FileSystemAbstraction fileSystem = platformModule.fileSystem; PageCache pageCache = platformModule.pageCache; File storeDir = platformModule.storeDir; + final File databaseDirectory = new File( storeDir, config.get( GraphDatabaseSettings.active_database ) ); + LifeSupport life = platformModule.life; eligibleForIdReuse = IdReuseEligibility.ALWAYS; @@ -256,10 +258,10 @@ public EnterpriseReadReplicaEditionModule( final PlatformModule platformModule, final Supplier databaseHealthSupplier = dependencies.provideDependency( DatabaseHealth.class ); StoreFiles storeFiles = new StoreFiles( fileSystem, pageCache ); - LogFiles logFiles = buildLocalDatabaseLogFiles( platformModule, fileSystem, storeDir, config ); + LogFiles logFiles = buildLocalDatabaseLogFiles( platformModule, fileSystem, databaseDirectory, config ); LocalDatabase localDatabase = - new LocalDatabase( storeDir, storeFiles, logFiles, platformModule.dataSourceManager, + new LocalDatabase( databaseDirectory, storeFiles, logFiles, platformModule.dataSourceManager, databaseHealthSupplier, watcherService, platformModule.availabilityGuard, logProvider ); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/catchup/storecopy/CatchupServerIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/catchup/storecopy/CatchupServerIT.java index bf2f46af38bff..a92b9650861d5 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/catchup/storecopy/CatchupServerIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/catchup/storecopy/CatchupServerIT.java @@ -50,7 +50,6 @@ import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.store.StoreType; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; -import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.kernel.impl.transaction.state.NeoStoreFileListing; import org.neo4j.kernel.internal.GraphDatabaseAPI; import org.neo4j.logging.LogProvider; @@ -96,8 +95,8 @@ public class CatchupServerIT @Before public void startDb() throws Throwable { - temporaryDirectory = testDirectory.directory(); - graphDb = (GraphDatabaseAPI) new TestGraphDatabaseFactory().setFileSystem( fsa ).newEmbeddedDatabase( testDirectory.graphDbDir() ); + temporaryDirectory = testDirectory.directory( "temp" ); + graphDb = (GraphDatabaseAPI) new TestGraphDatabaseFactory().setFileSystem( fsa ).newEmbeddedDatabase( testDirectory.directory() ); createLegacyIndex(); createPropertyIndex(); addData( graphDb ); @@ -257,14 +256,14 @@ private void fileContentEquals( Collection countStore ) throws IOException private File databaseFileToClientFile( File file ) throws IOException { - String relativePathToDatabaseDir = relativePath( new File( temporaryDirectory, DataSourceManager.DEFAULT_DATABASE_NAME ), file ); + String relativePathToDatabaseDir = relativePath( testDirectory.graphDbDir(), file ); return new File( temporaryDirectory, relativePathToDatabaseDir ); } private File clientFileToDatabaseFile( File file ) throws IOException { String relativePathToDatabaseDir = relativePath( temporaryDirectory, file ); - return new File( new File( temporaryDirectory, "graph-db" ), relativePathToDatabaseDir ); + return new File( testDirectory.graphDbDir(), relativePathToDatabaseDir ); } private void fileContentEquals( File fileA, File fileB ) throws IOException @@ -282,12 +281,12 @@ private void listOfDownloadedFilesMatchesServer( NeoStoreDataSource neoStoreData assertThat( givenFile, containsInAnyOrder( expectedStoreFiles.toArray( new String[givenFile.size()] ) ) ); } - private LongSet getExpectedIndexIds( NeoStoreDataSource neoStoreDataSource ) + private static LongSet getExpectedIndexIds( NeoStoreDataSource neoStoreDataSource ) { return neoStoreDataSource.getNeoStoreFileListing().getNeoStoreFileIndexListing().getIndexIds(); } - private List listServerExpectedNonReplayableFiles( NeoStoreDataSource neoStoreDataSource ) throws IOException + private static List listServerExpectedNonReplayableFiles( NeoStoreDataSource neoStoreDataSource ) throws IOException { try ( Stream countStoreStream = neoStoreDataSource.getNeoStoreFileListing().builder().excludeAll() .includeNeoStoreFiles().build().stream(); @@ -313,7 +312,7 @@ private static Predicate isCountFile() return storeFileMetadata -> StoreType.typeOf( storeFileMetadata.file().getName() ).filter( f -> f == StoreType.COUNTS ).isPresent(); } - private void addData( GraphDatabaseAPI graphDb ) + private static void addData( GraphDatabaseAPI graphDb ) { try ( Transaction tx = graphDb.beginTx() ) { diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/state/CoreBootstrapperIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/state/CoreBootstrapperIT.java index a8dfaeeb5897d..3812725914504 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/state/CoreBootstrapperIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/core/state/CoreBootstrapperIT.java @@ -47,6 +47,7 @@ import org.neo4j.kernel.impl.store.id.IdType; import org.neo4j.kernel.impl.transaction.log.ReadOnlyTransactionIdStore; import org.neo4j.kernel.impl.transaction.log.ReadOnlyTransactionStore; +import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.kernel.monitoring.Monitors; import org.neo4j.logging.NullLogProvider; import org.neo4j.test.rule.PageCacheRule; @@ -83,9 +84,10 @@ public void shouldSetAllCoreState() throws Exception testDirectory.directory(), fileSystem, nodeCount, Standard.LATEST_NAME ); PageCache pageCache = pageCacheRule.getPageCache( fileSystem ); - CoreBootstrapper bootstrapper = new CoreBootstrapper( classicNeo4jStore, pageCache, fileSystem, + File classicDatabaseDirectory = new File( classicNeo4jStore, DataSourceManager.DEFAULT_DATABASE_NAME ); + CoreBootstrapper bootstrapper = new CoreBootstrapper( classicDatabaseDirectory, pageCache, fileSystem, Config.defaults(), NullLogProvider.getInstance() ); - bootstrapAndVerify( nodeCount, fileSystem, classicNeo4jStore, pageCache, Config.defaults(), bootstrapper ); + bootstrapAndVerify( nodeCount, fileSystem, classicDatabaseDirectory, pageCache, Config.defaults(), bootstrapper ); } @Test @@ -100,16 +102,17 @@ public void setAllCoreStateOnDatabaseWithCustomLogFilesLocation() throws Excepti Standard.LATEST_NAME, customTransactionLogsLocation ); PageCache pageCache = pageCacheRule.getPageCache( fileSystem ); + File classicDatabaseDirectory = new File( classicNeo4jStore, DataSourceManager.DEFAULT_DATABASE_NAME ); Config config = Config.defaults( GraphDatabaseSettings.logical_logs_location, customTransactionLogsLocation ); - CoreBootstrapper bootstrapper = new CoreBootstrapper( classicNeo4jStore, pageCache, fileSystem, + CoreBootstrapper bootstrapper = new CoreBootstrapper( classicDatabaseDirectory, pageCache, fileSystem, config, NullLogProvider.getInstance() ); - bootstrapAndVerify( nodeCount, fileSystem, classicNeo4jStore, pageCache, config, bootstrapper ); + bootstrapAndVerify( nodeCount, fileSystem, classicDatabaseDirectory, pageCache, config, bootstrapper ); } - private void bootstrapAndVerify( long nodeCount, FileSystemAbstraction fileSystem, File classicNeo4jStore, - PageCache pageCache, Config config, CoreBootstrapper bootstrapper ) throws IOException + private static void bootstrapAndVerify( long nodeCount, FileSystemAbstraction fileSystem, File databaseDirectory, PageCache pageCache, Config config, + CoreBootstrapper bootstrapper ) throws IOException { // when Set membership = asSet( randomMember(), randomMember(), randomMember() ); @@ -134,16 +137,16 @@ private void bootstrapAndVerify( long nodeCount, FileSystemAbstraction fileSyste assertEquals( new GlobalSessionTrackerState(), snapshot.get( CoreStateType.SESSION_TRACKER ) ); ReadOnlyTransactionStore transactionStore = new ReadOnlyTransactionStore( pageCache, fileSystem, - classicNeo4jStore, config, new Monitors() ); + databaseDirectory, config, new Monitors() ); LastCommittedIndexFinder lastCommittedIndexFinder = new LastCommittedIndexFinder( - new ReadOnlyTransactionIdStore( pageCache, classicNeo4jStore ), + new ReadOnlyTransactionIdStore( pageCache, databaseDirectory ), transactionStore, NullLogProvider.getInstance() ); long lastCommittedIndex = lastCommittedIndexFinder.getLastCommittedIndex(); assertEquals( -1, lastCommittedIndex ); } - private MemberId randomMember() + private static MemberId randomMember() { return new MemberId( randomUUID() ); } diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/Cluster.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/Cluster.java index 387d935c1abe9..79c47715eb913 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/Cluster.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/Cluster.java @@ -238,7 +238,7 @@ public void shutdown() } } - private void shutdownCoreMembers( Collection members, ErrorHandler errorHandler ) + private static void shutdownCoreMembers( Collection members, ErrorHandler errorHandler ) { shutdownMembers( members, errorHandler ); } @@ -248,12 +248,12 @@ public void shutdownCoreMembers() shutdownCoreMembers( coreMembers() ); } - public void shutdownCoreMember( CoreClusterMember member ) + public static void shutdownCoreMember( CoreClusterMember member ) { shutdownCoreMembers( Collections.singleton( member ) ); } - public void shutdownCoreMembers( Collection members ) + public static void shutdownCoreMembers( Collection members ) { try ( ErrorHandler errorHandler = new ErrorHandler( "Error when trying to shutdown core members" ) ) { @@ -262,7 +262,7 @@ public void shutdownCoreMembers( Collection members ) } @SuppressWarnings( "unchecked" ) - private void shutdownMembers( Collection clusterMembers, ErrorHandler errorHandler ) + private static void shutdownMembers( Collection clusterMembers, ErrorHandler errorHandler ) { try { @@ -278,8 +278,8 @@ private void shutdownMembers( Collection clusterMembers } } - private , R> List> invokeAll( - String threadName, Collection members, Function call ) + private static , R> List> invokeAll( String threadName, Collection members, + Function call ) { List> list = new ArrayList<>( members.size() ); int threadNumber = 0; @@ -514,7 +514,7 @@ private CoreClusterMember leaderTx( String dbName, BiConsumer throwablePredicate = e1 -> isLockExpired( e1 ) || isLockOnFollower( e1 ) || isWriteNotOnLeader( e1 ) || e1 instanceof TransientTransactionFailureException || @@ -522,20 +522,20 @@ private boolean isTransientFailure( Throwable e ) return Exceptions.contains( e, throwablePredicate ); } - private boolean isWriteNotOnLeader( Throwable e ) + private static boolean isWriteNotOnLeader( Throwable e ) { return e instanceof WriteOperationsNotAllowedException && e.getMessage().startsWith( String.format( LeaderCanWrite.NOT_LEADER_ERROR_MSG, "" ) ); } - private boolean isLockOnFollower( Throwable e ) + private static boolean isLockOnFollower( Throwable e ) { return e instanceof AcquireLockTimeoutException && (e.getMessage().equals( LeaderOnlyLockManager.LOCK_NOT_ON_LEADER_ERROR_MESSAGE ) || e.getCause() instanceof NoLeaderFoundException); } - private boolean isLockExpired( Throwable e ) + private static boolean isLockExpired( Throwable e ) { return e instanceof TransactionFailureException && e.getCause() instanceof org.neo4j.internal.kernel.api.exceptions.TransactionFailureException && @@ -640,12 +640,12 @@ public void startCoreMembers() throws InterruptedException, ExecutionException startCoreMembers( coreMembers.values() ); } - public void startCoreMember( CoreClusterMember member ) throws InterruptedException, ExecutionException + public static void startCoreMember( CoreClusterMember member ) throws InterruptedException, ExecutionException { startCoreMembers( Collections.singleton( member ) ); } - public void startCoreMembers( Collection members ) throws InterruptedException, ExecutionException + public static void startCoreMembers( Collection members ) throws InterruptedException, ExecutionException { List> futures = invokeAll( "cluster-starter", members, cm -> { diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ClusterMember.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ClusterMember.java index c6bfbdb3b90cf..ea83c769512a9 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ClusterMember.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ClusterMember.java @@ -59,7 +59,7 @@ public interface ClusterMember Monitors monitors(); - File storeDir(); + File databaseDirectory(); File homeDir(); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/CoreClusterMember.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/CoreClusterMember.java index d41ec793f3eae..ff265f773de88 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/CoreClusterMember.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/CoreClusterMember.java @@ -62,7 +62,7 @@ public class CoreClusterMember implements ClusterMember { private final File neo4jHome; protected final DiscoveryServiceFactory discoveryServiceFactory; - protected final File storeDir; + private final File defaultDatabaseDirectory; private final File clusterStateDir; private final File raftLogDir; private final Map config = stringMap(); @@ -143,13 +143,13 @@ public CoreClusterMember( int serverId, clusterStateDir = ClusterStateDirectory.withoutInitializing( dataDir ).get(); raftLogDir = new File( clusterStateDir, RAFT_LOG_DIRECTORY_NAME ); databasesDirectory = new File( dataDir, "databases" ); - storeDir = new File( databasesDirectory, DataSourceManager.DEFAULT_DATABASE_NAME ); + defaultDatabaseDirectory = new File( databasesDirectory, DataSourceManager.DEFAULT_DATABASE_NAME ); memberConfig = Config.defaults( config ); this.dbName = memberConfig.get( CausalClusteringSettings.database ); //noinspection ResultOfMethodCallIgnored - storeDir.mkdirs(); + defaultDatabaseDirectory.mkdirs(); threadGroup = new ThreadGroup( toString() ); } @@ -209,9 +209,14 @@ public CoreGraphDatabase database() } @Override - public File storeDir() + public File databaseDirectory() { - return storeDir; + return defaultDatabaseDirectory; + } + + public File databasesDirectory() + { + return databasesDirectory; } public RaftLogPruner raftLogPruner() diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ReadReplica.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ReadReplica.java index 0140f60031a5d..7466bad5d3dac 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ReadReplica.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/discovery/ReadReplica.java @@ -55,13 +55,14 @@ public class ReadReplica implements ClusterMember { protected final DiscoveryServiceFactory discoveryServiceFactory; private final File neo4jHome; - protected final File storeDir; + protected final File defaultDatabaseDirectory; private final int serverId; private final String boltAdvertisedSocketAddress; private final Config memberConfig; protected ReadReplicaGraphDatabase database; protected Monitors monitors; private final ThreadGroup threadGroup; + protected final File databasesDirectory; public ReadReplica( File parentDir, int serverId, int boltPort, int httpPort, int txPort, int backupPort, DiscoveryServiceFactory discoveryServiceFactory, @@ -108,10 +109,12 @@ public ReadReplica( File parentDir, int serverId, int boltPort, int httpPort, in memberConfig = Config.defaults( config ); this.discoveryServiceFactory = discoveryServiceFactory; - storeDir = new File( new File( new File( neo4jHome, "data" ), "databases" ), DataSourceManager.DEFAULT_DATABASE_NAME ); + File dataDirectory = new File( neo4jHome, "data" ); + databasesDirectory = new File( dataDirectory, "databases" ); + defaultDatabaseDirectory = new File( databasesDirectory, DataSourceManager.DEFAULT_DATABASE_NAME ); //noinspection ResultOfMethodCallIgnored - storeDir.mkdirs(); + defaultDatabaseDirectory.mkdirs(); this.monitors = monitors; threadGroup = new ThreadGroup( toString() ); @@ -130,9 +133,8 @@ public String routingURI() @Override public void start() { - database = new ReadReplicaGraphDatabase( storeDir, memberConfig, - GraphDatabaseDependencies.newDependencies().monitors( monitors ), discoveryServiceFactory, - memberId() ); + database = new ReadReplicaGraphDatabase( databasesDirectory, memberConfig, GraphDatabaseDependencies.newDependencies().monitors( monitors ), + discoveryServiceFactory, memberId() ); } @Override @@ -193,9 +195,9 @@ public Monitors monitors() } @Override - public File storeDir() + public File databaseDirectory() { - return storeDir; + return defaultDatabaseDirectory; } public String toString() diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterBindingIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterBindingIT.java index 8d1a94da56639..ff5d2ea61081d 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterBindingIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterBindingIT.java @@ -148,7 +148,7 @@ public void shouldNotJoinClusterIfHasDataWithDifferentStoreId() throws Exception tx.success(); } ); - File storeDir = cluster.getCoreMemberById( 0 ).storeDir(); + File storeDir = cluster.getCoreMemberById( 0 ).databaseDirectory(); cluster.removeCoreMemberWithServerId( 0 ); changeStoreId( storeDir ); @@ -264,9 +264,9 @@ public void aNewServerShouldJoinTheClusterByDownloadingASnapshot() throws Except assertAllStoresHaveTheSameStoreId( coreStoreDirs, fs ); } - private List storeDirs( Collection dbs ) + private static List storeDirs( Collection dbs ) { - return dbs.stream().map( CoreClusterMember::storeDir ).collect( Collectors.toList() ); + return dbs.stream().map( CoreClusterMember::databaseDirectory ).collect( Collectors.toList() ); } private void changeClusterId( CoreClusterMember coreMember ) throws IOException diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCommunityToEnterpriseIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCommunityToEnterpriseIT.java index eb69c90ffae36..1c80f60fa293b 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCommunityToEnterpriseIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCommunityToEnterpriseIT.java @@ -91,9 +91,9 @@ public void shouldRestoreBySeedingAllMembers() throws Throwable DbRepresentation before = DbRepresentation.of( storeDir, config ); // when - fsa.copyRecursively( storeDir, cluster.getCoreMemberById( 0 ).storeDir() ); - fsa.copyRecursively( storeDir, cluster.getCoreMemberById( 1 ).storeDir() ); - fsa.copyRecursively( storeDir, cluster.getCoreMemberById( 2 ).storeDir() ); + fsa.copyRecursively( storeDir, cluster.getCoreMemberById( 0 ).databaseDirectory() ); + fsa.copyRecursively( storeDir, cluster.getCoreMemberById( 1 ).databaseDirectory() ); + fsa.copyRecursively( storeDir, cluster.getCoreMemberById( 2 ).databaseDirectory() ); cluster.start(); // then diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCustomLogLocationIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCustomLogLocationIT.java index 25fd1815b0e6a..799e7b5614ca4 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCustomLogLocationIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ClusterCustomLogLocationIT.java @@ -72,10 +72,10 @@ public void clusterWithCustomTransactionLogLocation() throws Exception LogFiles logFiles = dependencyResolver.resolveDependency( LogFiles.class ); assertEquals( logFiles.logFilesDirectory().getName(), "core-tx-logs-" + coreClusterMember.serverId() ); assertTrue( logFiles.hasAnyEntries( 0 ) ); - File[] coreLogDirectories = coreClusterMember.storeDir().listFiles( file -> file.getName().startsWith( "core" ) ); + File[] coreLogDirectories = coreClusterMember.databaseDirectory().listFiles( file -> file.getName().startsWith( "core" ) ); assertThat( coreLogDirectories, Matchers.arrayWithSize( 1 ) ); - logFileInStoreDirectoryDoesNotExist( coreClusterMember.storeDir(), dependencyResolver ); + logFileInStoreDirectoryDoesNotExist( coreClusterMember.databaseDirectory(), dependencyResolver ); } Collection readReplicas = cluster.readReplicas(); @@ -86,14 +86,14 @@ public void clusterWithCustomTransactionLogLocation() throws Exception LogFiles logFiles = dependencyResolver.resolveDependency( LogFiles.class ); assertEquals( logFiles.logFilesDirectory().getName(), "replica-tx-logs-" + readReplica.serverId() ); assertTrue( logFiles.hasAnyEntries( 0 ) ); - File[] replicaLogDirectories = readReplica.storeDir().listFiles( file -> file.getName().startsWith( "replica" ) ); + File[] replicaLogDirectories = readReplica.databaseDirectory().listFiles( file -> file.getName().startsWith( "replica" ) ); assertThat( replicaLogDirectories, Matchers.arrayWithSize( 1 ) ); - logFileInStoreDirectoryDoesNotExist( readReplica.storeDir(), dependencyResolver ); + logFileInStoreDirectoryDoesNotExist( readReplica.databaseDirectory(), dependencyResolver ); } } - private void logFileInStoreDirectoryDoesNotExist( File storeDir, DependencyResolver dependencyResolver ) throws IOException + private static void logFileInStoreDirectoryDoesNotExist( File storeDir, DependencyResolver dependencyResolver ) throws IOException { FileSystemAbstraction fileSystem = dependencyResolver.resolveDependency( FileSystemAbstraction.class ); LogFiles storeLogFiles = logFilesBasedOnlyBuilder( storeDir, fileSystem ).build(); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/CoreToCoreCopySnapshotIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/CoreToCoreCopySnapshotIT.java index 9b663a9c85de8..21df1f45df7bf 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/CoreToCoreCopySnapshotIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/CoreToCoreCopySnapshotIT.java @@ -78,7 +78,7 @@ public void shouldBeAbleToDownloadLargerFreshSnapshot() throws Exception // shutdown the follower, remove the store, restart follower.shutdown(); - deleteDirectoryRecursively( follower.storeDir(), follower.serverId() ); + deleteDirectoryRecursively( follower.databaseDirectory(), follower.serverId() ); deleteDirectoryRecursively( follower.clusterStateDirectory(), follower.serverId() ); follower.start(); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusteringIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusteringIT.java index 25e2c6a081df9..783c1e4d8cb63 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusteringIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/MultiClusteringIT.java @@ -54,7 +54,6 @@ import org.neo4j.test.rule.fs.DefaultFileSystemRule; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import static org.neo4j.causalclustering.TestStoreId.getStoreIds; @@ -175,7 +174,7 @@ public void distinctDatabasesShouldHaveDistinctStoreIds() throws Exception } List storeDirs = cluster.coreMembers().stream() - .map( CoreClusterMember::storeDir ) + .map( CoreClusterMember::databaseDirectory ) .collect( Collectors.toList() ); cluster.shutdown(); @@ -222,7 +221,7 @@ public void rejoiningFollowerShouldDownloadSnapshotFromCorrectDatabase() throws List storeDirs = cluster.coreMembers().stream() .filter( m -> dbName.equals( m.dbName() ) ) - .map( CoreClusterMember::storeDir ) + .map( CoreClusterMember::databaseDirectory ) .collect( Collectors.toList() ); cluster.shutdown(); @@ -237,7 +236,7 @@ public void shouldNotBeAbleToChangeClusterMembersDatabaseName() throws Exception { CoreClusterMember member = cluster.coreMembers().stream().findFirst().orElseThrow( IllegalArgumentException::new ); - cluster.shutdownCoreMember( member ); + Cluster.shutdownCoreMember( member ); //given member.updateConfig( CausalClusteringSettings.database, "new_name" ); @@ -245,7 +244,7 @@ public void shouldNotBeAbleToChangeClusterMembersDatabaseName() throws Exception try { //when - cluster.startCoreMember( member ); + Cluster.startCoreMember( member ); fail( "Cluster member should fail to restart after database name change." ); } catch ( ExecutionException e ) diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ReadReplicaReplicationIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ReadReplicaReplicationIT.java index 3516fb42f2064..e0b640420594f 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ReadReplicaReplicationIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/ReadReplicaReplicationIT.java @@ -185,7 +185,7 @@ public void shouldEventuallyPullTransactionDownToAllReadReplicas() throws Except AtomicBoolean labelScanStoreCorrectlyPlaced = new AtomicBoolean( false ); Monitors monitors = new Monitors(); ReadReplica rr = cluster.addReadReplicaWithIdAndMonitors( 0, monitors ); - Path readReplicateStoreDir = rr.storeDir().toPath().toAbsolutePath(); + Path readReplicateStoreDir = rr.databaseDirectory().toPath().toAbsolutePath(); monitors.addMonitorListener( (FileCopyMonitor) file -> { @@ -229,7 +229,7 @@ public void shouldEventuallyPullTransactionDownToAllReadReplicas() throws Except assertTrue( labelScanStoreCorrectlyPlaced.get() ); } - private void gatherLabelScanStoreFiles( GraphDatabaseAPI db, Set labelScanStoreFiles ) + private static void gatherLabelScanStoreFiles( GraphDatabaseAPI db, Set labelScanStoreFiles ) { Path dbStoreDirectory = db.getStoreDir().toPath().toAbsolutePath(); LabelScanStore labelScanStore = db.getDependencyResolver().resolveDependency( LabelScanStore.class ); @@ -459,7 +459,7 @@ public void transactionsShouldNotAppearOnTheReadReplicaWhilePollingIsPaused() th transactionIdTracker( readReplicaGraphDatabase ).awaitUpToDate( transactionVisibleOnLeader, ofSeconds( 15 ) ); } - private TransactionIdTracker transactionIdTracker( GraphDatabaseAPI database ) + private static TransactionIdTracker transactionIdTracker( GraphDatabaseAPI database ) { Supplier transactionIdStore = database.getDependencyResolver().provideDependency( TransactionIdStore.class ); @@ -468,13 +468,12 @@ private TransactionIdTracker transactionIdTracker( GraphDatabaseAPI database ) return new TransactionIdTracker( transactionIdStore, availabilityGuard ); } - private LogFiles physicalLogFiles( ClusterMember clusterMember ) + private static LogFiles physicalLogFiles( ClusterMember clusterMember ) { return clusterMember.database().getDependencyResolver().resolveDependency( LogFiles.class ); } - private boolean readReplicasUpToDateAsTheLeader( CoreClusterMember leader, - Collection readReplicas ) + private static boolean readReplicasUpToDateAsTheLeader( CoreClusterMember leader, Collection readReplicas ) { long leaderTxId = lastClosedTransactionId( true, leader.database() ); return readReplicas.stream().map( ReadReplica::database ) @@ -482,14 +481,14 @@ private boolean readReplicasUpToDateAsTheLeader( CoreClusterMember leader, .reduce( true, ( acc, txId ) -> acc && txId == leaderTxId, Boolean::logicalAnd ); } - private void changeStoreId( ReadReplica replica ) throws IOException + private static void changeStoreId( ReadReplica replica ) throws IOException { - File neoStoreFile = new File( replica.storeDir(), MetaDataStore.DEFAULT_NAME ); + File neoStoreFile = new File( replica.databaseDirectory(), MetaDataStore.DEFAULT_NAME ); PageCache pageCache = replica.database().getDependencyResolver().resolveDependency( PageCache.class ); MetaDataStore.setRecord( pageCache, neoStoreFile, TIME, System.currentTimeMillis() ); } - private long lastClosedTransactionId( boolean fail, GraphDatabaseFacade db ) + private static long lastClosedTransactionId( boolean fail, GraphDatabaseFacade db ) { try { @@ -584,7 +583,7 @@ public void shouldBeAbleToCopyStoresFromCoreToReadReplica() throws Exception } } - private long versionBy( File raftLogDir, BinaryOperator operator ) throws IOException + private static long versionBy( File raftLogDir, BinaryOperator operator ) throws IOException { try ( FileSystemAbstraction fileSystem = new DefaultFileSystemAbstraction() ) { diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RecoveryIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RecoveryIT.java index f3839973134df..af744a393de2e 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RecoveryIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RecoveryIT.java @@ -60,17 +60,17 @@ public void shouldBeConsistentAfterShutdown() throws Exception fireSomeLoadAtTheCluster( cluster ); - Set storeDirs = cluster.coreMembers().stream().map( CoreClusterMember::storeDir ).collect( toSet() ); + Set storeDirs = cluster.coreMembers().stream().map( CoreClusterMember::databaseDirectory ).collect( toSet() ); assertEventually( "All cores have the same data", - () -> cluster.coreMembers().stream().map( this::dbRepresentation ).collect( toSet() ).size(), + () -> cluster.coreMembers().stream().map( RecoveryIT::dbRepresentation ).collect( toSet() ).size(), equalTo( 1 ), 10, TimeUnit.SECONDS ); // when cluster.shutdown(); // then - storeDirs.forEach( this::assertConsistent ); + storeDirs.forEach( RecoveryIT::assertConsistent ); } @Test @@ -82,7 +82,7 @@ public void singleServerWithinClusterShouldBeConsistentAfterRestart() throws Exc fireSomeLoadAtTheCluster( cluster ); - Set storeDirs = cluster.coreMembers().stream().map( CoreClusterMember::storeDir ).collect( toSet() ); + Set storeDirs = cluster.coreMembers().stream().map( CoreClusterMember::databaseDirectory ).collect( toSet() ); // when for ( int i = 0; i < clusterSize; i++ ) @@ -94,20 +94,20 @@ public void singleServerWithinClusterShouldBeConsistentAfterRestart() throws Exc // then assertEventually( "All cores have the same data", - () -> cluster.coreMembers().stream().map( this::dbRepresentation ).collect( toSet() ).size(), + () -> cluster.coreMembers().stream().map( RecoveryIT::dbRepresentation ).collect( toSet() ).size(), equalTo( 1 ), 10, TimeUnit.SECONDS ); cluster.shutdown(); - storeDirs.forEach( this::assertConsistent ); + storeDirs.forEach( RecoveryIT::assertConsistent ); } - private DbRepresentation dbRepresentation( CoreClusterMember member ) + private static DbRepresentation dbRepresentation( CoreClusterMember member ) { return DbRepresentation.of( member.database() ); } - private void assertConsistent( File storeDir ) + private static void assertConsistent( File storeDir ) { ConsistencyCheckService.Result result; try @@ -123,7 +123,7 @@ private void assertConsistent( File storeDir ) assertTrue( result.isSuccessful() ); } - private void fireSomeLoadAtTheCluster( Cluster cluster ) throws Exception + private static void fireSomeLoadAtTheCluster( Cluster cluster ) throws Exception { for ( int i = 0; i < cluster.numberOfCoreMembersReportedByTopology(); i++ ) { diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RestartIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RestartIT.java index bc0c062f6c5f0..7795ff0260bef 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RestartIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/RestartIT.java @@ -171,7 +171,7 @@ public void readReplicaTest() throws Exception for ( CoreClusterMember core : cluster.coreMembers() ) { ConsistencyCheckService.Result result = new ConsistencyCheckService() - .runFullConsistencyCheck( core.storeDir(), Config.defaults(), ProgressMonitorFactory.NONE, + .runFullConsistencyCheck( core.databaseDirectory(), Config.defaults(), ProgressMonitorFactory.NONE, NullLogProvider.getInstance(), fileSystem, false, new ConsistencyFlags( true, true, true, false ) ); assertTrue( "Inconsistent: " + core, result.isSuccessful() ); @@ -180,7 +180,7 @@ public void readReplicaTest() throws Exception for ( ReadReplica readReplica : cluster.readReplicas() ) { ConsistencyCheckService.Result result = new ConsistencyCheckService() - .runFullConsistencyCheck( readReplica.storeDir(), Config.defaults(), ProgressMonitorFactory.NONE, + .runFullConsistencyCheck( readReplica.databaseDirectory(), Config.defaults(), ProgressMonitorFactory.NONE, NullLogProvider.getInstance(), fileSystem, false, new ConsistencyFlags( true, true, true, false ) ); assertTrue( "Inconsistent: " + readReplica, result.isSuccessful() ); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/TransactionLogRecoveryIT.java b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/TransactionLogRecoveryIT.java index 252a37f666e00..10fedaf65edba 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/TransactionLogRecoveryIT.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/causalclustering/scenarios/TransactionLogRecoveryIT.java @@ -82,7 +82,7 @@ public void coreShouldStartAfterPartialTransactionWriteCrash() throws Exception CoreClusterMember lastWrites = createEmptyNodes( cluster, 10 ); // and writing a partial tx - writePartialTx( core.storeDir() ); + writePartialTx( core.databaseDirectory() ); // then: we should still be able to start core.start(); @@ -105,7 +105,7 @@ public void coreShouldStartWithSeedHavingPartialTransactionWriteCrash() throws E CoreClusterMember lastWrites = createEmptyNodes( cluster, 10 ); // and writing a partial tx - writePartialTx( core.storeDir() ); + writePartialTx( core.databaseDirectory() ); // and deleting the cluster state, making sure a snapshot is required during startup // effectively a seeding scenario -- representing the use of the unbind command on a crashed store @@ -133,7 +133,7 @@ public void readReplicaShouldStartAfterPartialTransactionWriteCrash() throws Exc dataMatchesEventually( lastWrites, cluster.coreMembers() ); // and writing a partial tx - writePartialTx( readReplica.storeDir() ); + writePartialTx( readReplica.databaseDirectory() ); // then: we should still be able to start readReplica.start(); diff --git a/enterprise/causal-clustering/src/test/java/org/neo4j/test/causalclustering/ClusterRule.java b/enterprise/causal-clustering/src/test/java/org/neo4j/test/causalclustering/ClusterRule.java index 84bf091c0d4fd..5abdeae26dd2e 100644 --- a/enterprise/causal-clustering/src/test/java/org/neo4j/test/causalclustering/ClusterRule.java +++ b/enterprise/causal-clustering/src/test/java/org/neo4j/test/causalclustering/ClusterRule.java @@ -31,8 +31,8 @@ import java.util.HashMap; import java.util.Map; import java.util.Optional; -import java.util.concurrent.TimeUnit; import java.util.Set; +import java.util.concurrent.TimeUnit; import java.util.function.IntFunction; import java.util.stream.Collectors; @@ -56,7 +56,7 @@ */ public class ClusterRule extends ExternalResource { - private final TestDirectory testDirectory; + private final TestDirectory testDirectory = TestDirectory.testDirectory(); private File clusterDirectory; private Cluster cluster; @@ -75,7 +75,6 @@ public class ClusterRule extends ExternalResource public ClusterRule() { - this.testDirectory = TestDirectory.testDirectory(); } @Override diff --git a/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/CatchupNewReadReplica.java b/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/CatchupNewReadReplica.java index fc0983266e599..9b7bd67a16b9c 100644 --- a/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/CatchupNewReadReplica.java +++ b/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/CatchupNewReadReplica.java @@ -86,7 +86,7 @@ protected void doWork() cluster.removeReadReplicaWithMemberId( newMemberId ); if ( ex == null && deleteStore ) { - fs.deleteRecursively( readReplica.storeDir() ); + fs.deleteRecursively( readReplica.databaseDirectory() ); } deleteStore = !deleteStore; } @@ -107,7 +107,7 @@ protected void doWork() } } - private Throwable exception( Throwable outer, Throwable inner ) + private static Throwable exception( Throwable outer, Throwable inner ) { if ( outer == null ) { @@ -123,7 +123,7 @@ private Throwable exception( Throwable outer, Throwable inner ) return outer; } - private Supplier startAndRegisterExceptionMonitor( ReadReplica readReplica ) + private static Supplier startAndRegisterExceptionMonitor( ReadReplica readReplica ) { readReplica.start(); @@ -167,7 +167,7 @@ private long txId( ClusterMember member, boolean fail ) } } - private long errorValueOrThrow( boolean fail, Throwable error ) + private static long errorValueOrThrow( boolean fail, Throwable error ) { if ( fail ) { diff --git a/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/ConsistencyCheck.java b/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/ConsistencyCheck.java index 81843191d5aa7..085491405d214 100644 --- a/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/ConsistencyCheck.java +++ b/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/ConsistencyCheck.java @@ -49,7 +49,7 @@ protected void validate() throws Exception for ( ClusterMember member : members ) { - String storeDir = member.storeDir().getAbsolutePath(); + String storeDir = member.databaseDirectory().getAbsolutePath(); ConsistencyCheckService.Result result = runConsistencyCheckTool( new String[]{storeDir}, System.out, System.err ); if ( !result.isSuccessful() ) { diff --git a/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/IdReuse.java b/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/IdReuse.java index 3fa012865b749..23ce0ef8071e4 100644 --- a/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/IdReuse.java +++ b/stresstests/src/test/java/org/neo4j/causalclustering/stresstests/IdReuse.java @@ -111,7 +111,7 @@ protected void validate() void visitAllIds( ClusterMember member, Consumer idConsumer ) { - String storeDir = member.storeDir().getAbsolutePath(); + String storeDir = member.databaseDirectory().getAbsolutePath(); File idFile = new File( storeDir, MetaDataStore.DEFAULT_NAME + NODE_STORE_NAME + ".id" ); IdContainer idContainer = new IdContainer( fs, idFile, 1024, true ); idContainer.init(); diff --git a/stresstests/src/test/java/org/neo4j/index/population/LucenePartitionedIndexStressTesting.java b/stresstests/src/test/java/org/neo4j/index/population/LucenePartitionedIndexStressTesting.java index 1b27b6cdd19b8..855d061862d5b 100644 --- a/stresstests/src/test/java/org/neo4j/index/population/LucenePartitionedIndexStressTesting.java +++ b/stresstests/src/test/java/org/neo4j/index/population/LucenePartitionedIndexStressTesting.java @@ -181,7 +181,7 @@ private void findLastTrackedNodesByLabelAndProperties( GraphDatabaseService db, } } - private File prepareStoreDir() throws IOException + private static File prepareStoreDir() throws IOException { Path storeDirPath = Paths.get( WORK_DIRECTORY ).resolve( Paths.get( "storeDir" ) ); File storeDirectory = storeDirPath.toFile();