Beispiel #1
0
        private IList <Endpoint> ReadEndpoints(CoreTopology coreTopology, ReadReplicaTopology rrTopology, Policy policy)
        {
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
            ISet <ServerInfo> possibleReaders = rrTopology.Members().SetOfKeyValuePairs().Select(entry => new ServerInfo(entry.Value.connectors().boltAddress(), entry.Key, entry.Value.groups())).collect(Collectors.toSet());

            if (_allowReadsOnFollowers || possibleReaders.Count == 0)
            {
                ISet <MemberId> validCores = coreTopology.Members().Keys;
                try
                {
                    MemberId leader = _leaderLocator.Leader;
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
                    validCores = validCores.Where(memberId => !memberId.Equals(leader)).collect(Collectors.toSet());
                }
                catch (NoLeaderFoundException)
                {
                    // we might end up using the leader for reading during this ttl, should be fine in general
                }

                foreach (MemberId validCore in validCores)
                {
                    Optional <CoreServerInfo> coreServerInfo = coreTopology.find(validCore);
                    coreServerInfo.ifPresent(coreServerInfo1 => possibleReaders.Add(new ServerInfo(coreServerInfo1.connectors().boltAddress(), validCore, coreServerInfo1.groups())));
                }
            }

            ISet <ServerInfo> readers = policy.Apply(possibleReaders);

            return(readers.Select(r => Endpoint.read(r.boltAddress())).ToList());
        }
Beispiel #2
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: public org.neo4j.causalclustering.routing.load_balancing.LoadBalancingProcessor_Result run(java.util.Map<String,String> context) throws org.neo4j.internal.kernel.api.exceptions.ProcedureException
        public override Org.Neo4j.causalclustering.routing.load_balancing.LoadBalancingProcessor_Result Run(IDictionary <string, string> context)
        {
            Policy policy = _policies.selectFor(context);

            CoreTopology        coreTopology = _topologyService.localCoreServers();
            ReadReplicaTopology rrTopology   = _topologyService.localReadReplicas();

            return(new LoadBalancingResult(RouteEndpoints(coreTopology), WriteEndpoints(coreTopology), ReadEndpoints(coreTopology, rrTopology, policy), _timeToLive.Value));
        }
Beispiel #3
0
 public TopologyServiceAnonymousInnerClass(CoreTopology coreTopology, ReadReplicaTopology readReplicaTopology)
 {
     this._coreTopology        = coreTopology;
     this._readReplicaTopology = readReplicaTopology;
 }
Beispiel #4
0
 internal static TopologyService FakeTopologyService(CoreTopology coreTopology, ReadReplicaTopology readReplicaTopology)
 {
     return(new TopologyServiceAnonymousInnerClass(coreTopology, readReplicaTopology));
 }