@Override
  public ListRSGroupInfosResponse listRSGroupInfos(RpcController controller,
    ListRSGroupInfosRequest request) throws ServiceException {
    ListRSGroupInfosResponse.Builder builder = ListRSGroupInfosResponse.newBuilder();
    LOG.info(server.getClientIdAuditPrefix() + " list rsgroup");
    try {
      if (server.getMasterCoprocessorHost() != null) {
        server.getMasterCoprocessorHost().preListRSGroups();
      }
      List<RSGroupInfo> rsGroupInfos = server.getRSGroupInfoManager().listRSGroups().stream()
        .map(RSGroupInfo::new).collect(Collectors.toList());
      Map<String, RSGroupInfo> name2Info = new HashMap<>();
      List<TableDescriptor> needToFill =
        new ArrayList<>(server.getTableDescriptors().getAll().values());
      for (RSGroupInfo rsGroupInfo : rsGroupInfos) {
        name2Info.put(rsGroupInfo.getName(), rsGroupInfo);
        for (TableDescriptor td : server.getTableDescriptors().getAll().values()) {
          if (rsGroupInfo.containsTable(td.getTableName())) {
            needToFill.remove(td);
          }
        }
      }
      for (TableDescriptor td : needToFill) {
        String groupName = td.getRegionServerGroup().orElse(RSGroupInfo.DEFAULT_GROUP);
        RSGroupInfo rsGroupInfo = name2Info.get(groupName);
        if (rsGroupInfo != null) {
          rsGroupInfo.addTable(td.getTableName());
        }
      }
      for (RSGroupInfo rsGroupInfo : rsGroupInfos) {
        // TODO: this can be done at once outside this loop, do not need to scan all every time.
        builder.addRSGroupInfo(ProtobufUtil.toProtoGroupInfo(rsGroupInfo));
      }
      if (server.getMasterCoprocessorHost() != null) {
        server.getMasterCoprocessorHost().postListRSGroups();
      }
    } catch (IOException e) {
      throw new ServiceException(e);
    }
    return builder.build();
  }
Bypass specified procedure to completion. Procedure is marked completed but no actual work is
done from the current state/ step onwards. Parents of the procedure are also marked for bypass.
NOTE: this is a dangerous operation and may be used to unstuck buggy procedures. This may leave
system in incoherent state. This may need to be followed by some cleanup steps/ actions by
operator.
@return BypassProcedureToCompletionResponse indicating success or failure
hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterRpcServices.java