Пример #1
0
        internal static MemberAttributeConfig BuildMemberAttributesForCore(MemberId myself, Config config)
        {
            MemberAttributeConfig memberAttributeConfig = new MemberAttributeConfig();

            memberAttributeConfig.setStringAttribute(MEMBER_UUID, myself.Uuid.ToString());

            AdvertisedSocketAddress discoveryAddress = config.Get(CausalClusteringSettings.discovery_advertised_address);

            memberAttributeConfig.setStringAttribute(DISCOVERY_SERVER, discoveryAddress.ToString());

            AdvertisedSocketAddress transactionSource = config.Get(CausalClusteringSettings.transaction_advertised_address);

            memberAttributeConfig.setStringAttribute(TRANSACTION_SERVER, transactionSource.ToString());

            AdvertisedSocketAddress raftAddress = config.Get(CausalClusteringSettings.raft_advertised_address);

            memberAttributeConfig.setStringAttribute(RAFT_SERVER, raftAddress.ToString());

            ClientConnectorAddresses clientConnectorAddresses = ClientConnectorAddresses.ExtractFromConfig(config);

            memberAttributeConfig.setStringAttribute(CLIENT_CONNECTOR_ADDRESSES, clientConnectorAddresses.ToString());

            memberAttributeConfig.setBooleanAttribute(REFUSE_TO_BE_LEADER_KEY, config.Get(refuse_to_be_leader));

            memberAttributeConfig.setStringAttribute(MEMBER_DB_NAME, config.Get(CausalClusteringSettings.database));

            return(memberAttributeConfig);
        }
Пример #2
0
 public ReadReplicaInfo(ClientConnectorAddresses clientConnectorAddresses, AdvertisedSocketAddress catchupServerAddress, ISet <string> groups, string dbName)
 {
     this._clientConnectorAddresses = clientConnectorAddresses;
     this._catchupServerAddress     = catchupServerAddress;
     this._groups = groups;
     this._dbName = dbName;
 }
Пример #3
0
        /// <summary>
        /// Given a hazelcast member id and a set of non-null attribute maps, this method builds a discovery representation of a read replica
        /// (i.e. `Pair<MemberId,ReadReplicaInfo>`). Any missing attributes which are missing for a given hazelcast member id are logged and this
        /// method will return null.
        /// </summary>
        private static Pair <MemberId, ReadReplicaInfo> BuildReadReplicaFromAttrMap(string hzId, IDictionary <string, IMap <string, string> > simpleAttrMaps, MultiMap <string, string> serverGroupsMap, Log log)
        {
//JAVA TO C# CONVERTER TODO TASK: Most Java stream collectors are not converted by Java to C# Converter:
            IDictionary <string, string> memberAttrs = simpleAttrMaps.SetOfKeyValuePairs().Select(e => Pair.of(e.Key, e.Value.get(hzId))).Where(p => HasAttribute(p, hzId, log)).collect(CollectorsUtil.pairsToMap());

//JAVA TO C# CONVERTER TODO TASK: There is no .NET equivalent to the java.util.Collection 'containsAll' method:
            if (!memberAttrs.Keys.containsAll(RrAttrKeys))
            {
                return(null);
            }

            ICollection <string> memberServerGroups = serverGroupsMap.get(hzId);

            if (memberServerGroups == null)
            {
                log.Warn("Missing attribute %s for read replica with hz id %s", SERVER_GROUPS_MULTIMAP, hzId);
                return(null);
            }

            ClientConnectorAddresses boltAddresses = ClientConnectorAddresses.FromString(memberAttrs[READ_REPLICA_BOLT_ADDRESS_MAP]);
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
            AdvertisedSocketAddress catchupAddress = socketAddress(memberAttrs[READ_REPLICA_TRANSACTION_SERVER_ADDRESS_MAP], AdvertisedSocketAddress::new);
            MemberId      memberId       = new MemberId(System.Guid.Parse(memberAttrs[READ_REPLICA_MEMBER_ID_MAP]));
            string        memberDbName   = memberAttrs[READ_REPLICAS_DB_NAME_MAP];
            ISet <string> serverGroupSet = asSet(memberServerGroups);

            ReadReplicaInfo rrInfo = new ReadReplicaInfo(boltAddresses, catchupAddress, serverGroupSet, memberDbName);

            return(Pair.of(memberId, rrInfo));
        }
Пример #4
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldSerializeToString()
        public virtual void ShouldSerializeToString()
        {
            // given
            ClientConnectorAddresses connectorAddresses = new ClientConnectorAddresses(new IList <ConnectorUri>
            {
                new ConnectorUri(bolt, new AdvertisedSocketAddress("host", 1)),
                new ConnectorUri(http, new AdvertisedSocketAddress("host", 2)),
                new ConnectorUri(https, new AdvertisedSocketAddress("host", 3)),
                new ConnectorUri(bolt, new AdvertisedSocketAddress("::1", 4)),
                new ConnectorUri(http, new AdvertisedSocketAddress("::", 5)),
                new ConnectorUri(https, new AdvertisedSocketAddress("fe80:1:2::3", 6))
            });

            string expectedString = "bolt://host:1,http://host:2,https://host:3,bolt://[::1]:4,http://[::]:5,https://[fe80:1:2::3]:6";

            // when
            string connectorAddressesString = connectorAddresses.ToString();

            // then
            assertEquals(expectedString, connectorAddressesString);

            // when
            ClientConnectorAddresses @out = ClientConnectorAddresses.FromString(connectorAddressesString);

            // then
            assertEquals(connectorAddresses, @out);
        }
