//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public org.neo4j.causalclustering.core.consensus.outcome.Outcome handle(org.neo4j.causalclustering.core.consensus.RaftMessages_PreVote_Response res, org.neo4j.causalclustering.core.consensus.outcome.Outcome outcome, org.neo4j.causalclustering.core.consensus.state.ReadableRaftState ctx, org.neo4j.logging.Log log) throws java.io.IOException public override Outcome Handle(Org.Neo4j.causalclustering.core.consensus.RaftMessages_PreVote_Response res, Outcome outcome, ReadableRaftState ctx, Log log) { if (res.Term() > ctx.Term()) { outcome.NextTerm = res.Term(); outcome.PreElection = false; log.Info("Aborting pre-election after receiving pre-vote response from %s at term %d (I am at %d)", res.From(), res.Term(), ctx.Term()); return(outcome); } else if (res.Term() < ctx.Term() || !res.VoteGranted()) { return(outcome); } if (!res.From().Equals(ctx.Myself())) { outcome.AddPreVoteForMe(res.From()); } if (isQuorum(ctx.VotingMembers(), outcome.PreVotesForMe)) { outcome.RenewElectionTimeout(); outcome.PreElection = false; if (Election.StartRealElection(ctx, outcome, log)) { outcome.NextRole = CANDIDATE; log.Info("Moving to CANDIDATE state after successful pre-election stage"); } } return(outcome); }
public override Outcome Handle(Org.Neo4j.causalclustering.core.consensus.RaftMessages_Timeout_Election election, Outcome outcome, ReadableRaftState ctx, Log log) { log.Info("Election timeout triggered but refusing to be leader"); ISet <MemberId> memberIds = ctx.VotingMembers(); if (memberIds != null && memberIds.Contains(ctx.Myself())) { outcome.PreElection = true; } return(outcome); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: public static boolean startPreElection(org.neo4j.causalclustering.core.consensus.state.ReadableRaftState ctx, org.neo4j.causalclustering.core.consensus.outcome.Outcome outcome, org.neo4j.logging.Log log) throws java.io.IOException public static bool StartPreElection(ReadableRaftState ctx, Outcome outcome, Log log) { ISet <MemberId> currentMembers = ctx.VotingMembers(); if (currentMembers == null || !currentMembers.Contains(ctx.Myself())) { log.Info("Pre-election attempted but not started, current members are %s, I am %s", currentMembers, ctx.Myself()); return(false); } Org.Neo4j.causalclustering.core.consensus.RaftMessages_PreVote_Request preVoteForMe = new Org.Neo4j.causalclustering.core.consensus.RaftMessages_PreVote_Request(ctx.Myself(), outcome.Term, ctx.Myself(), ctx.EntryLog().appendIndex(), ctx.EntryLog().readEntryTerm(ctx.EntryLog().appendIndex())); currentMembers.Where(member => !member.Equals(ctx.Myself())).ForEach(member => outcome.addOutgoingMessage(new Org.Neo4j.causalclustering.core.consensus.RaftMessages_Directed(member, preVoteForMe))); log.Info("Pre-election started with: %s and members: %s", preVoteForMe, currentMembers); return(true); }
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#: //ORIGINAL LINE: ComparableRaftState(org.neo4j.causalclustering.core.consensus.state.ReadableRaftState original) throws java.io.IOException internal ComparableRaftState(ReadableRaftState original) : this(original.Myself(), original.VotingMembers(), original.ReplicationMembers(), original.RefusesToBeLeader(), new ComparableRaftLog(original.EntryLog()), new ConsecutiveInFlightCache(), NullLogProvider.Instance) { }