You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2016/09/29 19:37:59 UTC

[45/51] [partial] hbase git commit: HBASE-16264 Figure how to deal with endpoints and shaded pb Shade our protobufs. Do it in a manner that makes it so we can still have in our API references to com.google.protobuf (and in REST). The c.g.p in API is for

http://git-wip-us.apache.org/repos/asf/hbase/blob/17d4b70d/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java
deleted file mode 100644
index 860e0e4..0000000
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/RequestConverter.java
+++ /dev/null
@@ -1,1794 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.hbase.protobuf;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import org.apache.hadoop.hbase.CellScannable;
-import org.apache.hadoop.hbase.DoNotRetryIOException;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HRegionInfo;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.ServerName;
-import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.classification.InterfaceAudience;
-import org.apache.hadoop.hbase.client.Action;
-import org.apache.hadoop.hbase.client.Append;
-import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.Durability;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.Increment;
-import org.apache.hadoop.hbase.client.MasterSwitchType;
-import org.apache.hadoop.hbase.client.Mutation;
-import org.apache.hadoop.hbase.client.Put;
-import org.apache.hadoop.hbase.client.RegionCoprocessorServiceExec;
-import org.apache.hadoop.hbase.client.Row;
-import org.apache.hadoop.hbase.client.RowMutations;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.exceptions.DeserializationException;
-import org.apache.hadoop.hbase.filter.ByteArrayComparable;
-import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CloseRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.CompactRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.FlushRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetOnlineRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetRegionInfoRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetServerInfoRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.GetStoreFileRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.MergeRegionsRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.OpenRegionRequest.RegionOpenInfo;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.RollWALWriterRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.SplitRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.StopServerRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.UpdateFavoredNodesRequest.RegionUpdateInfo;
-import org.apache.hadoop.hbase.protobuf.generated.AdminProtos.WarmupRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.BulkLoadHFileRequest;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.Condition;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.GetRequest;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutateRequest;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.ColumnValue;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.ColumnValue.QualifierValue;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.RegionAction;
-import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.ScanRequest;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.CompareType;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier;
-import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.RegionSpecifier.RegionSpecifierType;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.AddColumnRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.AssignRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.BalanceRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.CreateTableRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DeleteColumnRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DeleteTableRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DisableTableRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.DispatchMergingRegionsRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.EnableCatalogJanitorRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.EnableTableRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetClusterStatusRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetSchemaAlterStatusRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableDescriptorsRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableNamesRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.GetTableStateRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsBalancerEnabledRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsCatalogJanitorEnabledRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsMasterRunningRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsNormalizerEnabledRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.IsSplitOrMergeEnabledRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyColumnRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.ModifyTableRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.MoveRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.NormalizeRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.OfflineRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.RunCatalogScanRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SetBalancerRunningRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SetNormalizerRunningRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.SetSplitOrMergeEnabledRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.TruncateTableRequest;
-import org.apache.hadoop.hbase.protobuf.generated.MasterProtos.UnassignRegionRequest;
-import org.apache.hadoop.hbase.protobuf.generated.RegionServerStatusProtos.GetLastFlushedSequenceIdRequest;
-import org.apache.hadoop.hbase.util.ByteStringer;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;
-import org.apache.hadoop.hbase.util.Pair;
-import org.apache.hadoop.security.token.Token;
-
-import com.google.protobuf.ByteString;
-
-/**
- * Helper utility to build protocol buffer requests,
- * or build components for protocol buffer requests.
- */
-@InterfaceAudience.Private
-public final class RequestConverter {
-
-  private RequestConverter() {
-  }
-
-// Start utilities for Client
-
-  /**
-   * Create a protocol buffer GetRequest for a client Get
-   *
-   * @param regionName the name of the region to get
-   * @param get the client Get
-   * @return a protocol buffer GetRequest
-   */
-  public static GetRequest buildGetRequest(final byte[] regionName,
-      final Get get) throws IOException {
-    GetRequest.Builder builder = GetRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    builder.setGet(ProtobufUtil.toGet(get));
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for a client increment
-   *
-   * @param regionName
-   * @param row
-   * @param family
-   * @param qualifier
-   * @param amount
-   * @param durability
-   * @return a mutate request
-   */
-  public static MutateRequest buildIncrementRequest(
-      final byte[] regionName, final byte[] row, final byte[] family, final byte[] qualifier,
-      final long amount, final Durability durability, long nonceGroup, long nonce) {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-
-    MutationProto.Builder mutateBuilder = MutationProto.newBuilder();
-    mutateBuilder.setRow(ByteStringer.wrap(row));
-    mutateBuilder.setMutateType(MutationType.INCREMENT);
-    mutateBuilder.setDurability(ProtobufUtil.toDurability(durability));
-    ColumnValue.Builder columnBuilder = ColumnValue.newBuilder();
-    columnBuilder.setFamily(ByteStringer.wrap(family));
-    QualifierValue.Builder valueBuilder = QualifierValue.newBuilder();
-    valueBuilder.setValue(ByteStringer.wrap(Bytes.toBytes(amount)));
-    valueBuilder.setQualifier(ByteStringer.wrap(qualifier));
-    columnBuilder.addQualifierValue(valueBuilder.build());
-    mutateBuilder.addColumnValue(columnBuilder.build());
-    if (nonce != HConstants.NO_NONCE) {
-      mutateBuilder.setNonce(nonce);
-    }
-    builder.setMutation(mutateBuilder.build());
-    if (nonceGroup != HConstants.NO_NONCE) {
-      builder.setNonceGroup(nonceGroup);
-    }
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for a conditioned put
-   *
-   * @param regionName
-   * @param row
-   * @param family
-   * @param qualifier
-   * @param comparator
-   * @param compareType
-   * @param put
-   * @return a mutate request
-   * @throws IOException
-   */
-  public static MutateRequest buildMutateRequest(
-      final byte[] regionName, final byte[] row, final byte[] family,
-      final byte [] qualifier, final ByteArrayComparable comparator,
-      final CompareType compareType, final Put put) throws IOException {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    Condition condition = buildCondition(
-      row, family, qualifier, comparator, compareType);
-    builder.setMutation(ProtobufUtil.toMutation(MutationType.PUT, put, MutationProto.newBuilder()));
-    builder.setCondition(condition);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for a conditioned delete
-   *
-   * @param regionName
-   * @param row
-   * @param family
-   * @param qualifier
-   * @param comparator
-   * @param compareType
-   * @param delete
-   * @return a mutate request
-   * @throws IOException
-   */
-  public static MutateRequest buildMutateRequest(
-      final byte[] regionName, final byte[] row, final byte[] family,
-      final byte [] qualifier, final ByteArrayComparable comparator,
-      final CompareType compareType, final Delete delete) throws IOException {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    Condition condition = buildCondition(
-      row, family, qualifier, comparator, compareType);
-    builder.setMutation(ProtobufUtil.toMutation(MutationType.DELETE, delete,
-      MutationProto.newBuilder()));
-    builder.setCondition(condition);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for conditioned row mutations
-   *
-   * @param regionName
-   * @param row
-   * @param family
-   * @param qualifier
-   * @param comparator
-   * @param compareType
-   * @param rowMutations
-   * @return a mutate request
-   * @throws IOException
-   */
-  public static ClientProtos.MultiRequest buildMutateRequest(
-      final byte[] regionName, final byte[] row, final byte[] family,
-      final byte [] qualifier, final ByteArrayComparable comparator,
-      final CompareType compareType, final RowMutations rowMutations) throws IOException {
-    RegionAction.Builder builder =
-        getRegionActionBuilderWithRegion(RegionAction.newBuilder(), regionName);
-    builder.setAtomic(true);
-    ClientProtos.Action.Builder actionBuilder = ClientProtos.Action.newBuilder();
-    MutationProto.Builder mutationBuilder = MutationProto.newBuilder();
-    Condition condition = buildCondition(
-        row, family, qualifier, comparator, compareType);
-    for (Mutation mutation: rowMutations.getMutations()) {
-      MutationType mutateType = null;
-      if (mutation instanceof Put) {
-        mutateType = MutationType.PUT;
-      } else if (mutation instanceof Delete) {
-        mutateType = MutationType.DELETE;
-      } else {
-        throw new DoNotRetryIOException("RowMutations supports only put and delete, not " +
-            mutation.getClass().getName());
-      }
-      mutationBuilder.clear();
-      MutationProto mp = ProtobufUtil.toMutation(mutateType, mutation, mutationBuilder);
-      actionBuilder.clear();
-      actionBuilder.setMutation(mp);
-      builder.addAction(actionBuilder.build());
-    }
-    ClientProtos.MultiRequest request =
-        ClientProtos.MultiRequest.newBuilder().addRegionAction(builder.build())
-            .setCondition(condition).build();
-    return request;
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for a put
-   *
-   * @param regionName
-   * @param put
-   * @return a mutate request
-   * @throws IOException
-   */
-  public static MutateRequest buildMutateRequest(
-      final byte[] regionName, final Put put) throws IOException {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    builder.setMutation(ProtobufUtil.toMutation(MutationType.PUT, put, MutationProto.newBuilder()));
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for an append
-   *
-   * @param regionName
-   * @param append
-   * @return a mutate request
-   * @throws IOException
-   */
-  public static MutateRequest buildMutateRequest(final byte[] regionName,
-      final Append append, long nonceGroup, long nonce) throws IOException {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    if (nonce != HConstants.NO_NONCE && nonceGroup != HConstants.NO_NONCE) {
-      builder.setNonceGroup(nonceGroup);
-    }
-    builder.setMutation(ProtobufUtil.toMutation(MutationType.APPEND, append,
-      MutationProto.newBuilder(), nonce));
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for a client increment
-   *
-   * @param regionName
-   * @param increment
-   * @return a mutate request
-   */
-  public static MutateRequest buildMutateRequest(final byte[] regionName,
-      final Increment increment, final long nonceGroup, final long nonce) {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    if (nonce != HConstants.NO_NONCE && nonceGroup != HConstants.NO_NONCE) {
-      builder.setNonceGroup(nonceGroup);
-    }
-    builder.setMutation(ProtobufUtil.toMutation(increment, MutationProto.newBuilder(), nonce));
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MutateRequest for a delete
-   *
-   * @param regionName
-   * @param delete
-   * @return a mutate request
-   * @throws IOException
-   */
-  public static MutateRequest buildMutateRequest(
-      final byte[] regionName, final Delete delete) throws IOException {
-    MutateRequest.Builder builder = MutateRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    builder.setMutation(ProtobufUtil.toMutation(MutationType.DELETE, delete,
-      MutationProto.newBuilder()));
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MultiRequest for row mutations.
-   * Does not propagate Action absolute position.  Does not set atomic action on the created
-   * RegionAtomic.  Caller should do that if wanted.
-   * @param regionName
-   * @param rowMutations
-   * @return a data-laden RegionMutation.Builder
-   * @throws IOException
-   */
-  public static RegionAction.Builder buildRegionAction(final byte [] regionName,
-      final RowMutations rowMutations)
-  throws IOException {
-    RegionAction.Builder builder =
-      getRegionActionBuilderWithRegion(RegionAction.newBuilder(), regionName);
-    ClientProtos.Action.Builder actionBuilder = ClientProtos.Action.newBuilder();
-    MutationProto.Builder mutationBuilder = MutationProto.newBuilder();
-    for (Mutation mutation: rowMutations.getMutations()) {
-      MutationType mutateType = null;
-      if (mutation instanceof Put) {
-        mutateType = MutationType.PUT;
-      } else if (mutation instanceof Delete) {
-        mutateType = MutationType.DELETE;
-      } else {
-        throw new DoNotRetryIOException("RowMutations supports only put and delete, not " +
-          mutation.getClass().getName());
-      }
-      mutationBuilder.clear();
-      MutationProto mp = ProtobufUtil.toMutation(mutateType, mutation, mutationBuilder);
-      actionBuilder.clear();
-      actionBuilder.setMutation(mp);
-      builder.addAction(actionBuilder.build());
-    }
-    return builder;
-  }
-
-  /**
-   * Create a protocol buffer MultiRequest for row mutations that does not hold data.  Data/Cells
-   * are carried outside of protobuf.  Return references to the Cells in <code>cells</code> param.
-    * Does not propagate Action absolute position.  Does not set atomic action on the created
-   * RegionAtomic.  Caller should do that if wanted.
-   * @param regionName
-   * @param rowMutations
-   * @param cells Return in here a list of Cells as CellIterable.
-   * @return a region mutation minus data
-   * @throws IOException
-   */
-  public static RegionAction.Builder buildNoDataRegionAction(final byte[] regionName,
-      final RowMutations rowMutations, final List<CellScannable> cells,
-      final RegionAction.Builder regionActionBuilder,
-      final ClientProtos.Action.Builder actionBuilder,
-      final MutationProto.Builder mutationBuilder)
-  throws IOException {
-    for (Mutation mutation: rowMutations.getMutations()) {
-      MutationType type = null;
-      if (mutation instanceof Put) {
-        type = MutationType.PUT;
-      } else if (mutation instanceof Delete) {
-        type = MutationType.DELETE;
-      } else {
-        throw new DoNotRetryIOException("RowMutations supports only put and delete, not " +
-          mutation.getClass().getName());
-      }
-      mutationBuilder.clear();
-      MutationProto mp = ProtobufUtil.toMutationNoData(type, mutation, mutationBuilder);
-      cells.add(mutation);
-      actionBuilder.clear();
-      regionActionBuilder.addAction(actionBuilder.setMutation(mp).build());
-    }
-    return regionActionBuilder;
-  }
-
-  private static RegionAction.Builder getRegionActionBuilderWithRegion(
-      final RegionAction.Builder regionActionBuilder, final byte [] regionName) {
-    RegionSpecifier region = buildRegionSpecifier(RegionSpecifierType.REGION_NAME, regionName);
-    regionActionBuilder.setRegion(region);
-    return regionActionBuilder;
-  }
-
-  /**
-   * Create a protocol buffer ScanRequest for a client Scan
-   *
-   * @param regionName
-   * @param scan
-   * @param numberOfRows
-   * @param closeScanner
-   * @return a scan request
-   * @throws IOException
-   */
-  public static ScanRequest buildScanRequest(final byte[] regionName, final Scan scan,
-      final int numberOfRows, final boolean closeScanner) throws IOException {
-    ScanRequest.Builder builder = ScanRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setNumberOfRows(numberOfRows);
-    builder.setCloseScanner(closeScanner);
-    builder.setRegion(region);
-    builder.setScan(ProtobufUtil.toScan(scan));
-    builder.setClientHandlesPartials(true);
-    builder.setClientHandlesHeartbeats(true);
-    builder.setTrackScanMetrics(scan.isScanMetricsEnabled());
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer ScanRequest for a scanner id
-   *
-   * @param scannerId
-   * @param numberOfRows
-   * @param closeScanner
-   * @return a scan request
-   */
-  public static ScanRequest buildScanRequest(final long scannerId, final int numberOfRows,
-      final boolean closeScanner, final boolean trackMetrics) {
-    ScanRequest.Builder builder = ScanRequest.newBuilder();
-    builder.setNumberOfRows(numberOfRows);
-    builder.setCloseScanner(closeScanner);
-    builder.setScannerId(scannerId);
-    builder.setClientHandlesPartials(true);
-    builder.setClientHandlesHeartbeats(true);
-    builder.setTrackScanMetrics(trackMetrics);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer ScanRequest for a scanner id
-   *
-   * @param scannerId
-   * @param numberOfRows
-   * @param closeScanner
-   * @param nextCallSeq
-   * @return a scan request
-   */
-  public static ScanRequest buildScanRequest(final long scannerId, final int numberOfRows,
-      final boolean closeScanner, final long nextCallSeq, final boolean trackMetrics,
-      final boolean renew) {
-    ScanRequest.Builder builder = ScanRequest.newBuilder();
-    builder.setNumberOfRows(numberOfRows);
-    builder.setCloseScanner(closeScanner);
-    builder.setScannerId(scannerId);
-    builder.setNextCallSeq(nextCallSeq);
-    builder.setClientHandlesPartials(true);
-    builder.setClientHandlesHeartbeats(true);
-    builder.setTrackScanMetrics(trackMetrics);
-    builder.setRenew(renew);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer bulk load request
-   *
-   * @param familyPaths
-   * @param regionName
-   * @param assignSeqNum
-   * @param userToken
-   * @param bulkToken
-   * @return a bulk load request
-   */
-  public static BulkLoadHFileRequest buildBulkLoadHFileRequest(
-      final List<Pair<byte[], String>> familyPaths,
-      final byte[] regionName, boolean assignSeqNum,
-      final Token<?> userToken, final String bulkToken) {
-    return buildBulkLoadHFileRequest(familyPaths, regionName, assignSeqNum, userToken, bulkToken,
-        false);
-  }
-
-  /**
-   * Create a protocol buffer bulk load request
-   *
-   * @param familyPaths
-   * @param regionName
-   * @param assignSeqNum
-   * @param userToken
-   * @param bulkToken
-   * @param copyFiles
-   * @return a bulk load request
-   */
-  public static BulkLoadHFileRequest buildBulkLoadHFileRequest(
-      final List<Pair<byte[], String>> familyPaths,
-      final byte[] regionName, boolean assignSeqNum,
-      final Token<?> userToken, final String bulkToken, boolean copyFiles) {
-    RegionSpecifier region = RequestConverter.buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-
-    ClientProtos.DelegationToken protoDT = null;
-    if (userToken != null) {
-      protoDT =
-          ClientProtos.DelegationToken.newBuilder()
-            .setIdentifier(ByteStringer.wrap(userToken.getIdentifier()))
-            .setPassword(ByteStringer.wrap(userToken.getPassword()))
-            .setKind(userToken.getKind().toString())
-            .setService(userToken.getService().toString()).build();
-    }
-
-    List<ClientProtos.BulkLoadHFileRequest.FamilyPath> protoFamilyPaths =
-        new ArrayList<ClientProtos.BulkLoadHFileRequest.FamilyPath>(familyPaths.size());
-    for(Pair<byte[], String> el: familyPaths) {
-      protoFamilyPaths.add(ClientProtos.BulkLoadHFileRequest.FamilyPath.newBuilder()
-        .setFamily(ByteStringer.wrap(el.getFirst()))
-        .setPath(el.getSecond()).build());
-    }
-
-    BulkLoadHFileRequest.Builder request =
-        ClientProtos.BulkLoadHFileRequest.newBuilder()
-          .setRegion(region)
-          .setAssignSeqNum(assignSeqNum)
-          .addAllFamilyPath(protoFamilyPaths);
-    if (userToken != null) {
-      request.setFsToken(protoDT);
-    }
-    if (bulkToken != null) {
-      request.setBulkToken(bulkToken);
-    }
-    request.setCopyFile(copyFiles);
-    return request.build();
-  }
-
-  /**
-   * Create a protocol buffer multi request for a list of actions.
-   * Propagates Actions original index.
-   *
-   * @param regionName
-   * @param actions
-   * @return a multi request
-   * @throws IOException
-   */
-  public static <R> RegionAction.Builder buildRegionAction(final byte[] regionName,
-      final List<Action<R>> actions, final RegionAction.Builder regionActionBuilder,
-      final ClientProtos.Action.Builder actionBuilder,
-      final MutationProto.Builder mutationBuilder) throws IOException {
-    for (Action<R> action: actions) {
-      Row row = action.getAction();
-      actionBuilder.clear();
-      actionBuilder.setIndex(action.getOriginalIndex());
-      mutationBuilder.clear();
-      if (row instanceof Get) {
-        Get g = (Get)row;
-        regionActionBuilder.addAction(actionBuilder.setGet(ProtobufUtil.toGet(g)));
-      } else if (row instanceof Put) {
-        regionActionBuilder.addAction(actionBuilder.
-          setMutation(ProtobufUtil.toMutation(MutationType.PUT, (Put)row, mutationBuilder)));
-      } else if (row instanceof Delete) {
-        regionActionBuilder.addAction(actionBuilder.
-          setMutation(ProtobufUtil.toMutation(MutationType.DELETE, (Delete)row, mutationBuilder)));
-      } else if (row instanceof Append) {
-        regionActionBuilder.addAction(actionBuilder.setMutation(ProtobufUtil.toMutation(
-            MutationType.APPEND, (Append)row, mutationBuilder, action.getNonce())));
-      } else if (row instanceof Increment) {
-        regionActionBuilder.addAction(actionBuilder.setMutation(
-            ProtobufUtil.toMutation((Increment)row, mutationBuilder, action.getNonce())));
-      } else if (row instanceof RegionCoprocessorServiceExec) {
-        RegionCoprocessorServiceExec exec = (RegionCoprocessorServiceExec) row;
-        regionActionBuilder.addAction(actionBuilder.setServiceCall(
-            ClientProtos.CoprocessorServiceCall.newBuilder()
-              .setRow(ByteStringer.wrap(exec.getRow()))
-              .setServiceName(exec.getMethod().getService().getFullName())
-              .setMethodName(exec.getMethod().getName())
-              .setRequest(exec.getRequest().toByteString())));
-      } else if (row instanceof RowMutations) {
-        throw new UnsupportedOperationException("No RowMutations in multi calls; use mutateRow");
-      } else {
-        throw new DoNotRetryIOException("Multi doesn't support " + row.getClass().getName());
-      }
-    }
-    return regionActionBuilder;
-  }
-
-  /**
-   * Create a protocol buffer multirequest with NO data for a list of actions (data is carried
-   * otherwise than via protobuf).  This means it just notes attributes, whether to write the
-   * WAL, etc., and the presence in protobuf serves as place holder for the data which is
-   * coming along otherwise.  Note that Get is different.  It does not contain 'data' and is always
-   * carried by protobuf.  We return references to the data by adding them to the passed in
-   * <code>data</code> param.
-   *
-   * <p>Propagates Actions original index.
-   *
-   * @param regionName
-   * @param actions
-   * @param cells Place to stuff references to actual data.
-   * @return a multi request that does not carry any data.
-   * @throws IOException
-   */
-  public static <R> RegionAction.Builder buildNoDataRegionAction(final byte[] regionName,
-      final List<Action<R>> actions, final List<CellScannable> cells,
-      final RegionAction.Builder regionActionBuilder,
-      final ClientProtos.Action.Builder actionBuilder,
-      final MutationProto.Builder mutationBuilder) throws IOException {
-    RegionAction.Builder builder = getRegionActionBuilderWithRegion(
-      RegionAction.newBuilder(), regionName);
-    for (Action<R> action: actions) {
-      Row row = action.getAction();
-      actionBuilder.clear();
-      actionBuilder.setIndex(action.getOriginalIndex());
-      mutationBuilder.clear();
-      if (row instanceof Get) {
-        Get g = (Get)row;
-        builder.addAction(actionBuilder.setGet(ProtobufUtil.toGet(g)));
-      } else if (row instanceof Put) {
-        Put p = (Put)row;
-        cells.add(p);
-        builder.addAction(actionBuilder.
-          setMutation(ProtobufUtil.toMutationNoData(MutationType.PUT, p, mutationBuilder)));
-      } else if (row instanceof Delete) {
-        Delete d = (Delete)row;
-        int size = d.size();
-        // Note that a legitimate Delete may have a size of zero; i.e. a Delete that has nothing
-        // in it but the row to delete.  In this case, the current implementation does not make
-        // a KeyValue to represent a delete-of-all-the-row until we serialize... For such cases
-        // where the size returned is zero, we will send the Delete fully pb'd rather than have
-        // metadata only in the pb and then send the kv along the side in cells.
-        if (size > 0) {
-          cells.add(d);
-          builder.addAction(actionBuilder.
-            setMutation(ProtobufUtil.toMutationNoData(MutationType.DELETE, d, mutationBuilder)));
-        } else {
-          builder.addAction(actionBuilder.
-            setMutation(ProtobufUtil.toMutation(MutationType.DELETE, d, mutationBuilder)));
-        }
-      } else if (row instanceof Append) {
-        Append a = (Append)row;
-        cells.add(a);
-        builder.addAction(actionBuilder.setMutation(ProtobufUtil.toMutationNoData(
-          MutationType.APPEND, a, mutationBuilder, action.getNonce())));
-      } else if (row instanceof Increment) {
-        Increment i = (Increment)row;
-        cells.add(i);
-        builder.addAction(actionBuilder.setMutation(ProtobufUtil.toMutationNoData(
-          MutationType.INCREMENT, i, mutationBuilder, action.getNonce())));
-      } else if (row instanceof RegionCoprocessorServiceExec) {
-        RegionCoprocessorServiceExec exec = (RegionCoprocessorServiceExec) row;
-        builder.addAction(actionBuilder.setServiceCall(
-            ClientProtos.CoprocessorServiceCall.newBuilder()
-              .setRow(ByteStringer.wrap(exec.getRow()))
-              .setServiceName(exec.getMethod().getService().getFullName())
-              .setMethodName(exec.getMethod().getName())
-              .setRequest(exec.getRequest().toByteString())));
-      } else if (row instanceof RowMutations) {
-        throw new UnsupportedOperationException("No RowMutations in multi calls; use mutateRow");
-      } else {
-        throw new DoNotRetryIOException("Multi doesn't support " + row.getClass().getName());
-      }
-    }
-    return builder;
-  }
-
-// End utilities for Client
-//Start utilities for Admin
-
-  /**
-   * Create a protocol buffer GetRegionInfoRequest for a given region name
-   *
-   * @param regionName the name of the region to get info
-   * @return a protocol buffer GetRegionInfoRequest
-   */
-  public static GetRegionInfoRequest
-      buildGetRegionInfoRequest(final byte[] regionName) {
-    return buildGetRegionInfoRequest(regionName, false);
-  }
-
-  /**
-   * Create a protocol buffer GetRegionInfoRequest for a given region name
-   *
-   * @param regionName the name of the region to get info
-   * @param includeCompactionState indicate if the compaction state is requested
-   * @return a protocol buffer GetRegionInfoRequest
-   */
-  public static GetRegionInfoRequest
-      buildGetRegionInfoRequest(final byte[] regionName,
-        final boolean includeCompactionState) {
-    GetRegionInfoRequest.Builder builder = GetRegionInfoRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    if (includeCompactionState) {
-      builder.setCompactionState(includeCompactionState);
-    }
-    return builder.build();
-  }
-
- /**
-  * Create a protocol buffer GetStoreFileRequest for a given region name
-  *
-  * @param regionName the name of the region to get info
-  * @param family the family to get store file list
-  * @return a protocol buffer GetStoreFileRequest
-  */
- public static GetStoreFileRequest
-     buildGetStoreFileRequest(final byte[] regionName, final byte[] family) {
-   GetStoreFileRequest.Builder builder = GetStoreFileRequest.newBuilder();
-   RegionSpecifier region = buildRegionSpecifier(
-     RegionSpecifierType.REGION_NAME, regionName);
-   builder.setRegion(region);
-   builder.addFamily(ByteStringer.wrap(family));
-   return builder.build();
- }
-
- /**
-  * Create a protocol buffer GetOnlineRegionRequest
-  *
-  * @return a protocol buffer GetOnlineRegionRequest
-  */
- public static GetOnlineRegionRequest buildGetOnlineRegionRequest() {
-   return GetOnlineRegionRequest.newBuilder().build();
- }
-
- /**
-  * Create a protocol buffer FlushRegionRequest for a given region name
-  *
-  * @param regionName the name of the region to get info
-  * @return a protocol buffer FlushRegionRequest
-  */
- public static FlushRegionRequest
-     buildFlushRegionRequest(final byte[] regionName) {
-   return buildFlushRegionRequest(regionName, false);
- }
-
- /**
-  * Create a protocol buffer FlushRegionRequest for a given region name
-  *
-  * @param regionName the name of the region to get info
-  * @return a protocol buffer FlushRegionRequest
-  */
- public static FlushRegionRequest
-     buildFlushRegionRequest(final byte[] regionName, boolean writeFlushWALMarker) {
-   FlushRegionRequest.Builder builder = FlushRegionRequest.newBuilder();
-   RegionSpecifier region = buildRegionSpecifier(
-     RegionSpecifierType.REGION_NAME, regionName);
-   builder.setRegion(region);
-   builder.setWriteFlushWalMarker(writeFlushWALMarker);
-   return builder.build();
- }
-
- /**
-  * Create a protocol buffer OpenRegionRequest to open a list of regions
-  *
-  * @param server the serverName for the RPC
-  * @param regionOpenInfos info of a list of regions to open
-  * @param openForReplay
-  * @return a protocol buffer OpenRegionRequest
-  */
- public static OpenRegionRequest
-     buildOpenRegionRequest(ServerName server, final List<Pair<HRegionInfo,
-         List<ServerName>>> regionOpenInfos, Boolean openForReplay) {
-   OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder();
-   for (Pair<HRegionInfo, List<ServerName>> regionOpenInfo: regionOpenInfos) {
-     builder.addOpenInfo(buildRegionOpenInfo(regionOpenInfo.getFirst(),
-       regionOpenInfo.getSecond(), openForReplay));
-   }
-   if (server != null) {
-     builder.setServerStartCode(server.getStartcode());
-   }
-   // send the master's wall clock time as well, so that the RS can refer to it
-   builder.setMasterSystemTime(EnvironmentEdgeManager.currentTime());
-   return builder.build();
- }
-
- /**
-  * Create a protocol buffer OpenRegionRequest for a given region
-  *
-  * @param server the serverName for the RPC
-  * @param region the region to open
-  * @param favoredNodes
-  * @param openForReplay
-  * @return a protocol buffer OpenRegionRequest
-  */
- public static OpenRegionRequest buildOpenRegionRequest(ServerName server,
-     final HRegionInfo region, List<ServerName> favoredNodes,
-     Boolean openForReplay) {
-   OpenRegionRequest.Builder builder = OpenRegionRequest.newBuilder();
-   builder.addOpenInfo(buildRegionOpenInfo(region, favoredNodes,
-     openForReplay));
-   if (server != null) {
-     builder.setServerStartCode(server.getStartcode());
-   }
-   builder.setMasterSystemTime(EnvironmentEdgeManager.currentTime());
-   return builder.build();
- }
-
- /**
-  * Create a protocol buffer UpdateFavoredNodesRequest to update a list of favorednode mappings
-  * @param updateRegionInfos
-  * @return a protocol buffer UpdateFavoredNodesRequest
-  */
- public static UpdateFavoredNodesRequest buildUpdateFavoredNodesRequest(
-     final List<Pair<HRegionInfo, List<ServerName>>> updateRegionInfos) {
-   UpdateFavoredNodesRequest.Builder ubuilder = UpdateFavoredNodesRequest.newBuilder();
-   for (Pair<HRegionInfo, List<ServerName>> pair : updateRegionInfos) {
-     RegionUpdateInfo.Builder builder = RegionUpdateInfo.newBuilder();
-     builder.setRegion(HRegionInfo.convert(pair.getFirst()));
-     for (ServerName server : pair.getSecond()) {
-       builder.addFavoredNodes(ProtobufUtil.toServerName(server));
-     }
-     ubuilder.addUpdateInfo(builder.build());
-   }
-   return ubuilder.build();
- }
-
- /**
-  * Create a CloseRegionRequest for a given region name
-  *
-  * @param regionName the name of the region to close
-  * @return a CloseRegionRequest
-  */
- public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
-     final byte[] regionName) {
-   return buildCloseRegionRequest(server, regionName, null);
- }
-
-  public static CloseRegionRequest buildCloseRegionRequest(ServerName server,
-    final byte[] regionName, ServerName destinationServer) {
-    CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
-    RegionSpecifier region = buildRegionSpecifier(
-      RegionSpecifierType.REGION_NAME, regionName);
-    builder.setRegion(region);
-    if (destinationServer != null){
-      builder.setDestinationServer(ProtobufUtil.toServerName(destinationServer));
-    }
-    if (server != null) {
-      builder.setServerStartCode(server.getStartcode());
-    }
-    return builder.build();
-  }
-
-  /**
-   *  Create a WarmupRegionRequest for a given region name
-   *
-   *  @param regionInfo Region we are warming up
-   */
-  public static WarmupRegionRequest buildWarmupRegionRequest(final HRegionInfo regionInfo) {
-    WarmupRegionRequest.Builder builder = WarmupRegionRequest.newBuilder();
-    builder.setRegionInfo(HRegionInfo.convert(regionInfo));
-    return builder.build();
-  }
- /**
-  * Create a CloseRegionRequest for a given encoded region name
-  *
-  * @param encodedRegionName the name of the region to close
-  * @return a CloseRegionRequest
-  */
- public static CloseRegionRequest
-     buildCloseRegionRequest(ServerName server, final String encodedRegionName) {
-   CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
-   RegionSpecifier region = buildRegionSpecifier(
-     RegionSpecifierType.ENCODED_REGION_NAME,
-     Bytes.toBytes(encodedRegionName));
-   builder.setRegion(region);
-   if (server != null) {
-     builder.setServerStartCode(server.getStartcode());
-   }
-   return builder.build();
- }
-
- /**
-  * Create a SplitRegionRequest for a given region name
-  *
-  * @param regionName the name of the region to split
-  * @param splitPoint the split point
-  * @return a SplitRegionRequest
-  */
- public static SplitRegionRequest buildSplitRegionRequest(
-     final byte[] regionName, final byte[] splitPoint) {
-   SplitRegionRequest.Builder builder = SplitRegionRequest.newBuilder();
-   RegionSpecifier region = buildRegionSpecifier(
-     RegionSpecifierType.REGION_NAME, regionName);
-   builder.setRegion(region);
-   if (splitPoint != null) {
-     builder.setSplitPoint(ByteStringer.wrap(splitPoint));
-   }
-   return builder.build();
- }
-
-  /**
-   * Create a MergeRegionsRequest for the given regions
-   * @param regionA name of region a
-   * @param regionB name of region b
-   * @param forcible true if it is a compulsory merge
-   * @return a MergeRegionsRequest
-   */
-  public static MergeRegionsRequest buildMergeRegionsRequest(
-      final byte[] regionA, final byte[] regionB, final boolean forcible) {
-    MergeRegionsRequest.Builder builder = MergeRegionsRequest.newBuilder();
-    RegionSpecifier regionASpecifier = buildRegionSpecifier(
-        RegionSpecifierType.REGION_NAME, regionA);
-    RegionSpecifier regionBSpecifier = buildRegionSpecifier(
-        RegionSpecifierType.REGION_NAME, regionB);
-    builder.setRegionA(regionASpecifier);
-    builder.setRegionB(regionBSpecifier);
-    builder.setForcible(forcible);
-    // send the master's wall clock time as well, so that the RS can refer to it
-    builder.setMasterSystemTime(EnvironmentEdgeManager.currentTime());
-    return builder.build();
-  }
-
- /**
-  * Create a  CompactRegionRequest for a given region name
-  *
-  * @param regionName the name of the region to get info
-  * @param major indicator if it is a major compaction
-  * @return a CompactRegionRequest
-  */
- public static CompactRegionRequest buildCompactRegionRequest(
-     final byte[] regionName, final boolean major, final byte [] family) {
-   CompactRegionRequest.Builder builder = CompactRegionRequest.newBuilder();
-   RegionSpecifier region = buildRegionSpecifier(
-     RegionSpecifierType.REGION_NAME, regionName);
-   builder.setRegion(region);
-   builder.setMajor(major);
-   if (family != null) {
-     builder.setFamily(ByteStringer.wrap(family));
-   }
-   return builder.build();
- }
-
- /**
-  * @see {@link #buildRollWALWriterRequest()}
-  */
- private static RollWALWriterRequest ROLL_WAL_WRITER_REQUEST =
-     RollWALWriterRequest.newBuilder().build();
-
-  /**
-  * Create a new RollWALWriterRequest
-  *
-  * @return a ReplicateWALEntryRequest
-  */
- public static RollWALWriterRequest buildRollWALWriterRequest() {
-   return ROLL_WAL_WRITER_REQUEST;
- }
-
- /**
-  * @see {@link #buildGetServerInfoRequest()}
-  */
- private static GetServerInfoRequest GET_SERVER_INFO_REQUEST =
-   GetServerInfoRequest.newBuilder().build();
-
- /**
-  * Create a new GetServerInfoRequest
-  *
-  * @return a GetServerInfoRequest
-  */
- public static GetServerInfoRequest buildGetServerInfoRequest() {
-   return GET_SERVER_INFO_REQUEST;
- }
-
- /**
-  * Create a new StopServerRequest
-  *
-  * @param reason the reason to stop the server
-  * @return a StopServerRequest
-  */
- public static StopServerRequest buildStopServerRequest(final String reason) {
-   StopServerRequest.Builder builder = StopServerRequest.newBuilder();
-   builder.setReason(reason);
-   return builder.build();
- }
-
-//End utilities for Admin
-
-  /**
-   * Convert a byte array to a protocol buffer RegionSpecifier
-   *
-   * @param type the region specifier type
-   * @param value the region specifier byte array value
-   * @return a protocol buffer RegionSpecifier
-   */
-  public static RegionSpecifier buildRegionSpecifier(
-      final RegionSpecifierType type, final byte[] value) {
-    RegionSpecifier.Builder regionBuilder = RegionSpecifier.newBuilder();
-    regionBuilder.setValue(ByteStringer.wrap(value));
-    regionBuilder.setType(type);
-    return regionBuilder.build();
-  }
-
-  /**
-   * Create a protocol buffer Condition
-   *
-   * @param row
-   * @param family
-   * @param qualifier
-   * @param comparator
-   * @param compareType
-   * @return a Condition
-   * @throws IOException
-   */
-  private static Condition buildCondition(final byte[] row,
-      final byte[] family, final byte [] qualifier,
-      final ByteArrayComparable comparator,
-      final CompareType compareType) throws IOException {
-    Condition.Builder builder = Condition.newBuilder();
-    builder.setRow(ByteStringer.wrap(row));
-    builder.setFamily(ByteStringer.wrap(family));
-    builder.setQualifier(ByteStringer.wrap(qualifier));
-    builder.setComparator(ProtobufUtil.toComparator(comparator));
-    builder.setCompareType(compareType);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer AddColumnRequest
-   *
-   * @param tableName
-   * @param column
-   * @return an AddColumnRequest
-   */
-  public static AddColumnRequest buildAddColumnRequest(
-      final TableName tableName,
-      final HColumnDescriptor column,
-      final long nonceGroup,
-      final long nonce) {
-    AddColumnRequest.Builder builder = AddColumnRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
-    builder.setColumnFamilies(ProtobufUtil.convertToColumnFamilySchema(column));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer DeleteColumnRequest
-   *
-   * @param tableName
-   * @param columnName
-   * @return a DeleteColumnRequest
-   */
-  public static DeleteColumnRequest buildDeleteColumnRequest(
-      final TableName tableName,
-      final byte [] columnName,
-      final long nonceGroup,
-      final long nonce) {
-    DeleteColumnRequest.Builder builder = DeleteColumnRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
-    builder.setColumnName(ByteStringer.wrap(columnName));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer ModifyColumnRequest
-   *
-   * @param tableName
-   * @param column
-   * @return an ModifyColumnRequest
-   */
-  public static ModifyColumnRequest buildModifyColumnRequest(
-      final TableName tableName,
-      final HColumnDescriptor column,
-      final long nonceGroup,
-      final long nonce) {
-    ModifyColumnRequest.Builder builder = ModifyColumnRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
-    builder.setColumnFamilies(ProtobufUtil.convertToColumnFamilySchema(column));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer MoveRegionRequest
-   *
-   * @param encodedRegionName
-   * @param destServerName
-   * @return A MoveRegionRequest
-   * @throws DeserializationException
-   */
-  public static MoveRegionRequest buildMoveRegionRequest(
-      final byte [] encodedRegionName, final byte [] destServerName) throws
-      DeserializationException {
-    MoveRegionRequest.Builder builder = MoveRegionRequest.newBuilder();
-    builder.setRegion(
-      buildRegionSpecifier(RegionSpecifierType.ENCODED_REGION_NAME,encodedRegionName));
-    if (destServerName != null) {
-      builder.setDestServerName(
-        ProtobufUtil.toServerName(ServerName.valueOf(Bytes.toString(destServerName))));
-    }
-    return builder.build();
-  }
-
-  public static DispatchMergingRegionsRequest buildDispatchMergingRegionsRequest(
-      final byte[] encodedNameOfRegionA,
-      final byte[] encodedNameOfRegionB,
-      final boolean forcible,
-      final long nonceGroup,
-      final long nonce) throws DeserializationException {
-    DispatchMergingRegionsRequest.Builder builder = DispatchMergingRegionsRequest.newBuilder();
-    builder.setRegionA(buildRegionSpecifier(
-        RegionSpecifierType.ENCODED_REGION_NAME, encodedNameOfRegionA));
-    builder.setRegionB(buildRegionSpecifier(
-        RegionSpecifierType.ENCODED_REGION_NAME, encodedNameOfRegionB));
-    builder.setForcible(forcible);
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Create a protocol buffer AssignRegionRequest
-   *
-   * @param regionName
-   * @return an AssignRegionRequest
-   */
-  public static AssignRegionRequest buildAssignRegionRequest(final byte [] regionName) {
-    AssignRegionRequest.Builder builder = AssignRegionRequest.newBuilder();
-    builder.setRegion(buildRegionSpecifier(RegionSpecifierType.REGION_NAME,regionName));
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer UnassignRegionRequest
-   *
-   * @param regionName
-   * @param force
-   * @return an UnassignRegionRequest
-   */
-  public static UnassignRegionRequest buildUnassignRegionRequest(
-      final byte [] regionName, final boolean force) {
-    UnassignRegionRequest.Builder builder = UnassignRegionRequest.newBuilder();
-    builder.setRegion(buildRegionSpecifier(RegionSpecifierType.REGION_NAME,regionName));
-    builder.setForce(force);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer OfflineRegionRequest
-   *
-   * @param regionName
-   * @return an OfflineRegionRequest
-   */
-  public static OfflineRegionRequest buildOfflineRegionRequest(final byte [] regionName) {
-    OfflineRegionRequest.Builder builder = OfflineRegionRequest.newBuilder();
-    builder.setRegion(buildRegionSpecifier(RegionSpecifierType.REGION_NAME,regionName));
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer DeleteTableRequest
-   *
-   * @param tableName
-   * @return a DeleteTableRequest
-   */
-  public static DeleteTableRequest buildDeleteTableRequest(
-      final TableName tableName,
-      final long nonceGroup,
-      final long nonce) {
-    DeleteTableRequest.Builder builder = DeleteTableRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer TruncateTableRequest
-   *
-   * @param tableName name of table to truncate
-   * @param preserveSplits True if the splits should be preserved
-   * @return a TruncateTableRequest
-   */
-  public static TruncateTableRequest buildTruncateTableRequest(
-      final TableName tableName,
-      final boolean preserveSplits,
-      final long nonceGroup,
-      final long nonce) {
-    TruncateTableRequest.Builder builder = TruncateTableRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
-    builder.setPreserveSplits(preserveSplits);
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer EnableTableRequest
-   *
-   * @param tableName
-   * @return an EnableTableRequest
-   */
-  public static EnableTableRequest buildEnableTableRequest(
-      final TableName tableName,
-      final long nonceGroup,
-      final long nonce) {
-    EnableTableRequest.Builder builder = EnableTableRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName(tableName));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer DisableTableRequest
-   *
-   * @param tableName
-   * @return a DisableTableRequest
-   */
-  public static DisableTableRequest buildDisableTableRequest(
-      final TableName tableName,
-      final long nonceGroup,
-      final long nonce) {
-    DisableTableRequest.Builder builder = DisableTableRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer CreateTableRequest
-   *
-   * @param hTableDesc
-   * @param splitKeys
-   * @return a CreateTableRequest
-   */
-  public static CreateTableRequest buildCreateTableRequest(
-      final HTableDescriptor hTableDesc,
-      final byte [][] splitKeys,
-      final long nonceGroup,
-      final long nonce) {
-    CreateTableRequest.Builder builder = CreateTableRequest.newBuilder();
-    builder.setTableSchema(ProtobufUtil.convertToTableSchema(hTableDesc));
-    if (splitKeys != null) {
-      for (byte [] splitKey : splitKeys) {
-        builder.addSplitKeys(ByteStringer.wrap(splitKey));
-      }
-    }
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-
-  /**
-   * Creates a protocol buffer ModifyTableRequest
-   *
-   * @param tableName
-   * @param hTableDesc
-   * @return a ModifyTableRequest
-   */
-  public static ModifyTableRequest buildModifyTableRequest(
-      final TableName tableName,
-      final HTableDescriptor hTableDesc,
-      final long nonceGroup,
-      final long nonce) {
-    ModifyTableRequest.Builder builder = ModifyTableRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
-    builder.setTableSchema(ProtobufUtil.convertToTableSchema(hTableDesc));
-    builder.setNonceGroup(nonceGroup);
-    builder.setNonce(nonce);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer GetSchemaAlterStatusRequest
-   *
-   * @param tableName
-   * @return a GetSchemaAlterStatusRequest
-   */
-  public static GetSchemaAlterStatusRequest buildGetSchemaAlterStatusRequest(
-      final TableName tableName) {
-    GetSchemaAlterStatusRequest.Builder builder = GetSchemaAlterStatusRequest.newBuilder();
-    builder.setTableName(ProtobufUtil.toProtoTableName((tableName)));
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer GetTableDescriptorsRequest
-   *
-   * @param tableNames
-   * @return a GetTableDescriptorsRequest
-   */
-  public static GetTableDescriptorsRequest buildGetTableDescriptorsRequest(
-      final List<TableName> tableNames) {
-    GetTableDescriptorsRequest.Builder builder = GetTableDescriptorsRequest.newBuilder();
-    if (tableNames != null) {
-      for (TableName tableName : tableNames) {
-        builder.addTableNames(ProtobufUtil.toProtoTableName(tableName));
-      }
-    }
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer GetTableDescriptorsRequest
-   *
-   * @param pattern The compiled regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
-   * @return a GetTableDescriptorsRequest
-   */
-  public static GetTableDescriptorsRequest buildGetTableDescriptorsRequest(final Pattern pattern,
-      boolean includeSysTables) {
-    GetTableDescriptorsRequest.Builder builder = GetTableDescriptorsRequest.newBuilder();
-    if (pattern != null) builder.setRegex(pattern.toString());
-    builder.setIncludeSysTables(includeSysTables);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer GetTableNamesRequest
-   *
-   * @param pattern The compiled regular expression to match against
-   * @param includeSysTables False to match only against userspace tables
-   * @return a GetTableNamesRequest
-   */
-  public static GetTableNamesRequest buildGetTableNamesRequest(final Pattern pattern,
-      boolean includeSysTables) {
-    GetTableNamesRequest.Builder builder = GetTableNamesRequest.newBuilder();
-    if (pattern != null) builder.setRegex(pattern.toString());
-    builder.setIncludeSysTables(includeSysTables);
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer GetTableStateRequest
-   *
-   * @param tableName table to get request for
-   * @return a GetTableStateRequest
-   */
-  public static GetTableStateRequest buildGetTableStateRequest(
-          final TableName tableName) {
-    return GetTableStateRequest.newBuilder()
-            .setTableName(ProtobufUtil.toProtoTableName(tableName))
-            .build();
-  }
-
-  /**
-   * Creates a protocol buffer GetTableDescriptorsRequest for a single table
-   *
-   * @param tableName the table name
-   * @return a GetTableDescriptorsRequest
-   */
-  public static GetTableDescriptorsRequest buildGetTableDescriptorsRequest(
-      final TableName tableName) {
-    return GetTableDescriptorsRequest.newBuilder()
-      .addTableNames(ProtobufUtil.toProtoTableName(tableName))
-      .build();
-  }
-
-  /**
-   * Creates a protocol buffer IsMasterRunningRequest
-   *
-   * @return a IsMasterRunningRequest
-   */
-  public static IsMasterRunningRequest buildIsMasterRunningRequest() {
-    return IsMasterRunningRequest.newBuilder().build();
-  }
-
-  /**
-   * Creates a protocol buffer BalanceRequest
-   *
-   * @return a BalanceRequest
-   */
-  public static BalanceRequest buildBalanceRequest(boolean force) {
-    return BalanceRequest.newBuilder().setForce(force).build();
-  }
-
-  /**
-   * Creates a protocol buffer SetBalancerRunningRequest
-   *
-   * @param on
-   * @param synchronous
-   * @return a SetBalancerRunningRequest
-   */
-  public static SetBalancerRunningRequest buildSetBalancerRunningRequest(
-      boolean on,
-      boolean synchronous) {
-    return SetBalancerRunningRequest.newBuilder().setOn(on).setSynchronous(synchronous).build();
-  }
-
-  /**
-   * Creates a protocol buffer IsBalancerEnabledRequest
-   *
-   * @return a IsBalancerEnabledRequest
-   */
-  public static IsBalancerEnabledRequest buildIsBalancerEnabledRequest() {
-    return IsBalancerEnabledRequest.newBuilder().build();
-  }
-
-  /**
-   * @see {@link #buildGetClusterStatusRequest}
-   */
-  private static final GetClusterStatusRequest GET_CLUSTER_STATUS_REQUEST =
-      GetClusterStatusRequest.newBuilder().build();
-
-  /**
-   * Creates a protocol buffer GetClusterStatusRequest
-   *
-   * @return A GetClusterStatusRequest
-   */
-  public static GetClusterStatusRequest buildGetClusterStatusRequest() {
-    return GET_CLUSTER_STATUS_REQUEST;
-  }
-
-  /**
-   * @see {@link #buildCatalogScanRequest}
-   */
-  private static final RunCatalogScanRequest CATALOG_SCAN_REQUEST =
-    RunCatalogScanRequest.newBuilder().build();
-
-  /**
-   * Creates a request for running a catalog scan
-   * @return A {@link RunCatalogScanRequest}
-   */
-  public static RunCatalogScanRequest buildCatalogScanRequest() {
-    return CATALOG_SCAN_REQUEST;
-  }
-
-  /**
-   * Creates a request for enabling/disabling the catalog janitor
-   * @return A {@link EnableCatalogJanitorRequest}
-   */
-  public static EnableCatalogJanitorRequest buildEnableCatalogJanitorRequest(boolean enable) {
-    return EnableCatalogJanitorRequest.newBuilder().setEnable(enable).build();
-  }
-
-  /**
-   * @see {@link #buildIsCatalogJanitorEnabledRequest()}
-   */
-  private static final IsCatalogJanitorEnabledRequest IS_CATALOG_JANITOR_ENABLED_REQUEST =
-    IsCatalogJanitorEnabledRequest.newBuilder().build();
-
-  /**
-   * Creates a request for querying the master whether the catalog janitor is enabled
-   * @return A {@link IsCatalogJanitorEnabledRequest}
-   */
-  public static IsCatalogJanitorEnabledRequest buildIsCatalogJanitorEnabledRequest() {
-    return IS_CATALOG_JANITOR_ENABLED_REQUEST;
-  }
-
-  /**
-   * Creates a request for querying the master the last flushed sequence Id for a region
-   * @param regionName
-   * @return A {@link GetLastFlushedSequenceIdRequest}
-   */
-  public static GetLastFlushedSequenceIdRequest buildGetLastFlushedSequenceIdRequest(
-      byte[] regionName) {
-    return GetLastFlushedSequenceIdRequest.newBuilder().setRegionName(
-        ByteStringer.wrap(regionName)).build();
-  }
-
-  /**
-   * Create a request to grant user permissions.
-   *
-   * @param username the short user name who to grant permissions
-   * @param actions the permissions to be granted
-   * @return A {@link AccessControlProtos} GrantRequest
-   */
-  public static AccessControlProtos.GrantRequest buildGrantRequest(
-      String username, AccessControlProtos.Permission.Action... actions) {
-    AccessControlProtos.Permission.Builder ret =
-        AccessControlProtos.Permission.newBuilder();
-    AccessControlProtos.GlobalPermission.Builder permissionBuilder =
-        AccessControlProtos.GlobalPermission.newBuilder();
-    for (AccessControlProtos.Permission.Action a : actions) {
-      permissionBuilder.addAction(a);
-    }
-    ret.setType(AccessControlProtos.Permission.Type.Global)
-       .setGlobalPermission(permissionBuilder);
-    return AccessControlProtos.GrantRequest.newBuilder()
-      .setUserPermission(
-          AccessControlProtos.UserPermission.newBuilder()
-              .setUser(ByteString.copyFromUtf8(username))
-              .setPermission(ret)
-      ).build();
-  }
-
-  /**
-   * Create a request to grant user permissions.
-   *
-   * @param username the short user name who to grant permissions
-   * @param tableName optional table name the permissions apply
-   * @param family optional column family
-   * @param qualifier optional qualifier
-   * @param actions the permissions to be granted
-   * @return A {@link AccessControlProtos} GrantRequest
-   */
-  public static AccessControlProtos.GrantRequest buildGrantRequest(
-      String username, TableName tableName, byte[] family, byte[] qualifier,
-      AccessControlProtos.Permission.Action... actions) {
-    AccessControlProtos.Permission.Builder ret =
-        AccessControlProtos.Permission.newBuilder();
-    AccessControlProtos.TablePermission.Builder permissionBuilder =
-        AccessControlProtos.TablePermission.newBuilder();
-    for (AccessControlProtos.Permission.Action a : actions) {
-      permissionBuilder.addAction(a);
-    }
-    if (tableName == null) {
-      throw new NullPointerException("TableName cannot be null");
-    }
-    permissionBuilder.setTableName(ProtobufUtil.toProtoTableName(tableName));
-
-    if (family != null) {
-      permissionBuilder.setFamily(ByteStringer.wrap(family));
-    }
-    if (qualifier != null) {
-      permissionBuilder.setQualifier(ByteStringer.wrap(qualifier));
-    }
-    ret.setType(AccessControlProtos.Permission.Type.Table)
-       .setTablePermission(permissionBuilder);
-    return AccessControlProtos.GrantRequest.newBuilder()
-      .setUserPermission(
-          AccessControlProtos.UserPermission.newBuilder()
-              .setUser(ByteString.copyFromUtf8(username))
-              .setPermission(ret)
-      ).build();
-  }
-
-  /**
-   * Create a request to grant user permissions.
-   *
-   * @param username the short user name who to grant permissions
-   * @param namespace optional table name the permissions apply
-   * @param actions the permissions to be granted
-   * @return A {@link AccessControlProtos} GrantRequest
-   */
-  public static AccessControlProtos.GrantRequest buildGrantRequest(
-      String username, String namespace,
-      AccessControlProtos.Permission.Action... actions) {
-    AccessControlProtos.Permission.Builder ret =
-        AccessControlProtos.Permission.newBuilder();
-    AccessControlProtos.NamespacePermission.Builder permissionBuilder =
-        AccessControlProtos.NamespacePermission.newBuilder();
-    for (AccessControlProtos.Permission.Action a : actions) {
-      permissionBuilder.addAction(a);
-    }
-    if (namespace != null) {
-      permissionBuilder.setNamespaceName(ByteString.copyFromUtf8(namespace));
-    }
-    ret.setType(AccessControlProtos.Permission.Type.Namespace)
-       .setNamespacePermission(permissionBuilder);
-    return AccessControlProtos.GrantRequest.newBuilder()
-      .setUserPermission(
-          AccessControlProtos.UserPermission.newBuilder()
-              .setUser(ByteString.copyFromUtf8(username))
-              .setPermission(ret)
-      ).build();
-  }
-
-  /**
-   * Create a request to revoke user permissions.
-   *
-   * @param username the short user name whose permissions to be revoked
-   * @param actions the permissions to be revoked
-   * @return A {@link AccessControlProtos} RevokeRequest
-   */
-  public static AccessControlProtos.RevokeRequest buildRevokeRequest(
-      String username, AccessControlProtos.Permission.Action... actions) {
-    AccessControlProtos.Permission.Builder ret =
-        AccessControlProtos.Permission.newBuilder();
-    AccessControlProtos.GlobalPermission.Builder permissionBuilder =
-        AccessControlProtos.GlobalPermission.newBuilder();
-    for (AccessControlProtos.Permission.Action a : actions) {
-      permissionBuilder.addAction(a);
-    }
-    ret.setType(AccessControlProtos.Permission.Type.Global)
-       .setGlobalPermission(permissionBuilder);
-    return AccessControlProtos.RevokeRequest.newBuilder()
-      .setUserPermission(
-          AccessControlProtos.UserPermission.newBuilder()
-              .setUser(ByteString.copyFromUtf8(username))
-              .setPermission(ret)
-      ).build();
-  }
-
-  /**
-   * Create a request to revoke user permissions.
-   *
-   * @param username the short user name whose permissions to be revoked
-   * @param tableName optional table name the permissions apply
-   * @param family optional column family
-   * @param qualifier optional qualifier
-   * @param actions the permissions to be revoked
-   * @return A {@link AccessControlProtos} RevokeRequest
-   */
-  public static AccessControlProtos.RevokeRequest buildRevokeRequest(
-      String username, TableName tableName, byte[] family, byte[] qualifier,
-      AccessControlProtos.Permission.Action... actions) {
-    AccessControlProtos.Permission.Builder ret =
-        AccessControlProtos.Permission.newBuilder();
-    AccessControlProtos.TablePermission.Builder permissionBuilder =
-        AccessControlProtos.TablePermission.newBuilder();
-    for (AccessControlProtos.Permission.Action a : actions) {
-      permissionBuilder.addAction(a);
-    }
-    if (tableName != null) {
-      permissionBuilder.setTableName(ProtobufUtil.toProtoTableName(tableName));
-    }
-    if (family != null) {
-      permissionBuilder.setFamily(ByteStringer.wrap(family));
-    }
-    if (qualifier != null) {
-      permissionBuilder.setQualifier(ByteStringer.wrap(qualifier));
-    }
-    ret.setType(AccessControlProtos.Permission.Type.Table)
-       .setTablePermission(permissionBuilder);
-    return AccessControlProtos.RevokeRequest.newBuilder()
-      .setUserPermission(
-          AccessControlProtos.UserPermission.newBuilder()
-              .setUser(ByteString.copyFromUtf8(username))
-              .setPermission(ret)
-      ).build();
-  }
-
-  /**
-   * Create a request to revoke user permissions.
-   *
-   * @param username the short user name whose permissions to be revoked
-   * @param namespace optional table name the permissions apply
-   * @param actions the permissions to be revoked
-   * @return A {@link AccessControlProtos} RevokeRequest
-   */
-  public static AccessControlProtos.RevokeRequest buildRevokeRequest(
-      String username, String namespace,
-      AccessControlProtos.Permission.Action... actions) {
-    AccessControlProtos.Permission.Builder ret =
-        AccessControlProtos.Permission.newBuilder();
-    AccessControlProtos.NamespacePermission.Builder permissionBuilder =
-        AccessControlProtos.NamespacePermission.newBuilder();
-    for (AccessControlProtos.Permission.Action a : actions) {
-      permissionBuilder.addAction(a);
-    }
-    if (namespace != null) {
-      permissionBuilder.setNamespaceName(ByteString.copyFromUtf8(namespace));
-    }
-    ret.setType(AccessControlProtos.Permission.Type.Namespace)
-       .setNamespacePermission(permissionBuilder);
-    return AccessControlProtos.RevokeRequest.newBuilder()
-      .setUserPermission(
-          AccessControlProtos.UserPermission.newBuilder()
-              .setUser(ByteString.copyFromUtf8(username))
-              .setPermission(ret)
-      ).build();
-  }
-
-  /**
-   * Create a RegionOpenInfo based on given region info and version of offline node
-   */
-  private static RegionOpenInfo buildRegionOpenInfo(
-      final HRegionInfo region,
-      final List<ServerName> favoredNodes, Boolean openForReplay) {
-    RegionOpenInfo.Builder builder = RegionOpenInfo.newBuilder();
-    builder.setRegion(HRegionInfo.convert(region));
-    if (favoredNodes != null) {
-      for (ServerName server : favoredNodes) {
-        builder.addFavoredNodes(ProtobufUtil.toServerName(server));
-      }
-    }
-    if(openForReplay != null) {
-      builder.setOpenForDistributedLogReplay(openForReplay);
-    }
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer NormalizeRequest
-   *
-   * @return a NormalizeRequest
-   */
-  public static NormalizeRequest buildNormalizeRequest() {
-    return NormalizeRequest.newBuilder().build();
-  }
-
-  /**
-   * Creates a protocol buffer IsNormalizerEnabledRequest
-   *
-   * @return a IsNormalizerEnabledRequest
-   */
-  public static IsNormalizerEnabledRequest buildIsNormalizerEnabledRequest() {
-    return IsNormalizerEnabledRequest.newBuilder().build();
-  }
-
-  /**
-   * Creates a protocol buffer SetNormalizerRunningRequest
-   *
-   * @param on
-   * @return a SetNormalizerRunningRequest
-   */
-  public static SetNormalizerRunningRequest buildSetNormalizerRunningRequest(boolean on) {
-    return SetNormalizerRunningRequest.newBuilder().setOn(on).build();
-  }
-
-  /**
-   * Creates a protocol buffer IsSplitOrMergeEnabledRequest
-   *
-   * @param switchType see {@link org.apache.hadoop.hbase.client.MasterSwitchType}
-   * @return a IsSplitOrMergeEnabledRequest
-   */
-  public static IsSplitOrMergeEnabledRequest buildIsSplitOrMergeEnabledRequest(
-    MasterSwitchType switchType) {
-    IsSplitOrMergeEnabledRequest.Builder builder = IsSplitOrMergeEnabledRequest.newBuilder();
-    builder.setSwitchType(convert(switchType));
-    return builder.build();
-  }
-
-  /**
-   * Creates a protocol buffer SetSplitOrMergeEnabledRequest
-   *
-   * @param enabled switch is enabled or not
-   * @param synchronous set switch sync?
-   * @param switchTypes see {@link org.apache.hadoop.hbase.client.MasterSwitchType}, it is
-   *                    a list.
-   * @return a SetSplitOrMergeEnabledRequest
-   */
-  public static SetSplitOrMergeEnabledRequest buildSetSplitOrMergeEnabledRequest(boolean enabled,
-    boolean synchronous, MasterSwitchType... switchTypes) {
-    SetSplitOrMergeEnabledRequest.Builder builder = SetSplitOrMergeEnabledRequest.newBuilder();
-    builder.setEnabled(enabled);
-    builder.setSynchronous(synchronous);
-    for (MasterSwitchType switchType : switchTypes) {
-      builder.addSwitchTypes(convert(switchType));
-    }
-    return builder.build();
-  }
-
-  private static MasterProtos.MasterSwitchType convert(MasterSwitchType switchType) {
-    switch (switchType) {
-      case SPLIT:
-        return MasterProtos.MasterSwitchType.SPLIT;
-      case MERGE:
-        return MasterProtos.MasterSwitchType.MERGE;
-      default:
-        break;
-    }
-    throw new UnsupportedOperationException("Unsupport switch type:" + switchType);
-  }
-}