コード例 #1
0
        internal FakeTopologyService(ICollection <MemberId> cores, ICollection <MemberId> replicas, MemberId myself, RoleInfo myselfRole)
        {
            this._myself = myself;
            _clusterId   = new ClusterId(System.Guid.randomUUID());
            _roles       = new Dictionary <MemberId, RoleInfo>();
            _coreMembers = new Dictionary <MemberId, CoreServerInfo>();

            foreach (MemberId coreMemberId in cores)
            {
                CoreServerInfo coreServerInfo = coreServerInfo(_dbName);
                _coreMembers[coreMemberId] = coreServerInfo;
                _roles[coreMemberId]       = RoleInfo.FOLLOWER;
            }

            _replicaMembers = new Dictionary <MemberId, ReadReplicaInfo>();
            foreach (MemberId replicaMemberId in replicas)
            {
                ReadReplicaInfo readReplicaInfo = readReplicaInfo(_dbName);
                _replicaMembers[replicaMemberId] = readReplicaInfo;
                _roles[replicaMemberId]          = RoleInfo.READ_REPLICA;
            }

            if (RoleInfo.READ_REPLICA.Equals(myselfRole))
            {
                _replicaMembers[myself] = ReadReplicaInfo(_dbName);
                _roles[myself]          = RoleInfo.READ_REPLICA;
            }
            else
            {
                _coreMembers[myself] = CoreServerInfo(_dbName);
                _roles[myself]       = RoleInfo.FOLLOWER;
            }
            _roles[myself] = myselfRole;
        }
コード例 #2
0
        private static ReadReplicaInfo ReadReplicaInfo(params string[] groupNames)
        {
            ClientConnectorAddresses clientConnectorAddresses = new ClientConnectorAddresses(Collections.emptyList());
            AdvertisedSocketAddress  catchupServerAddress     = new AdvertisedSocketAddress("hostname", 2468);
            ISet <string>            groups          = new HashSet <string>(Arrays.asList(groupNames));
            ReadReplicaInfo          readReplicaInfo = new ReadReplicaInfo(clientConnectorAddresses, catchupServerAddress, groups, "dbName");

            return(readReplicaInfo);
        }
コード例 #3
0
        internal static ReadReplicaTopology FakeReadReplicaTopology(IList <string> wanted, MemberId[] memberIds, IList <string> unwanted, int unwantedNumber)
        {
            IDictionary <MemberId, ReadReplicaInfo> readReplicas = new Dictionary <MemberId, ReadReplicaInfo>();

            int offset = 0;

            foreach (MemberId memberId in memberIds)
            {
                readReplicas[memberId] = new ReadReplicaInfo(new ClientConnectorAddresses(singletonList(new ClientConnectorAddresses.ConnectorUri(ClientConnectorAddresses.Scheme.bolt, new AdvertisedSocketAddress("localhost", 11000 + offset)))), new AdvertisedSocketAddress("localhost", 10000 + offset), new HashSet <string>(wanted), "default");

                offset++;
            }

            for (int i = 0; i < unwantedNumber; i++)
            {
                readReplicas[new MemberId(System.Guid.randomUUID())] = new ReadReplicaInfo(new ClientConnectorAddresses(singletonList(new ClientConnectorAddresses.ConnectorUri(ClientConnectorAddresses.Scheme.bolt, new AdvertisedSocketAddress("localhost", 11000 + offset)))), new AdvertisedSocketAddress("localhost", 10000 + offset), new HashSet <string>(unwanted), "default");

                offset++;
            }

            return(new ReadReplicaTopology(readReplicas));
        }
コード例 #4
0
        public override RawIterator <object[], ProcedureException> Apply(Context ctx, object[] input, ResourceTracker resourceTracker)
        {
            IDictionary <MemberId, RoleInfo> roleMap   = _topologyService.allCoreRoles();
            IList <ReadWriteEndPoint>        endpoints = new List <ReadWriteEndPoint>();

            CoreTopology    coreTopology = _topologyService.allCoreServers();
            ISet <MemberId> coreMembers  = coreTopology.Members().Keys;

            foreach (MemberId memberId in coreMembers)
            {
                Optional <CoreServerInfo> coreServerInfo = coreTopology.find(memberId);
                if (coreServerInfo.Present)
                {
                    CoreServerInfo info = coreServerInfo.get();
                    RoleInfo       role = roleMap.getOrDefault(memberId, RoleInfo.UNKNOWN);
                    endpoints.Add(new ReadWriteEndPoint(info.Connectors(), role, memberId.Uuid, new IList <string> {
                        info.Groups()
                    }, info.DatabaseName));
                }
                else
                {
                    _log.debug("No Address found for " + memberId);
                }
            }

            foreach (KeyValuePair <MemberId, ReadReplicaInfo> readReplica in _topologyService.allReadReplicas().members().SetOfKeyValuePairs())
            {
                ReadReplicaInfo readReplicaInfo = readReplica.Value;
                endpoints.Add(new ReadWriteEndPoint(readReplicaInfo.Connectors(), RoleInfo.READ_REPLICA, readReplica.Key.Uuid, new IList <string> {
                    readReplicaInfo.Groups()
                }, readReplicaInfo.DatabaseName));
            }

            endpoints.sort(comparing(o => o.addresses().ToString()));

            return(map(endpoint => new object[] { endpoint.memberId().ToString(), endpoint.addresses().uriList().Select(URI.toString).ToList(), endpoint.role().name(), endpoint.groups(), endpoint.dbName() }, asRawIterator(endpoints.GetEnumerator())));
        }