protected ClusteringModule getClusteringModule( PlatformModule platformModule, DiscoveryServiceFactory discoveryServiceFactory, ClusterStateDirectory clusterStateDirectory, IdentityModule identityModule, Dependencies dependencies ) { return new ClusteringModule( discoveryServiceFactory, identityModule.myself(), platformModule, clusterStateDirectory.get() ); }
logProvider ); IdentityModule identityModule = new IdentityModule( platformModule, clusterStateDirectory.get() ); this.clientInstalledProtocols = raftSender::installedProtocols; final MessageLogger<MemberId> messageLogger = createMessageLogger( config, life, identityModule.myself() ); identityModule.myself(), messageLogger ); consensusModule = new ConsensusModule( identityModule.myself(), platformModule, loggingOutbound, clusterStateDirectory.get(), topologyService ); replicationModule = new ReplicationModule( identityModule.myself(), platformModule, config, consensusModule, loggingOutbound, clusterStateDirectory.get(), fileSystem, logProvider ); coreStateMachinesModule = new CoreStateMachinesModule( identityModule.myself(), platformModule, clusterStateDirectory.get(), config, replicationModule.getReplicator(), consensusModule.raftMachine(), dependencies, localDatabase ); defaultStrategy.inject( topologyService, config, logProvider, identityModule.myself() ); UpstreamDatabaseStrategySelector catchupStrategySelector = createUpstreamDatabaseStrategySelector( identityModule.myself(), config, logProvider, topologyService, defaultStrategy );
private MembershipWaiterLifecycle createMembershipWaiterLifecycle() { long electionTimeout = config.get( CausalClusteringSettings.leader_election_timeout ).toMillis(); MembershipWaiter membershipWaiter = new MembershipWaiter( identityModule.myself(), jobScheduler, dbHealthSupplier, electionTimeout * 4, logProvider ); long joinCatchupTimeout = config.get( CausalClusteringSettings.join_catch_up_timeout ).toMillis(); return new MembershipWaiterLifecycle( membershipWaiter, joinCatchupTimeout, consensusModule.raftMachine(), logProvider ); }
protected ClusteringModule getClusteringModule( PlatformModule platformModule, DiscoveryServiceFactory discoveryServiceFactory, ClusterStateDirectory clusterStateDirectory, IdentityModule identityModule, Dependencies dependencies ) { SslPolicyLoader sslPolicyFactory = dependencies.satisfyDependency( SslPolicyLoader.create( config, logProvider ) ); SslPolicy clusterSslPolicy = sslPolicyFactory.getPolicy( config.get( CausalClusteringSettings.ssl_policy ) ); if ( discoveryServiceFactory instanceof SslHazelcastDiscoveryServiceFactory ) { ((SslHazelcastDiscoveryServiceFactory) discoveryServiceFactory).setSslPolicy( clusterSslPolicy ); } return new ClusteringModule( discoveryServiceFactory, identityModule.myself(), platformModule, clusterStateDirectory.get() ); }
private void createRaftServer( CoreServerModule coreServerModule, LifecycleMessageHandler<ReceivedInstantClusterIdAwareMessage<?>> messageHandlerChain, ChannelInboundHandler installedProtocolsHandler ) { ApplicationProtocolRepository applicationProtocolRepository = new ApplicationProtocolRepository( Protocol.ApplicationProtocols.values(), supportedApplicationProtocol ); ModifierProtocolRepository modifierProtocolRepository = new ModifierProtocolRepository( Protocol.ModifierProtocols.values(), supportedModifierProtocols ); RaftMessageNettyHandler nettyHandler = new RaftMessageNettyHandler( logProvider ); RaftProtocolServerInstaller.Factory raftProtocolServerInstaller = new RaftProtocolServerInstaller.Factory( nettyHandler, pipelineBuilderFactory, logProvider ); ProtocolInstallerRepository<ProtocolInstaller.Orientation.Server> protocolInstallerRepository = new ProtocolInstallerRepository<>( singletonList( raftProtocolServerInstaller ), ModifierProtocolInstaller.allServerInstallers ); HandshakeServerInitializer handshakeServerInitializer = new HandshakeServerInitializer( applicationProtocolRepository, modifierProtocolRepository, protocolInstallerRepository, pipelineBuilderFactory, logProvider ); ListenSocketAddress raftListenAddress = platformModule.config.get( CausalClusteringSettings.raft_listen_address ); Server raftServer = new Server( handshakeServerInitializer, installedProtocolsHandler, logProvider, platformModule.logging.getUserLogProvider(), raftListenAddress, RAFT_SERVER_NAME ); platformModule.dependencies.satisfyDependency( raftServer ); // resolved in tests LoggingInbound<ReceivedInstantClusterIdAwareMessage<?>> loggingRaftInbound = new LoggingInbound<>( nettyHandler, messageLogger, identityModule.myself() ); loggingRaftInbound.registerHandler( messageHandlerChain ); platformModule.life.add( raftServer ); // must start before core state so that it can trigger snapshot downloads when necessary platformModule.life.add( coreServerModule.createCoreLife( messageHandlerChain ) ); platformModule.life.add( coreServerModule.catchupServer() ); // must start last and stop first, since it handles external requests coreServerModule.backupServer().ifPresent( platformModule.life::add ); platformModule.life.add( coreServerModule.downloadService() ); }