Пример #5
0
        public static ReadReplicaInfo AddressesForReadReplica(int id)
        {
            AdvertisedSocketAddress  clientConnectorSocketAddress = new AdvertisedSocketAddress("localhost", 6000 + id);
            ClientConnectorAddresses clientConnectorAddresses     = new ClientConnectorAddresses(singletonList(new ClientConnectorAddresses.ConnectorUri(bolt, clientConnectorSocketAddress)));
            AdvertisedSocketAddress  catchupSocketAddress         = new AdvertisedSocketAddress("localhost", 4000 + id);

            return(new ReadReplicaInfo(clientConnectorAddresses, catchupSocketAddress, asSet("replica", "replica" + id), "default"));
        }
Пример #6
0
        internal SharedDiscoveryReadReplicaClient(SharedDiscoveryService sharedDiscoveryService, Config config, MemberId memberId, LogProvider logProvider)
        {
            this._sharedDiscoveryService = sharedDiscoveryService;
            this._dbName = config.Get(CausalClusteringSettings.database);
//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
            this._addresses = new ReadReplicaInfo(ClientConnectorAddresses.ExtractFromConfig(config), socketAddress(config.Get(CausalClusteringSettings.transaction_advertised_address).ToString(), AdvertisedSocketAddress::new), _dbName);
            this._memberId  = memberId;
            this._log       = logProvider.getLog(this.GetType());
        }
Пример #7
0
        private ReadReplicaInfo GenerateReadReplicaInfo()
        {
            System.Func <int> portFactory = () => ThreadLocalRandom.current().Next(1000, 10000);

            IList <ClientConnectorAddresses.ConnectorUri> connectorUris = singletonList(new ClientConnectorAddresses.ConnectorUri(ClientConnectorAddresses.Scheme.Bolt, new AdvertisedSocketAddress("losthost", portFactory())));
            ClientConnectorAddresses addresses = new ClientConnectorAddresses(connectorUris);

            return(new ReadReplicaInfo(addresses, new AdvertisedSocketAddress("localhost", portFactory()), _groups, "foo"));
        }
Пример #8
0
 public CoreServerInfo(AdvertisedSocketAddress raftServer, AdvertisedSocketAddress catchupServer, ClientConnectorAddresses clientConnectorAddresses, ISet <string> groups, string dbName, bool refuseToBeLeader)
 {
     this._raftServer               = raftServer;
     this._catchupServer            = catchupServer;
     this._clientConnectorAddresses = clientConnectorAddresses;
     this._groups           = groups;
     this._dbName           = dbName;
     this._refuseToBeLeader = refuseToBeLeader;
 }
Пример #9
0
        public static ReadReplicaInfo From(Config config)
        {
            AdvertisedSocketAddress  transactionSource        = config.Get(CausalClusteringSettings.transaction_advertised_address);
            ClientConnectorAddresses clientConnectorAddresses = ClientConnectorAddresses.ExtractFromConfig(config);
            string         dbName    = config.Get(CausalClusteringSettings.database);
            IList <string> groupList = config.Get(CausalClusteringSettings.server_groups);
            ISet <string>  groups    = new HashSet <string>(groupList);

            return(new ReadReplicaInfo(clientConnectorAddresses, transactionSource, groups, dbName));
        }
Пример #10
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldSerializeWithNoHttpsAddress()
        public virtual void ShouldSerializeWithNoHttpsAddress()
        {
            // given
            ClientConnectorAddresses connectorAddresses = new ClientConnectorAddresses(asList(new ConnectorUri(bolt, new AdvertisedSocketAddress("host", 1)), new ConnectorUri(http, new AdvertisedSocketAddress("host", 2))
                                                                                              ));

            // when
            ClientConnectorAddresses @out = ClientConnectorAddresses.FromString(connectorAddresses.ToString());

            // then
            assertEquals(connectorAddresses, @out);
        }
Пример #11
0
        public static CoreServerInfo From(Config config)
        {
            AdvertisedSocketAddress  raftAddress              = config.Get(CausalClusteringSettings.raft_advertised_address);
            AdvertisedSocketAddress  transactionSource        = config.Get(CausalClusteringSettings.transaction_advertised_address);
            ClientConnectorAddresses clientConnectorAddresses = ClientConnectorAddresses.ExtractFromConfig(config);
            string         dbName           = config.Get(CausalClusteringSettings.database);
            IList <string> groupList        = config.Get(CausalClusteringSettings.server_groups);
            ISet <string>  groups           = new HashSet <string>(groupList);
            bool           refuseToBeLeader = config.Get(CausalClusteringSettings.refuse_to_be_leader);

            return(new CoreServerInfo(raftAddress, transactionSource, clientConnectorAddresses, groups, dbName, refuseToBeLeader));
        }
