//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: private void refreshRoles() throws InterruptedException private void RefreshRoles() { WaitOnHazelcastInstanceCreation(); LeaderInfo localLeaderInfo = _leaderInfo.get(); Optional <LeaderInfo> localStepDownInfo = _stepDownInfo.get(); if (localStepDownInfo.Present) { HazelcastClusterTopology.CasLeaders(_hazelcastInstance, localStepDownInfo.get(), _localDBName, Log); _stepDownInfo.compareAndSet(localStepDownInfo, null); } else if (localLeaderInfo.MemberId() != null && localLeaderInfo.MemberId().Equals(MyselfConflict)) { HazelcastClusterTopology.CasLeaders(_hazelcastInstance, localLeaderInfo, _localDBName, Log); } _coreRoles = HazelcastClusterTopology.GetCoreRoles(_hazelcastInstance, AllCoreServers().members().Keys); }
public override void HandleStepDown(long term, string dbName) { LeaderInfo localLeaderInfo = Leader; bool wasLeaderForDbAndTerm = Objects.Equals(MyselfConflict, localLeaderInfo.MemberId()) && LocalDBName().Equals(dbName) && term == localLeaderInfo.Term(); if (wasLeaderForDbAndTerm) { Log.info("Step down event detected. This topology member, with MemberId %s, was leader in term %s, now moving " + "to follower.", MyselfConflict, localLeaderInfo.Term()); HandleStepDown0(localLeaderInfo.StepDown()); } }
public override void OnLeaderSwitch(LeaderInfo leaderInfo) { _progressTracker.triggerReplicationEvent(); MemberId newLeader = leaderInfo.MemberId(); MemberId oldLeader = _leaderProvider.currentLeader(); if (newLeader == null && oldLeader != null) { _log.info("Lost previous leader '%s'. Currently no available leader", oldLeader); } else if (newLeader != null && oldLeader == null) { _log.info("A new leader has been detected: '%s'", newLeader); } _leaderProvider.Leader = newLeader; }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: @Test void shouldListenToLeaderUpdates() throws ReplicationFailureException //JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: internal virtual void ShouldListenToLeaderUpdates() { OneProgressTracker oneProgressTracker = new OneProgressTracker(this); oneProgressTracker.Last.setReplicated(); CapturingOutbound <Org.Neo4j.causalclustering.core.consensus.RaftMessages_RaftMessage> outbound = new CapturingOutbound <Org.Neo4j.causalclustering.core.consensus.RaftMessages_RaftMessage>(); RaftReplicator replicator = GetReplicator(outbound, oneProgressTracker, new Monitors()); ReplicatedInteger content = ReplicatedInteger.valueOf(5); LeaderInfo lastLeader = _leaderInfo; // set initial leader, sens to that leader replicator.OnLeaderSwitch(lastLeader); replicator.Replicate(content, false); assertEquals(outbound.LastTo, lastLeader.MemberId()); // update with valid new leader, sends to new leader lastLeader = new LeaderInfo(new MemberId(System.Guid.randomUUID()), 1); replicator.OnLeaderSwitch(lastLeader); replicator.Replicate(content, false); assertEquals(outbound.LastTo, lastLeader.MemberId()); }
internal void CasLeaders(LeaderInfo leaderInfo, string dbName) { lock ( _leaderMap ) { Optional <LeaderInfo> current = Optional.ofNullable(_leaderMap.get(dbName)); //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: bool sameLeader = current.map(LeaderInfo::memberId).Equals(Optional.ofNullable(leaderInfo.MemberId())); int termComparison = current.map(l => Long.compare(l.term(), leaderInfo.Term())).orElse(-1); bool greaterTermExists = termComparison > 0; bool sameTermButNoStepDown = termComparison == 0 && !leaderInfo.SteppingDown; if (!(greaterTermExists || sameTermButNoStepDown || sameLeader)) { _leaderMap.put(dbName, leaderInfo); } } }
internal static void CasLeaders(HazelcastInstance hazelcastInstance, LeaderInfo leaderInfo, string dbName, Log log) { IAtomicReference <LeaderInfo> leaderRef = hazelcastInstance.getAtomicReference(DB_NAME_LEADER_TERM_PREFIX + dbName); LeaderInfo current = leaderRef.get(); Optional <LeaderInfo> currentOpt = Optional.ofNullable(current); //JAVA TO C# CONVERTER TODO TASK: Method reference arbitrary object instance method syntax is not converted by Java to C# Converter: bool sameLeader = currentOpt.map(LeaderInfo::memberId).Equals(Optional.ofNullable(leaderInfo.MemberId())); int termComparison = currentOpt.map(l => Long.compare(l.term(), leaderInfo.Term())).orElse(-1); bool greaterTermExists = termComparison > 0; bool sameTermButNoStepdown = termComparison == 0 && !leaderInfo.SteppingDown; if (sameLeader || greaterTermExists || sameTermButNoStepdown) { return; } bool success = leaderRef.compareAndSet(current, leaderInfo); if (!success) { log.Warn("Fail to set new leader info: %s. Latest leader info: %s.", leaderInfo, leaderRef.get()); } }