示例#1
0
        public ClusteringModule(DiscoveryServiceFactory discoveryServiceFactory, MemberId myself, PlatformModule platformModule, File clusterStateDirectory, DatabaseLayout databaseLayout)
        {
            LifeSupport           life                  = platformModule.Life;
            Config                config                = platformModule.Config;
            LogProvider           logProvider           = platformModule.Logging.InternalLogProvider;
            LogProvider           userLogProvider       = platformModule.Logging.UserLogProvider;
            Dependencies          dependencies          = platformModule.Dependencies;
            Monitors              monitors              = platformModule.Monitors;
            FileSystemAbstraction fileSystem            = platformModule.FileSystem;
            RemoteMembersResolver remoteMembersResolver = chooseResolver(config, platformModule.Logging);

            _topologyService = discoveryServiceFactory.CoreTopologyService(config, myself, platformModule.JobScheduler, logProvider, userLogProvider, remoteMembersResolver, ResolveStrategy(config, logProvider), monitors);

            life.Add(_topologyService);

            dependencies.SatisfyDependency(_topologyService);                 // for tests

            CoreBootstrapper coreBootstrapper = new CoreBootstrapper(databaseLayout, platformModule.PageCache, fileSystem, config, logProvider, platformModule.Monitors);

            SimpleStorage <ClusterId> clusterIdStorage = new SimpleFileStorage <ClusterId>(fileSystem, clusterStateDirectory, CLUSTER_ID_NAME, new ClusterId.Marshal(), logProvider);

            SimpleStorage <DatabaseName> dbNameStorage = new SimpleFileStorage <DatabaseName>(fileSystem, clusterStateDirectory, DB_NAME, new DatabaseName.Marshal(), logProvider);

            string dbName           = config.Get(CausalClusteringSettings.database);
            int    minimumCoreHosts = config.Get(CausalClusteringSettings.minimum_core_cluster_size_at_formation);

            Duration clusterBindingTimeout = config.Get(CausalClusteringSettings.cluster_binding_timeout);

            _clusterBinder = new ClusterBinder(clusterIdStorage, dbNameStorage, _topologyService, Clocks.systemClock(), () => sleep(100), clusterBindingTimeout, coreBootstrapper, dbName, minimumCoreHosts, platformModule.Monitors);
        }
示例#2
0
        internal IdentityModule(PlatformModule platformModule, File clusterStateDirectory)
        {
            FileSystemAbstraction fileSystem  = platformModule.FileSystem;
            LogProvider           logProvider = platformModule.Logging.InternalLogProvider;

            Log log = logProvider.getLog(this.GetType());

            SimpleStorage <MemberId> memberIdStorage = new SimpleFileStorage <MemberId>(fileSystem, clusterStateDirectory, CORE_MEMBER_ID_NAME, new MemberId.Marshal(), logProvider);

            try
            {
                if (memberIdStorage.Exists())
                {
                    _myself = memberIdStorage.ReadState();
                    if (_myself == null)
                    {
                        throw new Exception("I was null");
                    }
                }
                else
                {
                    System.Guid uuid = System.Guid.randomUUID();
                    _myself = new MemberId(uuid);
                    memberIdStorage.WriteState(_myself);

                    log.Info(string.Format("Generated new id: {0} ({1})", _myself, uuid));
                }
            }
            catch (IOException e)
            {
                throw new Exception(e);
            }

            platformModule.JobScheduler.TopLevelGroupName = "Core " + _myself;
        }
示例#3
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void createStates() throws java.io.IOException
        private void CreateStates()
        {
            SimpleStorage <MemberId> memberIdStorage = new SimpleFileStorage <MemberId>(Fsa.get(), _clusterStateDirectory.get(), CORE_MEMBER_ID_NAME, new MemberId.Marshal(), NullLogProvider.Instance);

            memberIdStorage.WriteState(new MemberId(System.Guid.randomUUID()));

            CreateDurableState(LAST_FLUSHED_NAME, new LongIndexMarshal());
            CreateDurableState(LOCK_TOKEN_NAME, new ReplicatedLockTokenState.Marshal(new MemberId.Marshal()));
            CreateDurableState(ID_ALLOCATION_NAME, new IdAllocationState.Marshal());
            CreateDurableState(SESSION_TRACKER_NAME, new GlobalSessionTrackerState.Marshal(new MemberId.Marshal()));

            /* raft state */
            CreateDurableState(RAFT_MEMBERSHIP_NAME, new RaftMembershipState.Marshal());
            CreateDurableState(RAFT_TERM_NAME, new TermState.Marshal());
            CreateDurableState(RAFT_VOTE_NAME, new VoteState.Marshal(new MemberId.Marshal()));
        }
示例#4
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: void dump() throws java.io.IOException
        internal virtual void Dump()
        {
            SimpleStorage <MemberId> memberIdStorage = new SimpleFileStorage <MemberId>(_fs, _clusterStateDirectory, CORE_MEMBER_ID_NAME, new MemberId.Marshal(), NullLogProvider.Instance);

            if (memberIdStorage.Exists())
            {
                MemberId memberId = memberIdStorage.ReadState();
                @out.println(CORE_MEMBER_ID_NAME + ": " + memberId);
            }

            DumpState(LAST_FLUSHED_NAME, new LongIndexMarshal());
            DumpState(LOCK_TOKEN_NAME, new ReplicatedLockTokenState.Marshal(new MemberId.Marshal()));
            DumpState(ID_ALLOCATION_NAME, new IdAllocationState.Marshal());
            DumpState(SESSION_TRACKER_NAME, new GlobalSessionTrackerState.Marshal(new MemberId.Marshal()));

            /* raft state */
            DumpState(RAFT_MEMBERSHIP_NAME, new RaftMembershipState.Marshal());
            DumpState(RAFT_TERM_NAME, new TermState.Marshal());
            DumpState(RAFT_VOTE_NAME, new VoteState.Marshal(new MemberId.Marshal()));
        }
示例#5
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: private void changeClusterId(org.neo4j.causalclustering.discovery.CoreClusterMember coreMember) throws java.io.IOException
        private void ChangeClusterId(CoreClusterMember coreMember)
        {
            SimpleStorage <ClusterId> clusterIdStorage = new SimpleFileStorage <ClusterId>(_fs, coreMember.ClusterStateDirectory(), CLUSTER_ID_NAME, new ClusterId.Marshal(), NullLogProvider.Instance);

            clusterIdStorage.WriteState(new ClusterId(System.Guid.randomUUID()));
        }