Repository: hbase Updated Branches: refs/heads/branch-1.1 cf7c6c5a7 -> bd11ae58b
HBASE-15198 RPC client not using Codec and CellBlock for puts by default. Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/bd11ae58 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/bd11ae58 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/bd11ae58 Branch: refs/heads/branch-1.1 Commit: bd11ae58bf05996952d960fbe3cbf743f1d781e5 Parents: cf7c6c5 Author: anoopsjohn <[email protected]> Authored: Thu Feb 11 16:40:58 2016 +0530 Committer: anoopsjohn <[email protected]> Committed: Thu Feb 11 16:40:58 2016 +0530 ---------------------------------------------------------------------- .../hadoop/hbase/client/ClusterConnection.java | 7 ++++- .../hadoop/hbase/client/ConnectionAdapter.java | 5 ++++ .../hadoop/hbase/client/ConnectionManager.java | 5 ++++ .../hbase/client/MultiServerCallable.java | 8 ++---- .../hadoop/hbase/ipc/AbstractRpcClient.java | 5 ++++ .../org/apache/hadoop/hbase/ipc/RpcClient.java | 6 +++++ .../hadoop/hbase/protobuf/ProtobufUtil.java | 4 --- .../hadoop/hbase/protobuf/RequestConverter.java | 11 +++++--- .../security/access/TestAccessController.java | 28 -------------------- 9 files changed, 37 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClusterConnection.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClusterConnection.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClusterConnection.java index 05d5c63..5f09483 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClusterConnection.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClusterConnection.java @@ -21,7 +21,6 @@ package org.apache.hadoop.hbase.client; import java.io.IOException; import java.util.List; -import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HRegionLocation; import org.apache.hadoop.hbase.MasterNotRunningException; @@ -300,4 +299,10 @@ public interface ClusterConnection extends HConnection { * @return the configured client backoff policy */ ClientBackoffPolicy getBackoffPolicy(); + + /** + * @return true when this connection uses a {@link org.apache.hadoop.hbase.codec.Codec} and so + * supports cell blocks. + */ + boolean hasCellBlockSupport(); } http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionAdapter.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionAdapter.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionAdapter.java index 99da1be..d67df2a 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionAdapter.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionAdapter.java @@ -464,4 +464,9 @@ abstract class ConnectionAdapter implements ClusterConnection { public ClientBackoffPolicy getBackoffPolicy() { return wrappedConnection.getBackoffPolicy(); } + + @Override + public boolean hasCellBlockSupport() { + return wrappedConnection.hasCellBlockSupport(); + } } http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java index 867c6f0..d20a84a 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionManager.java @@ -2556,6 +2556,11 @@ class ConnectionManager { public boolean isManaged() { return managed; } + + @Override + public boolean hasCellBlockSupport() { + return this.rpcClient.hasCellBlockSupport(); + } } /** http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MultiServerCallable.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MultiServerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MultiServerCallable.java index 9dbebb4..f02d14d 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MultiServerCallable.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/MultiServerCallable.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CellScannable; import org.apache.hadoop.hbase.CellUtil; import org.apache.hadoop.hbase.DoNotRetryIOException; @@ -152,11 +151,8 @@ class MultiServerCallable<R> extends RegionServerCallable<MultiResponse> impleme // This is not exact -- the configuration could have changed on us after connection was set up // but it will do for now. HConnection connection = getConnection(); - if (connection == null) return true; // Default is to do cellblocks. - Configuration configuration = connection.getConfiguration(); - if (configuration == null) return true; - String codec = configuration.get(HConstants.RPC_CODEC_CONF_KEY, ""); - return codec != null && codec.length() > 0; + if (!(connection instanceof ClusterConnection)) return true; // Default is to do cellblocks. + return ((ClusterConnection) connection).hasCellBlockSupport(); } @Override http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java index 958f94a..bc86a0d 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/AbstractRpcClient.java @@ -143,6 +143,11 @@ public abstract class AbstractRpcClient implements RpcClient { } } + @Override + public boolean hasCellBlockSupport() { + return this.codec != null; + } + /** * Encapsulate the ugly casting and RuntimeException conversion in private method. * @param conf configuration http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java index cf689f5..540e224 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/ipc/RpcClient.java @@ -83,4 +83,10 @@ import java.io.IOException; * using this client. */ @Override public void close(); + + /** + * @return true when this client uses a {@link org.apache.hadoop.hbase.codec.Codec} and so + * supports cell blocks. + */ + boolean hasCellBlockSupport(); } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java ---------------------------------------------------------------------- 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 10aa2db..cdd316d 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 @@ -1197,10 +1197,6 @@ public final class ProtobufUtil { valueBuilder.setValue(ByteStringer.wrap( cell.getValueArray(), cell.getValueOffset(), cell.getValueLength())); valueBuilder.setTimestamp(cell.getTimestamp()); - if(cell.getTagsLength() > 0) { - valueBuilder.setTags(ByteStringer.wrap(cell.getTagsArray(), cell.getTagsOffset(), - cell.getTagsLength())); - } if (type == MutationType.DELETE || (type == MutationType.PUT && CellUtil.isDelete(cell))) { KeyValue.Type keyValueType = KeyValue.Type.codeToType(cell.getTypeByte()); valueBuilder.setDeleteType(toDeleteType(keyValueType)); http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/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 index f2fc545..32023a5 100644 --- 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 @@ -21,8 +21,6 @@ import java.io.IOException; import java.util.List; import java.util.regex.Pattern; -import org.apache.hadoop.hbase.util.ByteStringer; - import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.CellScannable; import org.apache.hadoop.hbase.DoNotRetryIOException; @@ -674,8 +672,15 @@ public final class RequestConverter { 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) { - continue; // ignore RowMutations + throw new UnsupportedOperationException("No RowMutations in multi calls; use mutateRow"); } else { throw new DoNotRetryIOException("Multi doesn't support " + row.getClass().getName()); } http://git-wip-us.apache.org/repos/asf/hbase/blob/bd11ae58/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java index a9d08dd..aa026ae 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestAccessController.java @@ -55,7 +55,6 @@ import org.apache.hadoop.hbase.NamespaceDescriptor; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.TableNotFoundException; -import org.apache.hadoop.hbase.Tag; import org.apache.hadoop.hbase.client.Admin; import org.apache.hadoop.hbase.client.Append; import org.apache.hadoop.hbase.client.Connection; @@ -99,7 +98,6 @@ import org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv; import org.apache.hadoop.hbase.master.procedure.TableProcedureInterface; import org.apache.hadoop.hbase.procedure2.Procedure; import org.apache.hadoop.hbase.procedure2.ProcedureExecutor; -import org.apache.hadoop.hbase.procedure2.ProcedureYieldException; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos; import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos.AccessControlService; @@ -2482,32 +2480,6 @@ public class TestAccessController extends SecureTestUtil { } @Test - public void testReservedCellTags() throws Exception { - AccessTestAction putWithReservedTag = new AccessTestAction() { - @Override - public Object run() throws Exception { - Table t = new HTable(conf, TEST_TABLE); - try { - KeyValue kv = new KeyValue(TEST_ROW, TEST_FAMILY, TEST_QUALIFIER, - HConstants.LATEST_TIMESTAMP, HConstants.EMPTY_BYTE_ARRAY, - new Tag[] { new Tag(AccessControlLists.ACL_TAG_TYPE, - ProtobufUtil.toUsersAndPermissions(USER_OWNER.getShortName(), - new Permission(Permission.Action.READ)).toByteArray()) }); - t.put(new Put(TEST_ROW).add(kv)); - } finally { - t.close(); - } - return null; - } - }; - - // Current user is superuser - verifyAllowed(putWithReservedTag, User.getCurrent()); - // No other user should be allowed - verifyDenied(putWithReservedTag, USER_OWNER, USER_ADMIN, USER_CREATE, USER_RW, USER_RO); - } - - @Test public void testGetNamespacePermission() throws Exception { String namespace = "testGetNamespacePermission"; NamespaceDescriptor desc = NamespaceDescriptor.create(namespace).build();
