Todd Lipcon has posted comments on this change. ( 
http://gerrit.cloudera.org:8080/8245 )

Change subject: WIP: KUDU-2048. consensus: only evict unresponsive nodes if 
remaining voters are viable
......................................................................


Patch Set 1:

(1 comment)

rev 3 has a pretty substantial cleanup (as described in the comment). I also 
tested rev 3 on a cluster and found that it resolved the problem well. Will 
update the commit message and do a bit of cleanup and then re-post, but worth 
taking a short look at the direction if anyone has time.

http://gerrit.cloudera.org:8080/#/c/8245/1/src/kudu/consensus/consensus_queue.cc
File src/kudu/consensus/consensus_queue.cc:

http://gerrit.cloudera.org:8080/#/c/8245/1/src/kudu/consensus/consensus_queue.cc@383
PS1, Line 383:     auto unreachable_time = now - 
peer->last_successful_communication_time;
> How about requiring a strict majority of the peers not being evicted to hav
thought about this a bit.

I think using just the committed index is not quite enough since it won't solve 
the problem for tablets that aren't actively receiving writes.

However it does make sense to _also_ use the committed index in addition to a 
time bound, for the reasons you mentioned. In that case I think we can relax 
the time bound a bit. I'll use the consensus RPC timeout since that's now 30 
seconds.

I also did some closer reading of the code and found that 
last_successful_communication_time gets updated even in cases where replication 
is not successful (eg due to TABLET_NOT_FOUND or BOOTSTRAPPING state) which 
isn't really ideal here.

Additionally, I ran some tests and realized that the time-based heuristic is 
missing one element: if the follower has actually crashed and is returning 
"Connection refused" errors, we'd not distinguish that from a replica which is 
just being slow over the last 15 seconds.

In order to solve the above problems, I went through and did some cleanup which 
ended up in this patch. I still think a simple approach like proposed here 
might be a good thing to backport to prior branches, though, rather than the 
more invasive cleanup.



--
To view, visit http://gerrit.cloudera.org:8080/8245
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I673f5b8a58b3954ea28066ecb334b3fdd60e7adb
Gerrit-Change-Number: 8245
Gerrit-PatchSet: 1
Gerrit-Owner: Todd Lipcon <t...@apache.org>
Gerrit-Reviewer: David Ribeiro Alves <davidral...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mpe...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <t...@apache.org>
Gerrit-Comment-Date: Thu, 19 Oct 2017 16:35:09 +0000
Gerrit-HasComments: Yes

Reply via email to