You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by an...@apache.org on 2016/02/11 12:18:49 UTC
hbase git commit: Revert "HBASE-15198 RPC client not using Codec and
CellBlock for puts by default."
Repository: hbase
Updated Branches:
refs/heads/0.98 c7edb453a -> 81a6fffb3
Revert "HBASE-15198 RPC client not using Codec and CellBlock for puts by default."
This reverts commit c7edb453a16591fec196018c163e574b6ede4150.
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/81a6fffb
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/81a6fffb
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/81a6fffb
Branch: refs/heads/0.98
Commit: 81a6fffb3c45a1afbbbfea751c26ea061319b0a5
Parents: c7edb45
Author: anoopsjohn <an...@gmail.com>
Authored: Thu Feb 11 16:48:06 2016 +0530
Committer: anoopsjohn <an...@gmail.com>
Committed: Thu Feb 11 16:48:06 2016 +0530
----------------------------------------------------------------------
.../hadoop/hbase/client/HConnectionManager.java | 8 ------
.../hbase/client/MultiServerCallable.java | 11 +++++---
.../org/apache/hadoop/hbase/ipc/RpcClient.java | 8 ------
.../hadoop/hbase/protobuf/ProtobufUtil.java | 4 +++
.../hadoop/hbase/protobuf/RequestConverter.java | 9 +------
.../security/access/TestAccessController.java | 27 ++++++++++++++++++++
6 files changed, 39 insertions(+), 28 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/81a6fffb/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
index f7c0843..327b501 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/HConnectionManager.java
@@ -2820,14 +2820,6 @@ public class HConnectionManager {
throws IOException {
return getHTableDescriptor(TableName.valueOf(tableName));
}
-
- /**
- * @return true when this connection uses a {@link org.apache.hadoop.hbase.codec.Codec} and so
- * supports cell blocks.
- */
- public boolean hasCellBlockSupport() {
- return this.rpcClient.hasCellBlockSupport();
- }
}
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/81a6fffb/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 1241e02..57ea476 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
@@ -19,15 +19,16 @@ package org.apache.hadoop.hbase.client;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Collections;
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.DoNotRetryIOException;
import org.apache.hadoop.hbase.HConstants;
import org.apache.hadoop.hbase.HRegionLocation;
import org.apache.hadoop.hbase.TableName;
-import org.apache.hadoop.hbase.client.HConnectionManager.HConnectionImplementation;
import org.apache.hadoop.hbase.ipc.PayloadCarryingRpcController;
import org.apache.hadoop.hbase.ipc.RpcControllerFactory;
import org.apache.hadoop.hbase.protobuf.ProtobufUtil;
@@ -126,9 +127,11 @@ class MultiServerCallable<R> extends RegionServerCallable<MultiResponse> {
// 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();
- // Default is to do cellblocks.
- if (!(connection instanceof HConnectionImplementation)) return true;
- return ((HConnectionImplementation) connection).hasCellBlockSupport();
+ 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;
}
@Override
http://git-wip-us.apache.org/repos/asf/hbase/blob/81a6fffb/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 7080d1e..7f11038 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
@@ -1724,14 +1724,6 @@ public class RpcClient {
}
/**
- * @return true when this client uses a {@link org.apache.hadoop.hbase.codec.Codec} and so
- * supports cell blocks.
- */
- public boolean hasCellBlockSupport() {
- return this.codec != null;
- }
-
- /**
* Blocking rpc channel that goes via hbase rpc.
*/
// Public so can be subclassed for tests.
http://git-wip-us.apache.org/repos/asf/hbase/blob/81a6fffb/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 e173ab1..cee0ace 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
@@ -1137,6 +1137,10 @@ public final class ProtobufUtil {
valueBuilder.setValue(ByteStringer.wrap(
kv.getValueArray(), kv.getValueOffset(), kv.getValueLength()));
valueBuilder.setTimestamp(kv.getTimestamp());
+ if(cell.getTagsLengthUnsigned() > 0) {
+ valueBuilder.setTags(ByteStringer.wrap(kv.getTagsArray(), kv.getTagsOffset(),
+ kv.getTagsLengthUnsigned()));
+ }
if (type == MutationType.DELETE || (type == MutationType.PUT && CellUtil.isDelete(kv))) {
KeyValue.Type keyValueType = KeyValue.Type.codeToType(kv.getType());
valueBuilder.setDeleteType(toDeleteType(keyValueType));
http://git-wip-us.apache.org/repos/asf/hbase/blob/81a6fffb/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 650f7ad..30ceb09 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
@@ -663,15 +663,8 @@ 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) {
- throw new UnsupportedOperationException("No RowMutations in multi calls; use mutateRow");
+ continue; // ignore RowMutations
} else {
throw new DoNotRetryIOException("Multi doesn't support " + row.getClass().getName());
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/81a6fffb/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 60b3e46..179045b 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
@@ -51,6 +51,7 @@ 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.Append;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
@@ -2385,6 +2386,32 @@ public class TestAccessController extends SecureTestUtil {
}
@Test
+ public void testReservedCellTags() throws Exception {
+ AccessTestAction putWithReservedTag = new AccessTestAction() {
+ @Override
+ public Object run() throws Exception {
+ HTable 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 = "testNamespace";
NamespaceDescriptor desc = NamespaceDescriptor.create(namespace).build();