Пример #12
0
        public override bool Equals(object o)
        {
            if (this == o)
            {
                return(true);
            }
            if (o == null || this.GetType() != o.GetType())
            {
                return(false);
            }
            ClientConnectorAddresses that = ( ClientConnectorAddresses )o;

            return(Objects.Equals(_connectorUris, that._connectorUris));
        }
Пример #13
0
 public HazelcastClient(HazelcastConnector connector, JobScheduler scheduler, LogProvider logProvider, Config config, MemberId myself)
 {
     this._hzInstance                   = new RobustHazelcastWrapper(connector);
     this._config                       = config;
     this._log                          = logProvider.getLog(this.GetType());
     this._scheduler                    = new RobustJobSchedulerWrapper(scheduler, _log);
     this._connectorAddresses           = ClientConnectorAddresses.ExtractFromConfig(config);
     this._transactionSource            = config.Get(CausalClusteringSettings.transaction_advertised_address);
     this._timeToLive                   = config.Get(CausalClusteringSettings.read_replica_time_to_live).toMillis();
     this._refreshPeriod                = config.Get(CausalClusteringSettings.cluster_topology_refresh).toMillis();
     this._myself                       = myself;
     this._groups                       = config.Get(CausalClusteringSettings.server_groups);
     this._topologyServiceRetryStrategy = ResolveStrategy(_refreshPeriod, logProvider);
     this._dbName                       = config.Get(CausalClusteringSettings.database);
     this._coreRoles                    = emptyMap();
 }
Пример #14
0
 public override ClientConnectorAddresses ClientConnectorAddresses()
 {
     return(ClientConnectorAddresses.ExtractFromConfig(_memberConfig));
 }
Пример #15
0
        internal static IDictionary <MemberId, CoreServerInfo> ToCoreMemberMap(ISet <Member> members, Log log, HazelcastInstance hazelcastInstance)
        {
            IDictionary <MemberId, CoreServerInfo> coreMembers = new Dictionary <MemberId, CoreServerInfo>();
            MultiMap <string, string> serverGroupsMMap         = hazelcastInstance.getMultiMap(SERVER_GROUPS_MULTIMAP);

            foreach (Member member in members)
            {
                IDictionary <string, string> attrMap = new Dictionary <string, string>();
                bool incomplete = false;
                foreach (string attrKey in CoreAttrKeys)
                {
                    string attrValue = member.getStringAttribute(attrKey);
                    if (string.ReferenceEquals(attrValue, null))
                    {
                        log.Warn("Missing member attribute '%s' for member %s", attrKey, member);
                        incomplete = true;
                    }
                    else
                    {
                        attrMap[attrKey] = attrValue;
                    }
                }

                if (incomplete)
                {
                    continue;
                }

//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
                CoreServerInfo coreServerInfo = new CoreServerInfo(socketAddress(attrMap[RAFT_SERVER], AdvertisedSocketAddress::new), socketAddress(attrMap[TRANSACTION_SERVER], AdvertisedSocketAddress::new), ClientConnectorAddresses.FromString(attrMap[CLIENT_CONNECTOR_ADDRESSES]), asSet(serverGroupsMMap.get(attrMap[MEMBER_UUID])), attrMap[MEMBER_DB_NAME], member.getBooleanAttribute(REFUSE_TO_BE_LEADER_KEY));

                MemberId memberId = new MemberId(System.Guid.Parse(attrMap[MEMBER_UUID]));
                coreMembers[memberId] = coreServerInfo;
            }

            return(coreMembers);
        }
Пример #16
0
 public ReadReplicaInfo(ClientConnectorAddresses clientConnectorAddresses, AdvertisedSocketAddress catchupServerAddress, string dbName) : this(clientConnectorAddresses, catchupServerAddress, emptySet(), dbName)
 {
 }
Пример #17
0
 public CoreServerInfo(AdvertisedSocketAddress raftServer, AdvertisedSocketAddress catchupServer, ClientConnectorAddresses clientConnectors, string dbName, bool refuseToBeLeader) : this(raftServer, catchupServer, clientConnectors, emptySet(), dbName, refuseToBeLeader)
 {
 }
Пример #18
0
 private void LogConnectionInfo(ICollection <string> initialMembers)
 {
     UserLog.info("My connection info: " + "[\n\tDiscovery:   listen=%s, advertised=%s," + "\n\tTransaction: listen=%s, advertised=%s, " + "\n\tRaft:        listen=%s, advertised=%s, " + "\n\tClient Connector Addresses: %s" + "\n]", Config.get(discovery_listen_address), Config.get(CausalClusteringSettings.discovery_advertised_address), Config.get(CausalClusteringSettings.transaction_listen_address), Config.get(CausalClusteringSettings.transaction_advertised_address), Config.get(CausalClusteringSettings.raft_listen_address), Config.get(CausalClusteringSettings.raft_advertised_address), ClientConnectorAddresses.ExtractFromConfig(Config));
     UserLog.info("Discovering other core members in initial members set: " + initialMembers);
 }