You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@kudu.apache.org by "Alexey Serbin (Code Review)" <ge...@cloudera.org> on 2017/11/21 07:29:33 UTC

[kudu-CR] WIP [catalog manager] added 3-4-3 behavior

Alexey Serbin has uploaded this change for review. ( http://gerrit.cloudera.org:8080/8619


Change subject: WIP [catalog_manager] added 3-4-3 behavior
......................................................................

WIP [catalog_manager] added 3-4-3 behavior

Updated the catalog_manager to behave as specified in 3-4-3 v1 design
implementation plan, patch2.

WIP: need to add units tests for new quorum_util functions and
     comprehesive functional/integration tests

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
4 files changed, 405 insertions(+), 94 deletions(-)



  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/1
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 1
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>

[kudu-CR] WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager
......................................................................


Patch Set 6:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@414
PS6, Line 414: peer.has_attrs() &&
> no need to check has_attrs()
why not?


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@432
PS6, Line 432:   return replication_factor > (num_voters_total - num_voters_need_replacement) +
> are you counting non-voters with promote = true as potential voters for the
yes, i do -- see at line 420



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Thu, 23 Nov 2017 03:24:21 +0000
Gerrit-HasComments: Yes

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Alexey Serbin has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................

KUDU-1097: 3-4-3 behavior for catalog manager

Updated the catalog_manager to behave as specified in the 3-4-3
re-replication improvement v1 design implementation plan.  This
update includes changes referred as 'patch 2' and 'patch 4'.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Reviewed-on: http://gerrit.cloudera.org:8080/8619
Tested-by: Kudu Jenkins
Reviewed-by: Mike Percy <mp...@apache.org>
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/integration-tests/raft_consensus_nonvoter-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
6 files changed, 1,015 insertions(+), 124 deletions(-)

Approvals:
  Kudu Jenkins: Verified
  Mike Percy: Looks good to me, approved

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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 10
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#9).

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................

KUDU-1097: 3-4-3 behavior for catalog manager

Updated the catalog_manager to behave as specified in the 3-4-3
re-replication improvement v1 design implementation plan.  This
update includes changes referred as 'patch 2' and 'patch 4'.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/integration-tests/raft_consensus_nonvoter-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
6 files changed, 1,015 insertions(+), 124 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/9
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 9
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#6).

Change subject: WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager
......................................................................

WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Updated the catalog_manager to behave as specified in 3-4-3 v1 design
implementation plan, patche 2 and patch 4.

WIP: need to add more comprehesive functional/integration tests using
     minicluster.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/integration-tests/raft_consensus_nonvoter-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
6 files changed, 1,002 insertions(+), 108 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/6
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................


Patch Set 6:

(2 comments)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@411
PS6, Line 411:         if ((peer.has_health_report() &&
             :              peer.health_report().has_overall_health() &&
             :              peer.health_report().overall_health()
> I don't think so.  What if the health_report() is not present?  SIGSEGV, eh
Ah, I take this back.  Yes, it's safe to do as you mentioned. Sometimes I confuse protobuf with packetbrain -- in-house implementation of protobuf-like framework I used with one of my former employers.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@414
PS6, Line 414: peer.has_attrs() &&
> why not?
sure.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Fri, 24 Nov 2017 04:50:59 +0000
Gerrit-HasComments: Yes

[kudu-CR] WIP [catalog manager] added 3-4-3 behavior

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#2).

Change subject: WIP [catalog_manager] added 3-4-3 behavior
......................................................................

WIP [catalog_manager] added 3-4-3 behavior

Updated the catalog_manager to behave as specified in 3-4-3 v1 design
implementation plan, patch2.

WIP: need to add units tests for new quorum_util functions and
     comprehesive functional/integration tests

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
5 files changed, 806 insertions(+), 96 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/2
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 2
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#8).

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................

KUDU-1097: 3-4-3 behavior for catalog manager

Updated the catalog_manager to behave as specified in the 3-4-3
re-replication improvement v1 design implementation plan.  This
update includes changes referred as 'patch 2' and 'patch 4'.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/integration-tests/raft_consensus_nonvoter-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
6 files changed, 999 insertions(+), 111 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/8
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 8
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................


Patch Set 6:

(14 comments)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h
File src/kudu/consensus/quorum_util.h:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h@91
PS6, Line 91: // Check if the given Raft configuration needs an extra non-voter replica,
            : // targeted for future promotion to a voter replica in anticipation to replace
            : // failed or missing voter replicas in accordance with the specified replication
            : // factor. Return 'true' iff an extra non-voter is needed.
> I think this documentation can be reduced a lot because it's very specific 
Sure.  I hope it's clear what 'cluster is under-replicated' means.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h@95
PS6, Line 95: NeedNonVoterReplica
> nit: how about renaming this IsUnderReplicated() ? The idea is to detect th
Done


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h@101
PS6, Line 101: ReadyToEvictReplica
> nit: how about renaming this to CanEvictReplica() ?
Done


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@411
PS6, Line 411:         if ((peer.has_health_report() &&
             :              peer.health_report().has_overall_health() &&
             :              peer.health_report().overall_health()
> We can safely check peer.health_report().overall_health() without doing any
I don't think so.  What if the health_report() is not present?  SIGSEGV, eh?


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@424
PS6, Line 424: num_non_voters_for_replacement
> mind calling this num_non_voters_to_promote ?
Done.  Sorry for the confusion.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@432
PS6, Line 432:   return replication_factor > (num_voters_total - num_voters_need_replacement) +
> are you counting non-voters with promote = true as potential voters for the
That invariant needs an update: it does not include replicas marked for replacement with REPLACE attribute.

Also, that invariant is not quite correct from the standpoint of not mentioning replicas which health state is not known.  So, instead of '# healthy voters' I think it should be '# non-failed voters not marked with the REPLACE attribute'.

This code does exactly that.  The quorum_util-test.cc contains numerous cases which verifies how this works.  So far it looks reasonable to me.  Please take a look at those as well -- let me know if you see something strange there.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@228
PS6, Line 228: evicts
> nit: I'd suggest evict instead of evicts here, like giving the master a com
Done


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3483
PS6, Line 3483: FLAGS_raft_prepare_replacement_before_eviction
> shouldn't this be negated?
Good catch -- it's a typo, right -- there should be a negation.

Overall, it sounds like a better idea to move that 7d out of the outer scope, since that big if/else does not fit there well.

Done.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3495
PS6, Line 3495: 7d(v)
> Numbering this as 7d(v) to me implies it is a step after 7d(iv) which is mi
Done


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3498
PS6, Line 3498: New mode
> avoid the use of "new" because someday someone is going to read this code w
Removed.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3501
PS6, Line 3501: evict already replaces failed replica
> evict an already-replaced failed replica
Done


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3502
PS6, Line 3502: as replacement
> as a replacement
Done


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3503
PS6, Line 3503:         // The leader replica will promote the newly added non-voters once
              :         // they are in good enough shape for that.
> Doesn't it seem like we are adding unnecessary detail about the overall des
Removed.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3512
PS6, Line 3512:                    ReadyToEvictReplica(config, replication_factor, &to_evict)) {
> I think we want to evict first, if we can, since that means we are over-rep
What is the crucial difference here?  If it's over-replicated, then NeedNonVoter replica returns false, and then ReadyToEvictReplica() starts playing.

I don't understand what's your point here.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Thu, 23 Nov 2017 07:57:02 +0000
Gerrit-HasComments: Yes

[kudu-CR] WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager
......................................................................


Patch Set 6:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@424
PS6, Line 424: num_non_voters_for_replacement
mind calling this num_non_voters_to_promote ?



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Thu, 23 Nov 2017 03:24:33 +0000
Gerrit-HasComments: Yes

[kudu-CR] WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager
......................................................................


Patch Set 6:

(14 comments)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h
File src/kudu/consensus/quorum_util.h:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h@91
PS6, Line 91: // Check if the given Raft configuration needs an extra non-voter replica,
            : // targeted for future promotion to a voter replica in anticipation to replace
            : // failed or missing voter replicas in accordance with the specified replication
            : // factor. Return 'true' iff an extra non-voter is needed.
I think this documentation can be reduced a lot because it's very specific about the implementation instead of the interface. How about something like:

  Returns true if the current cluster is under-replicated given the raft configuration and the included health status of the members.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h@95
PS6, Line 95: NeedNonVoterReplica
nit: how about renaming this IsUnderReplicated() ? The idea is to detect that we are under-replicated so that we can prepare some remedy for that if it's detected.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.h@101
PS6, Line 101: ReadyToEvictReplica
nit: how about renaming this to CanEvictReplica() ?


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@411
PS6, Line 411:         if ((peer.has_health_report() &&
             :              peer.health_report().has_overall_health() &&
             :              peer.health_report().overall_health()
We can safely check peer.health_report().overall_health() without doing anything else. If it's not set it will default to UNKNOWN.

So this block can be much more concise:

      case RaftPeerPB::VOTER:
        ++num_voters_total;
        if (peer.health_report().overall_health() == HealthReportPB::FAILED) ||
            peer.attrs().replace()) {
          ++num_voters_need_replacement;
        }
        break;

These same rules can apply all throughout this file.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@414
PS6, Line 414: peer.has_attrs() &&
no need to check has_attrs()


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@432
PS6, Line 432:   return replication_factor > (num_voters_total - num_voters_need_replacement) +
are you counting non-voters with promote = true as potential voters for the under-replication check? I don't see it.

Per the implementation doc, this is the invariant we want the master to try to enforce:

  replication factor == # healthy voters + # healthy non-voters with PROMOTE=true


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@228
PS6, Line 228: evicts
nit: I'd suggest evict instead of evicts here, like giving the master a command to evict extra replicas

also, this is a minor suggestion but how about excess instead of extra: catalog_manager_evict_excess_replicas

excess implies waste which is how we're thinking about them in this context


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3483
PS6, Line 3483: FLAGS_raft_prepare_replacement_before_eviction
shouldn't this be negated?

In fact, I think this should be a big if / else based on that flag, since we have system that is going in while the old one is still in place, like:

  // 7d(iv)
  if (!FLAGS_raft_prepare_replacement_before_eviction) {
    // We are using the traditional re-replication system.
    if (FLAGS_master_add_server_when_underreplicated &&
            CountVoters(cstate.committed_config()) < table->metadata().state().pb.num_replicas()) {
          rpcs.emplace_back(new AsyncAddServerTask(master_, tablet, cstate, &rng_));
    }
  } else {
    // We are using 3-4-3 re-replication.
   ...
  }


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3495
PS6, Line 3495: 7d(v)
Numbering this as 7d(v) to me implies it is a step after 7d(iv) which is misleading because AFAICT they should be mutually exclusive.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3498
PS6, Line 3498: New mode
avoid the use of "new" because someday someone is going to read this code when it's 10 years old, and it will no longer be new :)


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3501
PS6, Line 3501: evict already replaces failed replica
evict an already-replaced failed replica


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3502
PS6, Line 3502: as replacement
as a replacement


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3503
PS6, Line 3503:         // The leader replica will promote the newly added non-voters once
              :         // they are in good enough shape for that.
Doesn't it seem like we are adding unnecessary detail about the overall design in this file? Perhaps we should tell readers to read the design doc for the details.


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3512
PS6, Line 3512:                    ReadyToEvictReplica(config, replication_factor, &to_evict)) {
I think we want to evict first, if we can, since that means we are over-replicated



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Thu, 23 Nov 2017 03:14:28 +0000
Gerrit-HasComments: Yes

[kudu-CR] WIP [catalog manager] added 3-4-3 behavior

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: WIP [catalog_manager] added 3-4-3 behavior
......................................................................


Patch Set 2:

(6 comments)

http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/consensus/quorum_util.cc@421
PS2, Line 421: peer.attrs().has_promote()
> I don't think we need to rely on has_ since this defaults to false.
Done


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/consensus/quorum_util.cc@450
PS2, Line 450:   for (const RaftPeerPB& peer : config.peers()) {
> I find the logic a little tough to follow in here. Maybe it would be a litt
I thought about that but it would require keeping the finding in the temporary containers, etc. while it's possible to do so without allocating an extra stuff.

But if it would be easier to follow -- sure, I'll update that as needed.

Yeah, that a good point about using the same code for deciding  to evict either a voter or non-voter.  The logic in the functions to evict voter and non-voters was using different criteria in the first version, but now it's the same.  I'll update that, thanks.


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@204
PS2, Line 204: // TODO(aserbin): can we get a better name for this flag? Ideally, there should
> i posted a patch at https://gerrit.cloudera.org/c/8626/ so maybe we can use
thanks! that would be a good thing to have.


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@3007
PS2, Line 3007: member_type_(member_type)
> this field only seems relevant for adding new replicas or a forced promotio
good catch -- i'll move it into appropriate function.


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@3198
PS2, Line 3198: peer->set_member_type(member_type_);
> why is this field needed for an eviction?
Good point: I think it's not needed for eviction.  I'll move it into the AsyncAddReplicaTask.


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@3482
PS2, Line 3482: else {
              :             string to_evict;
              :             if
> nit: we can make this an "else if" and avoid an additional level of nesting
I was trying to keep to_evict local.  All right, having less level of nesting is a priority makes more sense, I'll switch to 'else if'.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 2
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Wed, 22 Nov 2017 01:40:52 +0000
Gerrit-HasComments: Yes

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................


Patch Set 6:

(1 comment)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3512
PS6, Line 3512:                    ReadyToEvictReplica(config, replication_factor, &to_evict)) {
> I was thinking about the case where we had just promoted a non-voter to vot
Yep -- both adding new non-voter and evicting are conservative now, so we avoid adding too many replicas as a result.  Please let me know about a scenario where you suspect the code of IsUnderReplicated() or CanEvictReplica() does not behave as expected -- I'll add a testcase into the quorum_util-test.cc



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 6
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Mon, 27 Nov 2017 05:35:33 +0000
Gerrit-HasComments: Yes

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#7).

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................

KUDU-1097: 3-4-3 behavior for catalog manager

Updated the catalog_manager to behave as specified in the 3-4-3
re-replication improvement v1 design implementation plan.  This
update includes changes referred as 'patch 2' and 'patch 4'.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/integration-tests/raft_consensus_nonvoter-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
6 files changed, 999 insertions(+), 111 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/7
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 7
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] WIP [catalog manager] added 3-4-3 behavior

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#3).

Change subject: WIP [catalog_manager] added 3-4-3 behavior
......................................................................

WIP [catalog_manager] added 3-4-3 behavior

Updated the catalog_manager to behave as specified in 3-4-3 v1 design
implementation plan, patch2.

WIP: need to add comprehesive functional/integration tests using
     minicluster once the leader replica starts reporting at least about
     reachable and unreachable replicas.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
5 files changed, 829 insertions(+), 105 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/3
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 3
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] KUDU-1097: 3-4-3 behavior for catalog manager

Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: KUDU-1097: 3-4-3 behavior for catalog manager
......................................................................


Patch Set 9: Code-Review+2

(2 comments)

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/consensus/quorum_util.cc@432
PS6, Line 432:       num_non_voters_to_promote;
> That invariant needs an update: it does not include replicas marked for rep
Yes, good point, we should update that in the doc


http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/8619/6/src/kudu/master/catalog_manager.cc@3512
PS6, Line 3512:             master_, tablet, cstate, RaftPeerPB::VOTER, &rng_));
> What is the crucial difference here?  If it's over-replicated, then NeedNon
I was thinking about the case where we had just promoted a non-voter to voter and then saw another failure while we had > replication_factor voters, but right now we're very conservative about how we evict so I don't think it's something we need to worry about yet.



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 9
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Mon, 27 Nov 2017 04:04:04 +0000
Gerrit-HasComments: Yes

[kudu-CR] WIP [catalog manager] added 3-4-3 behavior

Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change. ( http://gerrit.cloudera.org:8080/8619 )

Change subject: WIP [catalog_manager] added 3-4-3 behavior
......................................................................


Patch Set 2:

(6 comments)

http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/consensus/quorum_util.cc
File src/kudu/consensus/quorum_util.cc:

http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/consensus/quorum_util.cc@421
PS2, Line 421: peer.attrs().has_promote()
I don't think we need to rely on has_ since this defaults to false.


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/consensus/quorum_util.cc@450
PS2, Line 450:   for (const RaftPeerPB& peer : config.peers()) {
I find the logic a little tough to follow in here. Maybe it would be a little easier to follow if it was structured as 2 loops?

1. loop over the config and collect stats (number of healthy / failed voters, number of healthy / failed non-voters, number of nodes to replace)
2. decide whether any can be evicted, if not, return false
3. if a node can be evicted, loop again with a predicate indicating the criteria for the node to evict and return the first match.

Also, I wonder why we need a separate function for evicting voters and non-voters?


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc
File src/kudu/master/catalog_manager.cc:

http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@204
PS2, Line 204: // TODO(aserbin): can we get a better name for this flag? Ideally, there should
i posted a patch at https://gerrit.cloudera.org/c/8626/ so maybe we can use that one everywhere


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@3007
PS2, Line 3007: member_type_(member_type)
this field only seems relevant for adding new replicas or a forced promotion / demotion


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@3198
PS2, Line 3198: peer->set_member_type(member_type_);
why is this field needed for an eviction?


http://gerrit.cloudera.org:8080/#/c/8619/2/src/kudu/master/catalog_manager.cc@3482
PS2, Line 3482: else {
              :             string to_evict;
              :             if
nit: we can make this an "else if" and avoid an additional level of nesting



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

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: comment
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 2
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-Comment-Date: Tue, 21 Nov 2017 23:24:41 +0000
Gerrit-HasComments: Yes

[kudu-CR] WIP [catalog manager] added 3-4-3 behavior

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#4).

Change subject: WIP [catalog_manager] added 3-4-3 behavior
......................................................................

WIP [catalog_manager] added 3-4-3 behavior

Updated the catalog_manager to behave as specified in 3-4-3 v1 design
implementation plan, patch2.

WIP: need to add comprehesive functional/integration tests using
     minicluster once the leader replica starts reporting at least about
     reachable and unreachable replicas.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
5 files changed, 845 insertions(+), 105 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/4
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 4
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>

[kudu-CR] WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Posted by "Alexey Serbin (Code Review)" <ge...@cloudera.org>.
Hello Tidy Bot, Mike Percy, Kudu Jenkins, Todd Lipcon, 

I'd like you to reexamine a change. Please visit

    http://gerrit.cloudera.org:8080/8619

to look at the new patch set (#5).

Change subject: WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager
......................................................................

WIP KUDU-1097 (patch 2&4): added 3-4-3 behavior for catalog manager

Updated the catalog_manager to behave as specified in 3-4-3 v1 design
implementation plan, patche 2 and patch 4.

WIP: need to add more comprehesive functional/integration tests using
     minicluster.

Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
---
M src/kudu/consensus/quorum_util-test.cc
M src/kudu/consensus/quorum_util.cc
M src/kudu/consensus/quorum_util.h
M src/kudu/integration-tests/raft_consensus_nonvoter-itest.cc
M src/kudu/master/catalog_manager.cc
M src/kudu/master/catalog_manager.h
6 files changed, 1,000 insertions(+), 108 deletions(-)


  git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/19/8619/5
-- 
To view, visit http://gerrit.cloudera.org:8080/8619
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: I6f0469ac641bf7a03dbef01eaa3f1b58a5bf5d27
Gerrit-Change-Number: 8619
Gerrit-PatchSet: 5
Gerrit-Owner: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>