You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@kudu.apache.org by "Mike Percy (Code Review)" <ge...@cloudera.org> on 2017/05/27 02:26:29 UTC
[kudu-CR] WIP: consensus: Get rid of ReplicaState class
Mike Percy has uploaded a new change for review.
http://gerrit.cloudera.org:8080/7007
Change subject: WIP: consensus: Get rid of ReplicaState class
......................................................................
WIP: consensus: Get rid of ReplicaState class
This patch merges the logic in ReplicaState into the RaftConsensus
class. The ReplicaState doesn't really serve a purpose anymore.
There shouldn't be any functional changes in this patch.
TODO: Review RaftConsensus::NonTxRoundReplicationFinished() lock comment
Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
---
M src/kudu/consensus/CMakeLists.txt
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/consensus/raft_consensus_quorum-test.cc
D src/kudu/consensus/raft_consensus_state.cc
D src/kudu/consensus/raft_consensus_state.h
6 files changed, 698 insertions(+), 837 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/07/7007/1
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 1
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 6:
This version of the patch was run on dist-test for 500 runs under stress (8 cpus) on dist-test. Here are the stats:
60d8567 - consensus: Get rid of ReplicaState class
http://dist-test.cloudera.org/job?job_id=mpercy.1496190840.22471
Failed tests:
13 RaftConsensusITest.TestMemoryRemainsConstantDespiteTwoDeadFollowers
10 RaftConsensusITest.TestCorruptReplicaMetadata
6 RaftConsensusITest.TestCommitIndexFarBehindAfterLeaderElection
1 RaftConsensusITest.TestAddRemoveServer
Crashed tests:
2 RaftConsensusITest.InsertUniqueKeysWithCrashyNodes
2 RaftConsensusITest.InsertDuplicateKeysWithCrashyNodes
1 RaftConsensusITest.TestChurnyElections_WithDuplicateKeys
1 RaftConsensusITest.TestChurnyElections
This is very similar to master, which was actually worse on multiple fronts but it looks like randomness:
8546583 - consensus: Acquire lock before snoozing FD
http://dist-test.cloudera.org/job?job_id=mpercy.1496194229.20684
$ dist-test-failure-stats.sh
Failed tests:
48 RaftConsensusITest.TestCommitIndexFarBehindAfterLeaderElection
18 RaftConsensusITest.TestMemoryRemainsConstantDespiteTwoDeadFollowers
8 RaftConsensusITest.TestCorruptReplicaMetadata
1 RaftConsensusITest.TestReplicaBehaviorViaRPC
Crashed tests:
10 RaftConsensusITest.TestChurnyElections
2 RaftConsensusITest.InsertDuplicateKeysWithCrashyNodes
1 RaftConsensusITest.InsertUniqueKeysWithCrashyNodes
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 6
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-HasComments: No
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Hello Kudu Jenkins,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/7007
to look at the new patch set (#6).
Change subject: consensus: Get rid of ReplicaState class
......................................................................
consensus: Get rid of ReplicaState class
Merges the logic in ReplicaState into the RaftConsensus class.
ReplicaState adds complexity but doesn't really serve a purpose anymore.
There are no functional changes in this patch.
Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
---
M src/kudu/consensus/CMakeLists.txt
M src/kudu/consensus/consensus.h
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/consensus/raft_consensus_quorum-test.cc
D src/kudu/consensus/raft_consensus_state.cc
D src/kudu/consensus/raft_consensus_state.h
7 files changed, 700 insertions(+), 876 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/07/7007/6
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 6
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.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] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 5:
(7 comments)
http://gerrit.cloudera.org:8080/#/c/7007/5//COMMIT_MSG
Commit Message:
Line 12: There are no functional changes in this patch.
> can you loop raft_consensus-itest for this and report the results?
Will do
http://gerrit.cloudera.org:8080/#/c/7007/5/src/kudu/consensus/raft_consensus.cc
File src/kudu/consensus/raft_consensus.cc:
Line 1605: local_peer_uuid = peer_uuid_;
> isn't this not protected by the lock?
Done
PS5, Line 2463: ConsensusStatePB RaftConsensus::ConsensusStateUnlocked() const {
: return cmeta_->ToConsensusStatePB();
: }
:
: RaftPeerPB::Role RaftConsensus::GetActiveRoleUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->active_role();
: }
:
: bool RaftConsensus::IsConfigChangePendingUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->has_pending_config();
: }
> some of these could probably just be inlined into callsites now that they'r
Yeah, but I don't want to make any real code changes in this patch, so I'll plan to do that in a follow-up.
Line 2509: cmeta_->clear_pending_config();
> same
let's do it in a follow-up
PS5, Line 2578: const int64_t RaftConsensus::GetCurrentTermUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->current_term();
: }
:
: const string& RaftConsensus::GetLeaderUuidUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->leader_uuid();
: }
:
: const bool RaftConsensus::HasVotedCurrentTermUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->has_voted_for();
: }
> same with these
same as above
http://gerrit.cloudera.org:8080/#/c/7007/5/src/kudu/consensus/raft_consensus.h
File src/kudu/consensus/raft_consensus.h:
Line 65: enum State {
> does this need to be public?
moving to private
Line 82: typedef std::unique_lock<simple_spinlock> UniqueLock;
> same
I made this private in a followup patch
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 5
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-HasComments: Yes
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 6:
I should mention that the test I looped 500x was raft_consensus-itest.
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 6
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-HasComments: No
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Hello Kudu Jenkins,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/7007
to look at the new patch set (#4).
Change subject: consensus: Get rid of ReplicaState class
......................................................................
consensus: Get rid of ReplicaState class
Merges the logic in ReplicaState into the RaftConsensus class.
ReplicaState adds complexity but doesn't really serve a purpose anymore.
There are no functional changes in this patch.
Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
---
M src/kudu/consensus/CMakeLists.txt
M src/kudu/consensus/consensus.h
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/consensus/raft_consensus_quorum-test.cc
D src/kudu/consensus/raft_consensus_state.cc
D src/kudu/consensus/raft_consensus_state.h
7 files changed, 699 insertions(+), 873 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/07/7007/4
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 4
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 6: Verified+1
Overriding Spark test cleanup issue:
org.apache.kudu.client.NonRecoverableException: Table startswith already exists with id d53754f87fda4558bbaedc428a40755d
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 6
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-HasComments: No
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Hello Kudu Jenkins,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/7007
to look at the new patch set (#2).
Change subject: consensus: Get rid of ReplicaState class
......................................................................
consensus: Get rid of ReplicaState class
Merges the logic in ReplicaState into the RaftConsensus class.
ReplicaState adds complexity but doesn't really serve a purpose anymore.
There are no functional changes in this patch.
Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
---
M src/kudu/consensus/CMakeLists.txt
M src/kudu/consensus/consensus.h
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/consensus/raft_consensus_quorum-test.cc
D src/kudu/consensus/raft_consensus_state.cc
D src/kudu/consensus/raft_consensus_state.h
7 files changed, 697 insertions(+), 871 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/07/7007/2
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 2
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Todd Lipcon (Code Review)" <ge...@cloudera.org>.
Todd Lipcon has posted comments on this change.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 6: Code-Review+2
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 6
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-HasComments: No
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has submitted this change and it was merged.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
consensus: Get rid of ReplicaState class
Merges the logic in ReplicaState into the RaftConsensus class.
ReplicaState adds complexity but doesn't really serve a purpose anymore.
There are no functional changes in this patch.
Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Reviewed-on: http://gerrit.cloudera.org:8080/7007
Reviewed-by: Todd Lipcon <to...@apache.org>
Tested-by: Mike Percy <mp...@apache.org>
---
M src/kudu/consensus/CMakeLists.txt
M src/kudu/consensus/consensus.h
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/consensus/raft_consensus_quorum-test.cc
D src/kudu/consensus/raft_consensus_state.cc
D src/kudu/consensus/raft_consensus_state.h
7 files changed, 700 insertions(+), 876 deletions(-)
Approvals:
Mike Percy: Verified
Todd Lipcon: Looks good to me, approved
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 7
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
[kudu-CR] WIP: consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Mike Percy has posted comments on this change.
Change subject: WIP: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 1:
Submitted early to get a Jenkins run on this patch.
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 1
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-HasComments: No
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Mike Percy (Code Review)" <ge...@cloudera.org>.
Hello David Ribeiro Alves, Alexey Serbin, Kudu Jenkins,
I'd like you to reexamine a change. Please visit
http://gerrit.cloudera.org:8080/7007
to look at the new patch set (#3).
Change subject: consensus: Get rid of ReplicaState class
......................................................................
consensus: Get rid of ReplicaState class
Merges the logic in ReplicaState into the RaftConsensus class.
ReplicaState adds complexity but doesn't really serve a purpose anymore.
There are no functional changes in this patch.
Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
---
M src/kudu/consensus/CMakeLists.txt
M src/kudu/consensus/consensus.h
M src/kudu/consensus/raft_consensus.cc
M src/kudu/consensus/raft_consensus.h
M src/kudu/consensus/raft_consensus_quorum-test.cc
D src/kudu/consensus/raft_consensus_state.cc
D src/kudu/consensus/raft_consensus_state.h
7 files changed, 699 insertions(+), 873 deletions(-)
git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/07/7007/3
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: newpatchset
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 3
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
[kudu-CR] consensus: Get rid of ReplicaState class
Posted by "Todd Lipcon (Code Review)" <ge...@cloudera.org>.
Todd Lipcon has posted comments on this change.
Change subject: consensus: Get rid of ReplicaState class
......................................................................
Patch Set 5:
(7 comments)
http://gerrit.cloudera.org:8080/#/c/7007/5//COMMIT_MSG
Commit Message:
Line 12: There are no functional changes in this patch.
can you loop raft_consensus-itest for this and report the results?
http://gerrit.cloudera.org:8080/#/c/7007/5/src/kudu/consensus/raft_consensus.cc
File src/kudu/consensus/raft_consensus.cc:
Line 1605: local_peer_uuid = peer_uuid_;
isn't this not protected by the lock?
PS5, Line 2463: ConsensusStatePB RaftConsensus::ConsensusStateUnlocked() const {
: return cmeta_->ToConsensusStatePB();
: }
:
: RaftPeerPB::Role RaftConsensus::GetActiveRoleUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->active_role();
: }
:
: bool RaftConsensus::IsConfigChangePendingUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->has_pending_config();
: }
some of these could probably just be inlined into callsites now that they're so trivial (separate patch is fine)
Line 2509: cmeta_->clear_pending_config();
same
PS5, Line 2578: const int64_t RaftConsensus::GetCurrentTermUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->current_term();
: }
:
: const string& RaftConsensus::GetLeaderUuidUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->leader_uuid();
: }
:
: const bool RaftConsensus::HasVotedCurrentTermUnlocked() const {
: DCHECK(lock_.is_locked());
: return cmeta_->has_voted_for();
: }
same with these
http://gerrit.cloudera.org:8080/#/c/7007/5/src/kudu/consensus/raft_consensus.h
File src/kudu/consensus/raft_consensus.h:
Line 65: enum State {
does this need to be public?
Line 82: typedef std::unique_lock<simple_spinlock> UniqueLock;
same
--
To view, visit http://gerrit.cloudera.org:8080/7007
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings
Gerrit-MessageType: comment
Gerrit-Change-Id: Ie1e62eff37d3f8655100b364939375608063aa80
Gerrit-PatchSet: 5
Gerrit-Project: kudu
Gerrit-Branch: master
Gerrit-Owner: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Alexey Serbin <as...@cloudera.com>
Gerrit-Reviewer: David Ribeiro Alves <da...@gmail.com>
Gerrit-Reviewer: Kudu Jenkins
Gerrit-Reviewer: Mike Percy <mp...@apache.org>
Gerrit-Reviewer: Tidy Bot
Gerrit-Reviewer: Todd Lipcon <to...@apache.org>
Gerrit-HasComments: Yes