diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/EnterpriseCoreEditionModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/EnterpriseCoreEditionModule.java index afe987ebe7ebb..663db6950ca39 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/EnterpriseCoreEditionModule.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/EnterpriseCoreEditionModule.java @@ -35,8 +35,8 @@ import org.neo4j.coreedge.core.consensus.RaftMessages; import org.neo4j.coreedge.core.consensus.roles.Role; import org.neo4j.coreedge.core.server.CoreServerModule; +import org.neo4j.coreedge.core.state.ClusteringModule; import org.neo4j.coreedge.core.state.machines.CoreStateMachinesModule; -import org.neo4j.coreedge.core.state.storage.MemberIdStorage; import org.neo4j.coreedge.discovery.CoreTopologyService; import org.neo4j.coreedge.discovery.DiscoveryServiceFactory; import org.neo4j.coreedge.discovery.procedures.AcquireEndpointsProcedure; @@ -95,10 +95,9 @@ public class EnterpriseCoreEditionModule extends EditionModule { public static final String CLUSTER_STATE_DIRECTORY_NAME = "cluster-state"; - public static final String CORE_MEMBER_ID_NAME = "core-member-id"; private final ConsensusModule consensusModule; - private final CoreTopologyService discoveryService; + private final CoreTopologyService topologyService; private final LogProvider logProvider; public enum RaftLogImplementation @@ -111,9 +110,9 @@ public void registerProcedures( Procedures procedures ) { try { - procedures.register( new DiscoverEndpointAcquisitionServersProcedure( discoveryService, logProvider ) ); - procedures.register( new AcquireEndpointsProcedure( discoveryService, consensusModule.raftMachine(), logProvider ) ); - procedures.register( new ClusterOverviewProcedure( discoveryService, consensusModule.raftMachine(), logProvider ) ); + procedures.register( new DiscoverEndpointAcquisitionServersProcedure( topologyService, logProvider ) ); + procedures.register( new AcquireEndpointsProcedure( topologyService, consensusModule.raftMachine(), logProvider ) ); + procedures.register( new ClusterOverviewProcedure( topologyService, consensusModule.raftMachine(), logProvider ) ); procedures.register( new CoreRoleProcedure( consensusModule.raftMachine()) ); } catch ( ProcedureException e ) @@ -147,20 +146,10 @@ public void registerProcedures( Procedures procedures ) life.add( localDatabase ); - MemberIdStorage memberIdStorage = new MemberIdStorage( fileSystem, clusterStateDirectory, CORE_MEMBER_ID_NAME, new MemberId.Marshal(), logProvider ); - MemberId myself; - try - { - myself = memberIdStorage.readState(); - } - catch ( IOException e ) - { - throw new RuntimeException( e ); - } - - discoveryService = discoveryServiceFactory.coreDiscoveryService( config, myself, logProvider ); + IdentityModule identityModule = new IdentityModule( platformModule, clusterStateDirectory ); - life.add( dependencies.satisfyDependency( discoveryService ) ); + ClusteringModule clusteringModule = new ClusteringModule( discoveryServiceFactory, identityModule.myself(), platformModule ); + topologyService = clusteringModule.topologyService(); long logThresholdMillis = config.get( CoreEdgeClusterSettings.unknown_address_logging_throttle ); int maxQueueSize = config.get( CoreEdgeClusterSettings.outgoing_queue_size ); @@ -170,20 +159,20 @@ public void registerProcedures( Procedures procedures ) logProvider, platformModule.monitors, maxQueueSize ); life.add( raftSender ); - final MessageLogger messageLogger = createMessageLogger( config, life, myself ); + final MessageLogger messageLogger = createMessageLogger( config, life, identityModule.myself() ); Outbound raftOutbound = new LoggingOutbound<>( - new RaftOutbound( discoveryService, raftSender, localDatabase, logProvider, logThresholdMillis ), - myself, messageLogger ); + new RaftOutbound( topologyService, raftSender, localDatabase, logProvider, logThresholdMillis ), + identityModule.myself(), messageLogger ); - consensusModule = new ConsensusModule( myself, platformModule, raftOutbound, clusterStateDirectory, discoveryService ); + consensusModule = new ConsensusModule( identityModule.myself(), platformModule, raftOutbound, clusterStateDirectory, topologyService ); dependencies.satisfyDependency( consensusModule.raftMachine() ); - ReplicationModule replicationModule = new ReplicationModule( myself, platformModule, config, consensusModule, + ReplicationModule replicationModule = new ReplicationModule( identityModule.myself(), platformModule, config, consensusModule, raftOutbound, clusterStateDirectory, fileSystem, logProvider ); - CoreStateMachinesModule coreStateMachinesModule = new CoreStateMachinesModule( myself, platformModule, clusterStateDirectory, config, + CoreStateMachinesModule coreStateMachinesModule = new CoreStateMachinesModule( identityModule.myself(), platformModule, clusterStateDirectory, config, replicationModule.getReplicator(), consensusModule.raftMachine(), dependencies, localDatabase ); this.idGeneratorFactory = coreStateMachinesModule.idGeneratorFactory; @@ -194,8 +183,8 @@ public void registerProcedures( Procedures procedures ) this.lockManager = coreStateMachinesModule.lockManager; this.commitProcessFactory = coreStateMachinesModule.commitProcessFactory; - CoreServerModule coreServerModule = new CoreServerModule( myself, platformModule, consensusModule, - coreStateMachinesModule, replicationModule, clusterStateDirectory, discoveryService, localDatabase, + CoreServerModule coreServerModule = new CoreServerModule( identityModule.myself(), platformModule, consensusModule, + coreStateMachinesModule, replicationModule, clusterStateDirectory, topologyService, localDatabase, messageLogger ); editionInvariants( platformModule, dependencies, config, logging, life ); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/IdentityModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/IdentityModule.java new file mode 100644 index 0000000000000..2292c97aa912c --- /dev/null +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/IdentityModule.java @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2002-2016 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.neo4j.coreedge.core; + +import java.io.File; +import java.io.IOException; +import java.util.UUID; + +import org.neo4j.coreedge.core.state.storage.SimpleStorage; +import org.neo4j.coreedge.identity.MemberId; +import org.neo4j.io.fs.FileSystemAbstraction; +import org.neo4j.kernel.impl.factory.PlatformModule; +import org.neo4j.logging.Log; +import org.neo4j.logging.LogProvider; + +public class IdentityModule +{ + public static final String CORE_MEMBER_ID_NAME = "core-member-id"; + private MemberId myself; + + IdentityModule( PlatformModule platformModule, File clusterStateDirectory ) + { + FileSystemAbstraction fileSystem = platformModule.fileSystem; + LogProvider logProvider = platformModule.logging.getInternalLogProvider(); + + Log log = logProvider.getLog( getClass() ); + + SimpleStorage memberIdStorage = new SimpleStorage<>( fileSystem, clusterStateDirectory, + CORE_MEMBER_ID_NAME, new MemberId.Marshal(), logProvider ); + + try + { + if ( memberIdStorage.exists() ) + { + myself = memberIdStorage.readState(); + if ( myself == null ) + { + throw new RuntimeException( "I was null" ); + } + } + else + { + UUID uuid = UUID.randomUUID(); + myself = new MemberId( uuid ); + memberIdStorage.writeState( myself ); + + log.info( String.format( "Generated new id: %s (%s)", myself, uuid ) ); + } + } + catch ( IOException e ) + { + throw new RuntimeException( e ); + } + } + + MemberId myself() + { + return myself; + } +} diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/ClusteringModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/ClusteringModule.java new file mode 100644 index 0000000000000..58487cf1a77ee --- /dev/null +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/ClusteringModule.java @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2002-2016 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package org.neo4j.coreedge.core.state; + +import org.neo4j.coreedge.discovery.CoreTopologyService; +import org.neo4j.coreedge.discovery.DiscoveryServiceFactory; +import org.neo4j.coreedge.identity.MemberId; +import org.neo4j.kernel.configuration.Config; +import org.neo4j.kernel.impl.factory.PlatformModule; +import org.neo4j.kernel.impl.util.Dependencies; +import org.neo4j.kernel.lifecycle.LifeSupport; +import org.neo4j.logging.LogProvider; + +public class ClusteringModule +{ + private final CoreTopologyService topologyService; + + public ClusteringModule( DiscoveryServiceFactory discoveryServiceFactory, MemberId myself, PlatformModule platformModule ) + { + LifeSupport life = platformModule.life; + Config config = platformModule.config; + LogProvider logProvider = platformModule.logging.getInternalLogProvider(); + Dependencies dependencies = platformModule.dependencies; + + topologyService = discoveryServiceFactory.coreTopologyService( config, myself, logProvider ); + life.add( topologyService ); + + dependencies.satisfyDependency( topologyService ); // for tests + } + + public CoreTopologyService topologyService() + { + return topologyService; + } +} diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java index eec70f62e3812..eff53fce52e40 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java @@ -30,7 +30,7 @@ import org.neo4j.coreedge.core.state.machines.id.IdAllocationState; import org.neo4j.coreedge.core.state.machines.locks.ReplicatedLockTokenState; import org.neo4j.coreedge.core.state.storage.DurableStateStorage; -import org.neo4j.coreedge.core.state.storage.MemberIdStorage; +import org.neo4j.coreedge.core.state.storage.SimpleStorage; import org.neo4j.coreedge.core.state.storage.StateMarshal; import org.neo4j.coreedge.identity.MemberId; import org.neo4j.coreedge.identity.MemberId.Marshal; @@ -42,7 +42,7 @@ import static org.neo4j.coreedge.ReplicationModule.LAST_FLUSHED_NAME; import static org.neo4j.coreedge.ReplicationModule.SESSION_TRACKER_NAME; import static org.neo4j.coreedge.core.EnterpriseCoreEditionModule.CLUSTER_STATE_DIRECTORY_NAME; -import static org.neo4j.coreedge.core.EnterpriseCoreEditionModule.CORE_MEMBER_ID_NAME; +import static org.neo4j.coreedge.core.IdentityModule.CORE_MEMBER_ID_NAME; import static org.neo4j.coreedge.core.consensus.ConsensusModule.RAFT_MEMBERSHIP_NAME; import static org.neo4j.coreedge.core.consensus.ConsensusModule.RAFT_TERM_NAME; import static org.neo4j.coreedge.core.consensus.ConsensusModule.RAFT_VOTE_NAME; @@ -84,7 +84,7 @@ public static void main( String[] args ) throws IOException void dump() throws IOException { - MemberIdStorage memberIdStorage = new MemberIdStorage( fs, clusterStateDirectory, CORE_MEMBER_ID_NAME, + SimpleStorage memberIdStorage = new SimpleStorage<>( fs, clusterStateDirectory, CORE_MEMBER_ID_NAME, new Marshal(), NullLogProvider.getInstance() ); if ( memberIdStorage.exists() ) { diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/storage/MemberIdStorage.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/storage/SimpleStorage.java similarity index 64% rename from enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/storage/MemberIdStorage.java rename to enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/storage/SimpleStorage.java index 3fb7ee27fe56a..c194cbd835045 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/storage/MemberIdStorage.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/storage/SimpleStorage.java @@ -21,10 +21,9 @@ import java.io.File; import java.io.IOException; -import java.util.UUID; -import org.neo4j.coreedge.identity.MemberId; import org.neo4j.coreedge.messaging.EndOfStreamException; +import org.neo4j.coreedge.messaging.marshalling.ChannelMarshal; import org.neo4j.io.fs.FileSystemAbstraction; import org.neo4j.kernel.impl.transaction.log.FlushableChannel; import org.neo4j.kernel.impl.transaction.log.PhysicalFlushableChannel; @@ -33,15 +32,15 @@ import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; -public class MemberIdStorage +public class SimpleStorage { private final FileSystemAbstraction fileSystem; - private final MemberId.Marshal marshal; + private final ChannelMarshal marshal; private final File file; private Log log; - public MemberIdStorage( FileSystemAbstraction fileSystem, File directory, String name, - MemberId.Marshal marshal, LogProvider logProvider ) + public SimpleStorage( FileSystemAbstraction fileSystem, File directory, String name, + ChannelMarshal marshal, LogProvider logProvider ) { this.fileSystem = fileSystem; this.log = logProvider.getLog( getClass() ); @@ -54,38 +53,27 @@ public boolean exists() return fileSystem.fileExists( file ); } - public MemberId readState() throws IOException + public T readState() throws IOException { - if ( exists() ) + try ( ReadableClosableChannel channel = new ReadAheadChannel<>( fileSystem.open( file, "r" ) ) ) { - try ( ReadableClosableChannel channel = new ReadAheadChannel<>( fileSystem.open( file, "r" ) ) ) - { - MemberId memberId = marshal.unmarshal( channel ); - if ( memberId != null ) - { - return memberId; - } - } - catch ( EndOfStreamException e ) - { - log.error( "End of stream reached" ); - } + return marshal.unmarshal( channel ); } - else + catch ( EndOfStreamException e ) { - log.warn( "File does not exist" ); + log.error( "End of stream reached: " + file ); + throw new IOException( e ); } + } + public void writeState( T state ) throws IOException + { fileSystem.mkdirs( file.getParentFile() ); fileSystem.deleteFile( file ); - UUID uuid = UUID.randomUUID(); - MemberId memberId = new MemberId( uuid ); - log.info( String.format( "Generated new id: %s (%s)", memberId, uuid ) ); try ( FlushableChannel channel = new PhysicalFlushableChannel( fileSystem.create( file ) ) ) { - marshal.marshal( memberId, channel ); + marshal.marshal( state, channel ); } - return memberId; } } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/DiscoveryServiceFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/DiscoveryServiceFactory.java index 57d3223477235..b98b008631f41 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/DiscoveryServiceFactory.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/DiscoveryServiceFactory.java @@ -27,7 +27,7 @@ public interface DiscoveryServiceFactory { - CoreTopologyService coreDiscoveryService( Config config, MemberId myself, LogProvider logProvider ); + CoreTopologyService coreTopologyService( Config config, MemberId myself, LogProvider logProvider ); TopologyService edgeDiscoveryService( Config config, AdvertisedSocketAddress boltAddress, LogProvider logProvider, DelayedRenewableTimeoutService timeoutService, long edgeTimeToLiveTimeout, long edgeRefreshRate ); } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java index 8b1b2429c76ed..bd17ca4080a93 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/discovery/HazelcastDiscoveryServiceFactory.java @@ -29,7 +29,7 @@ public class HazelcastDiscoveryServiceFactory implements DiscoveryServiceFactory { @Override - public CoreTopologyService coreDiscoveryService( Config config, MemberId myself, LogProvider logProvider ) + public CoreTopologyService coreTopologyService( Config config, MemberId myself, LogProvider logProvider ) { makeHazelcastSilent( config ); hazelcastShouldNotPhoneHome(); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/identity/MemberId.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/identity/MemberId.java index ea8502c126f62..8da2f9e947d64 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/identity/MemberId.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/identity/MemberId.java @@ -81,7 +81,7 @@ public int hashCode() * │leastSignificantBits 8 bytes│ * └──────────────────────────────┘ */ - public static class MemberIdMarshal extends SafeStateMarshal + public static class Marshal extends SafeStateMarshal { @Override public void marshal( MemberId memberId, WritableChannel channel ) throws IOException diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/DumpClusterStateTest.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/DumpClusterStateTest.java index 72b5b0ae8fe3f..1ee9f2dede2c9 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/DumpClusterStateTest.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/DumpClusterStateTest.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.IOException; import java.io.PrintStream; +import java.util.UUID; import org.neo4j.coreedge.core.consensus.membership.RaftMembershipState; import org.neo4j.coreedge.core.consensus.term.TermState; @@ -34,7 +35,7 @@ import org.neo4j.coreedge.core.state.machines.id.IdAllocationState; import org.neo4j.coreedge.core.state.machines.locks.ReplicatedLockTokenState; import org.neo4j.coreedge.core.state.storage.DurableStateStorage; -import org.neo4j.coreedge.core.state.storage.MemberIdStorage; +import org.neo4j.coreedge.core.state.storage.SimpleStorage; import org.neo4j.coreedge.core.state.storage.StateMarshal; import org.neo4j.coreedge.identity.MemberId; import org.neo4j.kernel.lifecycle.Lifespan; @@ -44,7 +45,7 @@ import static org.junit.Assert.assertEquals; import static org.neo4j.coreedge.ReplicationModule.LAST_FLUSHED_NAME; import static org.neo4j.coreedge.ReplicationModule.SESSION_TRACKER_NAME; -import static org.neo4j.coreedge.core.EnterpriseCoreEditionModule.CORE_MEMBER_ID_NAME; +import static org.neo4j.coreedge.core.IdentityModule.CORE_MEMBER_ID_NAME; import static org.neo4j.coreedge.core.consensus.ConsensusModule.RAFT_MEMBERSHIP_NAME; import static org.neo4j.coreedge.core.consensus.ConsensusModule.RAFT_TERM_NAME; import static org.neo4j.coreedge.core.consensus.ConsensusModule.RAFT_VOTE_NAME; @@ -75,8 +76,8 @@ public void shouldDumpClusterState() throws Exception private void createStates() throws IOException { - MemberIdStorage memberIdStorage = new MemberIdStorage( fsa.get(), clusterStateDirectory, CORE_MEMBER_ID_NAME, new MemberId.Marshal(), NullLogProvider.getInstance() ); - memberIdStorage.readState(); + SimpleStorage memberIdStorage = new SimpleStorage<>( fsa.get(), clusterStateDirectory, CORE_MEMBER_ID_NAME, new MemberId.Marshal(), NullLogProvider.getInstance() ); + memberIdStorage.writeState( new MemberId( UUID.randomUUID() ) ); createDurableState( LAST_FLUSHED_NAME, new LongIndexMarshal() ); createDurableState( LOCK_TOKEN_NAME, new ReplicatedLockTokenState.Marshal( new MemberId.Marshal() ) ); diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/storage/MemberIdStorageTest.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/storage/SimpleStorageTest.java similarity index 52% rename from enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/storage/MemberIdStorageTest.java rename to enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/storage/SimpleStorageTest.java index d59a9d074bf67..84a11d5d16db8 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/storage/MemberIdStorageTest.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/core/state/storage/SimpleStorageTest.java @@ -23,6 +23,7 @@ import org.junit.Test; import java.io.File; +import java.util.UUID; import org.neo4j.coreedge.identity.MemberId; import org.neo4j.logging.NullLogProvider; @@ -30,39 +31,24 @@ import static org.junit.Assert.*; -public class MemberIdStorageTest +public class SimpleStorageTest { @Rule public EphemeralFileSystemRule fsa = new EphemeralFileSystemRule(); @Test - public void shouldInitializeWithUniqueMemberId() throws Exception + public void shouldWriteAndReadState() throws Exception { // given - MemberIdStorage storageA = new MemberIdStorage( fsa.get(), new File( "state-dir" ), "member-id-a", new MemberId.Marshal(), NullLogProvider.getInstance() ); - MemberIdStorage storageB = new MemberIdStorage( fsa.get(), new File( "state-dir" ), "member-id-b", new MemberId.Marshal(), NullLogProvider.getInstance() ); + SimpleStorage storage = new SimpleStorage<>( fsa.get(), new File( "state-dir" ), "member-id-a", new MemberId.Marshal(), NullLogProvider.getInstance() ); // when - MemberId idA = storageA.readState(); - MemberId idB = storageB.readState(); + MemberId idA = new MemberId( UUID.randomUUID() ); + storage.writeState( idA ); + MemberId idB = storage.readState(); // then - assertNotEquals( idA.getUuid(), idB.getUuid() ); - assertNotEquals( idA, idB ); - } - - @Test - public void shouldReadInitializedStateOnSubsequentInvocation() throws Exception - { - // given - MemberIdStorage storage = new MemberIdStorage( fsa.get(), new File( "state-dir" ), "member-id", new MemberId.Marshal(), NullLogProvider.getInstance() ); - MemberId memberIdA = storage.readState(); - - // when - MemberId memberIdB = storage.readState(); - - // then - assertEquals( memberIdA, memberIdB ); - assertEquals( memberIdA.getUuid(), memberIdB.getUuid() ); + assertEquals( idA.getUuid(), idB.getUuid() ); + assertEquals( idA, idB ); } } diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/SharedDiscoveryService.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/SharedDiscoveryService.java index bc4a7d3490448..67b9332c3c247 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/SharedDiscoveryService.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/discovery/SharedDiscoveryService.java @@ -49,7 +49,7 @@ public class SharedDiscoveryService implements DiscoveryServiceFactory private final Condition enoughMembers = lock.newCondition(); @Override - public CoreTopologyService coreDiscoveryService( Config config, MemberId myself, LogProvider logProvider ) + public CoreTopologyService coreTopologyService( Config config, MemberId myself, LogProvider logProvider ) { return new SharedDiscoveryCoreClient( this, myself, logProvider, config ); }