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();