[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 22: Code-Review+2 (1 comment) Looks good to me! Thank you very much for this useful contribution! http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@374 PS18, Line 374: required consensus.RaftPeerPB.Role role = 2; > > Adar has already pointed at this in prior review iterations, and I Thanks a lot!! I think it looks cleaner now. -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 22 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Tue, 16 Jul 2019 02:48:38 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Alexey Serbin has submitted this change and it was merged. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Reviewed-on: http://gerrit.cloudera.org:8080/13632 Tested-by: Kudu Jenkins Reviewed-by: Adar Dembo Reviewed-by: Alexey Serbin --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 642 insertions(+), 129 deletions(-) Approvals: Kudu Jenkins: Verified Adar Dembo: Looks good to me, but someone else must approve Alexey Serbin: Looks good to me, approved -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: merged Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 23 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 22: Code-Review+1 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 22 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Mon, 15 Jul 2019 21:33:29 + Gerrit-HasComments: No
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Yao Xu has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 22: (18 comments) http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG Commit Message: http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG@7 PS18, Line 7: Place tablet replicas based on dimension > BTW, what would you expect from the rebalancer with regard to > balancing the distribution of the replicas in each dimension? Emmm, maybe we just need to be able to specify the dimension that we want to balance. http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h File src/kudu/client/client.h: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1215 PS18, Line 1215: KuduPartialRow* lower_bound, : KuduPartialRow* upper_bound, > remove Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1238 PS18, Line 1238: /// the lower bound is unbounded. If any of the columns are unset, the : /// logical minimum value for the column's type will be used by default. : /// @param [in] upper_bound : /// The upper bound of the range partition to add. If the row is empty, then : /// the upper bound is unbounded. If any of the individual columns are : /// unset, the logical minimum value for the column' type will be used by : /// default. > Could you replace this by: Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146 PS18, Line 146: the ta > nit: the tablet Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146 PS18, Line 146: et. Used for dimension-specific : // placement of the tablet's replicas. > How about: Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@368 PS18, Line 368: / : : message TabletLocationsPB { > This is just an implementation detail. The information could be kept in ru Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@374 PS18, Line 374: required consensus.RaftPeerPB.Role role = 2; > Adar has already pointed at this in prior review iterations, and I > tend agree with him here. IMO, there is not much value in > introducing this field once there is explicit specification of > dimension labels for tables and extra tablets (partitions). > > What if we drop both this field and also the > --master_place_tablet_replicas_based_on_dimension > master's flag? > > One additional argument to drop these is to think how we should > report on the status of tables' creation and adding extra > partitions to clients in case of they specify dimension labels when > master is run with --master_place_tablet_replicas_based_on_dimension=false > ? Ok, I'm will drop this field and '--master_place_tablet_replicas_based_on_dimension'. http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@482 PS18, Line 482: > Maybe: Used for dimension-specific placement of tablet replicas correspondi Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614 PS18, Line 614: > the corresponding tablet Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614 PS18, Line 614: : optional StepType type = 1 [ default = UNKNOWN ]; > How about: Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc File src/kudu/master/master_service.cc: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc@255 PS18, Line 255: std::move(TabletNumByDimensionMap(req->num_live_table > Do you think we still need this even if the dimension labels are specified Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/placement_policy-test.cc File src/kudu/master/placement_policy-test.cc: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/placement_policy-test.cc@261 PS18, Line 261: > nit: I think this is not needed? It will be initialized as empty if omitte Done http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/placement_policy-test.cc@291 PS18, Line 291: ASSERT_TRUE(extra_ts); : ASSERT_EQ("ts2", extra_ts->permanent_uuid()); : } : : { : TSDescriptorVector existing(all.begin(), all.end()); : shared_ptr extra_ts; : const auto s = policy.PlaceExtraTabletReplica(existing, label, _ts); : ASSERT_TRUE(s.IsNotFound()) << s.ToString(); : ASSERT_FALSE(extra_ts);
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#22). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 642 insertions(+), 129 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/22 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 22 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#21). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 642 insertions(+), 130 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/21 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 21 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#20). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 639 insertions(+), 128 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/20 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 20 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#19). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 638 insertions(+), 127 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/19 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 19 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 18: (18 comments) http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG Commit Message: http://gerrit.cloudera.org:8080/#/c/13632/18//COMMIT_MSG@7 PS18, Line 7: Place tablet replicas based on dimension BTW, what would you expect from the rebalancer with regard to balancing the distribution of the replicas in each dimension? http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h File src/kudu/client/client.h: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1215 PS18, Line 1215: /// @param [in] dimension_label : /// The dimension label for the tablet to be created. Defaults to empty. remove http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/client/client.h@1238 PS18, Line 1238: /// @note By default (or if the cluster is configured without : /// '--master_place_tablet_replicas_based_on_dimension'), the master will try to place : /// newly created tablet replicas on tablet servers with a small number of tablet replicas. : /// If the dimension label is provided, newly created replicas will be evenly distributed : /// in the cluster based on the dimension label. In other words, the master will try to place : /// newly created tablet replicas on tablet servers with a small number of tablet replicas : /// belonging to this dimension label. Could you replace this by: See KuduTableCreator::dimension_label() for details on dimension label. http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146 PS18, Line 146: tablet nit: the tablet http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@146 PS18, Line 146: Used by the master to determine load when : // creating new tablet replicas based on dimension. How about: Used for dimension-specific replica placement. http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@368 PS18, Line 368: NOTE: If the heartbeat request wants to send 'num_live_tablets_by_dimension', then the tablet : // server needs to count the number of tablet replicas in each dimension, which requires : // traversing all the tablet replicas in the tablet server. This is just an implementation detail. The information could be kept in run-time structures, so there would be no need to traverse and re-evaluate that again and again each heartbeat. Also, currently each tablet servers traverses its registry for finding the total number of alive and bootstrapping tablet replicas anyways. That might be a small optimization piece (I think it's better to do that in a separate patch :) ) http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@374 PS18, Line 374: optional bool needs_num_live_tablets_by_dimension = 10 [ default = false ]; Adar has already pointed at this in prior review iterations, and I tend agree with him here. IMO, there is not much value in introducing this field once there is explicit specification of dimension labels for tables and extra tablets (partitions). What if we drop both this field and also the --master_place_tablet_replicas_based_on_dimension master's flag? One additional argument to drop these is to think how we should report on the status of tables' creation and adding extra partitions to clients in case of they specify dimension labels when master is run with --master_place_tablet_replicas_based_on_dimension=false ? http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@482 PS18, Line 482: Used by the master to determine load when creating new tablet replicas based on dimension. Maybe: Used for dimension-specific placement of tablet replicas corresponding to the partitions of the newly created table. http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614 PS18, Line 614: tablet the corresponding tablet http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master.proto@614 PS18, Line 614: Used by the master to determine load when : // creating new tablet replicas based on dimension. How about: Used for dimension-specific placement of the tablet's replicas. http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc File src/kudu/master/master_service.cc: http://gerrit.cloudera.org:8080/#/c/13632/18/src/kudu/master/master_service.cc@255 PS18, Line 255: FLAGS_master_place_tablet_replicas_based_on_dimension Do you think we still need this even if the dimension labels are specified explicitly?
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Yao Xu has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 18: Add some unit tests for a few scenarios. -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 18 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Fri, 12 Jul 2019 16:31:37 + Gerrit-HasComments: No
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#18). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. You can decide whether to use this feature by setting '--master_place_tablet_replicas_based_on_dimension'. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 674 insertions(+), 76 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/18 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 18 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Alexey Serbin has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 17: (1 comment) http://gerrit.cloudera.org:8080/#/c/13632/10/src/kudu/master/placement_policy-test.cc File src/kudu/master/placement_policy-test.cc: http://gerrit.cloudera.org:8080/#/c/13632/10/src/kudu/master/placement_policy-test.cc@904 PS10, Line 904: { "ts2", 1000, { { "labelA", 1000 }, } }, : } > > It would be nice to add a few scenarios where: Ah, that's just about distribution of tablet replicas per tablet server regardless of whether they belong to particular table or not. I.e., if using two tables "A" and "B", that's about how many replicas (regardless whether they are replicas of a tablet of table "A" or "B") are at each tablet server. -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 17 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Fri, 12 Jul 2019 01:03:35 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 17: Code-Review+1 OK sure. I think Alexey should take another look though; I didn't review the placement policy changes. -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 17 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Thu, 11 Jul 2019 23:25:47 + Gerrit-HasComments: No
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Yao Xu has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 17: (1 comment) http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365 PS12, Line 365: // Indicates that the tablet server needs to report the number of tablets > The docs are helpful, but I still don't fully understand the > motivation. Can you make a reasonable argument that the code > complexity of making this behavior optional is worth the > optimization? How about now? :) -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 17 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Thu, 11 Jul 2019 13:45:01 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#17). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. You can decide whether to use this feature by setting '--master_place_tablet_replicas_based_on_dimension'. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 595 insertions(+), 74 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/17 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 17 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 16: (1 comment) http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365 PS12, Line 365: // Indicates that the tablet server needs to report the number of tablets > > Still not clear on why this is necessary. Why not have tservers The docs are helpful, but I still don't fully understand the motivation. Can you make a reasonable argument that the code complexity of making this behavior optional is worth the optimization? -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 16 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Thu, 11 Jul 2019 04:45:57 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Yao Xu has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 16: (2 comments) http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h File src/kudu/client/client.h: http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h@879 PS15, Line 879: /// @note By default (or if the cluster is configured without : /// '--master_place_tablet_replicas_based_on_dimension'), the master will try to place : /// newly created tablet replicas on tablet servers with a small number of tablet replicas. : /// If the dimension label is provided, newly created replicas will be evenly distributed : /// in the cluster based on the dimension label. In other words, the master will try t > Thanks, this is useful. I'd rewrite it though: Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365 PS12, Line 365: // Indicates that the tablet server needs to report the number of tablets > Still not clear on why this is necessary. Why not have tservers > always report this information? I added some docs, I hope this will be clearer. -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 16 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Thu, 11 Jul 2019 02:34:17 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#16). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. You can decide whether to use this feature by setting '--master_place_tablet_replicas_based_on_dimension'. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 593 insertions(+), 74 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/16 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 16 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 15: (2 comments) http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h File src/kudu/client/client.h: http://gerrit.cloudera.org:8080/#/c/13632/15/src/kudu/client/client.h@879 PS15, Line 879: /// @note By default or masters doesn't set '--master_place_tablet_replicas_based_on_dimension', : /// it will select a tablet server with a smaller number of tablet replicas to place newly : /// created tablet replicas. If set the dimension label, the newly created tablet will be : /// evenly distributed in the cluster distribution based on dimension. In other words, it will : /// select a tablet server with a smaller number of tablet replicas in this dimension. Thanks, this is useful. I'd rewrite it though: 'By default (or if the cluster is configured without '--master_place...'), the master will try to place newly created tablet replicas on tablet servers with a small number of tablet replicas. If the dimension label is provided, newly created replicas will be evenly distributed in the cluster based on the dimension label. In other words, the master will try to place newly created tablet replicas on tablet servers with a small number of tablet replicas belonging to this dimension label.' http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365 PS12, Line 365: // Indicates that the tablet server needs to report the number of tablets > Done Still not clear on why this is necessary. Why not have tservers always report this information? -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 15 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Wed, 10 Jul 2019 14:44:36 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Yao Xu has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 15: (12 comments) > (12 comments) > > Just passing through; didn't look at the placement policy or > testing changes. > > Do you intend to roll this out for the Java client API in a > follow-on patch? Yes, I will support the Java client API in a follow-on patch. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h File src/kudu/client/client.h: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@877 PS12, Line 877: /// Set the dimension label for all tablets created at table creation time. > "Set the dimension label for all tablets created at table creation time". Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@879 PS12, Line 879: /// @note By default or masters doesn't set '--master_place_tablet_replicas_based_on_dimension', > This needs a more thorough explanation. Reading this, I have no idea what " Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@1217 PS12, Line 1217: KuduPartialRow* lower_bound, > This is a backwards incompatible change. See > https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B > for details on what sort of changes are permitted to retain > backwards compatibility. > > In this case, you'll need to add a new variant of AddRangePartition() > with the additional argument. You can't add an overload, because > the existing AddRangePartition did not have any overloads, and > adding one now would make existing usages of > ambiguous. Thanks for pointing this out, I think we need to add a new interface to fix this issue. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc File src/kudu/master/catalog_manager.cc: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3713 PS12, Line 3713: enable > enabled Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3715 PS12, Line 3715: optional Elsewhere you use optional without the boost:: prefix. Pick one approach an Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3716 PS12, Line 3716: if (FLAGS_master_place_tablet_replicas_based_on_dimension && : tablet_->metadata().state().pb.has_dimension_label()) { > Combine into one if statement. Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4668 PS12, Line 4668: one. > enabled Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4671 PS12, Line 4671: tablet->metadata().state().pb.has_dimension_label()) { : dimension = tablet->metadata().state().pb.dimension_label( > Combine Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365 PS12, Line 365: // Indicates that the tablet server needs to report the number of tablets > Doc what this means. Also, why does it exist at all? What value does select Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@472 PS12, Line 472: > "The dimension label for tablets that were created during table creation." Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h File src/kudu/master/ts_descriptor.h: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h@138 PS12, Line 138: int num_live_replicas(const boost::optional& dimension = boost::none) const { > Odd that the optional isn't passed by cref, given that we're not std::move' Done http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h File src/kudu/tserver/ts_tablet_manager.h: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h@205 PS12, Line 205: TabletNumByDimensionMap GetNumLiveTabletsByDimension() const; > Could we just return the map? Done -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 15 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Wed, 10 Jul 2019 10:32:36 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Adar Dembo, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#15). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. You can decide whether to use this feature by setting '--master_place_tablet_replicas_based_on_dimension'. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 586 insertions(+), 74 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/15 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 15 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Adar Dembo has posted comments on this change. ( http://gerrit.cloudera.org:8080/13632 ) Change subject: KUDU-2823 Place tablet replicas based on dimension .. Patch Set 14: (12 comments) Just passing through; didn't look at the placement policy or testing changes. Do you intend to roll this out for the Java client API in a follow-on patch? http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h File src/kudu/client/client.h: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@877 PS12, Line 877: /// Set the dimension label for the tablet that was created when the table creating. "Set the dimension label for all tablets created at table creation time". http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@879 PS12, Line 879: /// Used by the master to determine load when creating new tablet replicas based on dimension. This needs a more thorough explanation. Reading this, I have no idea what "load" means, nor what "creating new replicas based on dimension" means. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/client/client.h@1217 PS12, Line 1217: const std::string& dimension_label = ""); This is a backwards incompatible change. See https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B for details on what sort of changes are permitted to retain backwards compatibility. In this case, you'll need to add a new variant of AddRangePartition() with the additional argument. You can't add an overload, because the existing AddRangePartition did not have any overloads, and adding one now would make existing usages of ambiguous. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc File src/kudu/master/catalog_manager.cc: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3713 PS12, Line 3713: enable enabled http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3715 PS12, Line 3715: boost::optional Elsewhere you use optional without the boost:: prefix. Pick one approach and use it consistently. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@3716 PS12, Line 3716: if (FLAGS_master_place_tablet_replicas_based_on_dimension) { : if (tablet_->metadata().state().pb.has_dimension_label()) { Combine into one if statement. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4668 PS12, Line 4668: enable enabled http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/catalog_manager.cc@4671 PS12, Line 4671: if (FLAGS_master_place_tablet_replicas_based_on_dimension) { : if (tablet->metadata().state().pb.has_dimension_label()) { Combine http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto File src/kudu/master/master.proto: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@365 PS12, Line 365: optional bool needs_num_live_tablets_by_dimension = 10 [ default = false ]; Doc what this means. Also, why does it exist at all? What value does selectively enabling/disabling this portion of the heartbeat add? http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/master.proto@472 PS12, Line 472: // The dimension label for tablet that was created when the table creating. "The dimension label for tablets that were created during table creation." http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h File src/kudu/master/ts_descriptor.h: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/master/ts_descriptor.h@138 PS12, Line 138: int num_live_replicas(boost::optional dimension = boost::none) const { Odd that the optional isn't passed by cref, given that we're not std::move'ing it into a class member. http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h File src/kudu/tserver/ts_tablet_manager.h: http://gerrit.cloudera.org:8080/#/c/13632/12/src/kudu/tserver/ts_tablet_manager.h@205 PS12, Line 205: void GetNumLiveTabletsByDimension(TabletNumByDimensionMap* num_live_tablets_by_dimension) const; Could we just return the map? -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: comment Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 14 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Adar Dembo Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu Gerrit-Comment-Date: Tue, 09 Jul 2019 03:49:28 + Gerrit-HasComments: Yes
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#14). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect replicas of the newly created tablet to be evenly distributed across all available tablet servers. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. You can decide whether to use this feature by setting '--master_place_tablet_replicas_based_on_dimension'. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 533 insertions(+), 76 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/14 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 14 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu
[kudu-CR] KUDU-2823 Place tablet replicas based on dimension
Hello Tidy Bot, Alexey Serbin, Kudu Jenkins, Andrew Wong, Todd Lipcon, I'd like you to reexamine a change. Please visit http://gerrit.cloudera.org:8080/13632 to look at the new patch set (#13). Change subject: KUDU-2823 Place tablet replicas based on dimension .. KUDU-2823 Place tablet replicas based on dimension When we add a new range to the fact table, we expect the newly created tablet to be evenly distributed on each tablet server. This is especially important when we use time as the range key. The more recent the data, the hotter it gets. We expect hot tablets on the cluster to be evenly distributed. Unfortunately, after we add some new tablet servers to the cluster, creating a new tablet replica will prioritize the new tablet server for placement according to the current placement policy. This is because we prefer to select tablet server which a smaller number of tablet replicas. This will cause hot tablets to be concentrated on these new tablet servers. So, I added a new placement policy. When creating a new tablet replica, we prefer to select tablet server which a smaller number of tablet replicas in the dimension. You can set dimensions when creating tables and adding partitions, this will ensure that the new tablets are evenly distributed in the cluster based on dimension. You can decide whether to use this feature by setting '--master_place_tablet_replicas_based_on_dimension'. Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 --- M src/kudu/client/client.cc M src/kudu/client/client.h M src/kudu/client/table_alterer-internal.cc M src/kudu/client/table_alterer-internal.h M src/kudu/client/table_creator-internal.h M src/kudu/integration-tests/create-table-itest.cc M src/kudu/master/catalog_manager.cc M src/kudu/master/catalog_manager.h M src/kudu/master/master.proto M src/kudu/master/master_service.cc M src/kudu/master/placement_policy-test.cc M src/kudu/master/placement_policy.cc M src/kudu/master/placement_policy.h M src/kudu/master/sys_catalog.cc M src/kudu/master/ts_descriptor.cc M src/kudu/master/ts_descriptor.h M src/kudu/tablet/metadata.proto M src/kudu/tablet/tablet-harness.h M src/kudu/tablet/tablet_bootstrap-test.cc M src/kudu/tablet/tablet_metadata.cc M src/kudu/tablet/tablet_metadata.h M src/kudu/tools/kudu-tool-test.cc M src/kudu/tserver/heartbeater.cc M src/kudu/tserver/mini_tablet_server.cc M src/kudu/tserver/tablet_copy_client.cc M src/kudu/tserver/tablet_server-test.cc M src/kudu/tserver/tablet_service.cc M src/kudu/tserver/ts_tablet_manager-test.cc M src/kudu/tserver/ts_tablet_manager.cc M src/kudu/tserver/ts_tablet_manager.h M src/kudu/tserver/tserver_admin.proto 31 files changed, 533 insertions(+), 76 deletions(-) git pull ssh://gerrit.cloudera.org:29418/kudu refs/changes/32/13632/13 -- To view, visit http://gerrit.cloudera.org:8080/13632 To unsubscribe, visit http://gerrit.cloudera.org:8080/settings Gerrit-Project: kudu Gerrit-Branch: master Gerrit-MessageType: newpatchset Gerrit-Change-Id: I48a225e221eb42ef2f5489687e80a151d8dc1a42 Gerrit-Change-Number: 13632 Gerrit-PatchSet: 13 Gerrit-Owner: Yao Xu Gerrit-Reviewer: Alexey Serbin Gerrit-Reviewer: Andrew Wong Gerrit-Reviewer: Kudu Jenkins (120) Gerrit-Reviewer: Tidy Bot (241) Gerrit-Reviewer: Todd Lipcon Gerrit-Reviewer: Yao Xu