From b4e8b914145c343f023d073ee78d324540716277 Mon Sep 17 00:00:00 2001 From: mokai Date: Fri, 28 May 2021 19:23:25 +0800 Subject: [PATCH] HBASE-25718 Backport "HBASE-25705 Convert proto to RSGroupInfo is costly" (#3109) Signed-off-by: Pankaj Kumar --- .../hadoop/hbase/protobuf/ProtobufUtil.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java index dc7f7d23a10..5a01af9fd2a 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java @@ -35,10 +35,12 @@ import java.lang.reflect.Method; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.Map; import java.util.NavigableSet; import java.util.function.Function; +import java.util.stream.Collectors; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.Cell.Type; @@ -1777,14 +1779,17 @@ public final class ProtobufUtil { } public static RSGroupInfo toGroupInfo(RSGroupProtos.RSGroupInfo proto) { - RSGroupInfo RSGroupInfo = new RSGroupInfo(proto.getName()); - for(HBaseProtos.ServerName el: proto.getServersList()) { - RSGroupInfo.addServer(Address.fromParts(el.getHostName(), el.getPort())); - } - for(TableProtos.TableName pTableName: proto.getTablesList()) { - RSGroupInfo.addTable(ProtobufUtil.toTableName(pTableName)); - } - return RSGroupInfo; + RSGroupInfo rsGroupInfo = new RSGroupInfo(proto.getName()); + + Collection
addresses = proto.getServersList().parallelStream() + .map(serverName -> Address.fromParts(serverName.getHostName(), serverName.getPort())) + .collect(Collectors.toList()); + rsGroupInfo.addAllServers(addresses); + + Collection tables = proto.getTablesList().parallelStream() + .map(ProtobufUtil::toTableName).collect(Collectors.toList()); + rsGroupInfo.addAllTables(tables); + return rsGroupInfo; } public static HBaseProtos.TimeRange toTimeRange(TimeRange timeRange) {