HBASE-13327 Use Admin in ConnectionCache (Solomon Duskis)

Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/227ace91
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/227ace91
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/227ace91

Branch: refs/heads/hbase-12439
Commit: 227ace9100043613a014d897dc78e97cc214ffac
Parents: 8cb4f89
Author: tedyu <[email protected]>
Authored: Tue Mar 24 18:13:51 2015 -0700
Committer: tedyu <[email protected]>
Committed: Tue Mar 24 18:13:51 2015 -0700

----------------------------------------------------------------------
 .../hadoop/hbase/util/ConnectionCache.java      |  9 ++--
 .../hadoop/hbase/thrift/ThriftServerRunner.java | 48 +++++++++++++-------
 2 files changed, 35 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/227ace91/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ConnectionCache.java
----------------------------------------------------------------------
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ConnectionCache.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ConnectionCache.java
index bbfed4c..ab1948b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ConnectionCache.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/ConnectionCache.java
@@ -29,9 +29,9 @@ import org.apache.hadoop.hbase.ScheduledChore;
 import org.apache.hadoop.hbase.Stoppable;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Connection;
 import org.apache.hadoop.hbase.client.ConnectionFactory;
-import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.security.User;
 import org.apache.hadoop.hbase.security.UserProvider;
@@ -128,14 +128,13 @@ public class ConnectionCache {
    * Caller doesn't close the admin afterwards.
    * We need to manage it and close it properly.
    */
-  @SuppressWarnings("deprecation")
-  public HBaseAdmin getAdmin() throws IOException {
+  public Admin getAdmin() throws IOException {
     ConnectionInfo connInfo = getCurrentConnection();
     if (connInfo.admin == null) {
       Lock lock = locker.acquireLock(getEffectiveUser());
       try {
         if (connInfo.admin == null) {
-          connInfo.admin = new HBaseAdmin(connInfo.connection);
+          connInfo.admin = connInfo.connection.getAdmin();
         }
       } finally {
         lock.unlock();
@@ -184,7 +183,7 @@ public class ConnectionCache {
     final Connection connection;
     final String userName;
 
-    volatile HBaseAdmin admin;
+    volatile Admin admin;
     private long lastAccessTime;
     private boolean closed;
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/227ace91/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
----------------------------------------------------------------------
diff --git 
a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
 
b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
index 9f23c09..285d369 100644
--- 
a/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
+++ 
b/hbase-thrift/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
@@ -61,11 +61,11 @@ import org.apache.hadoop.hbase.ServerName;
 import org.apache.hadoop.hbase.TableName;
 import org.apache.hadoop.hbase.TableNotFoundException;
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
+import org.apache.hadoop.hbase.client.Admin;
 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.HBaseAdmin;
 import org.apache.hadoop.hbase.client.HTable;
 import org.apache.hadoop.hbase.client.Increment;
 import org.apache.hadoop.hbase.client.OperationWithAttributes;
@@ -738,7 +738,7 @@ public class ThriftServerRunner implements Runnable {
     /**
      * Obtain HBaseAdmin. Creates the instance if it is not already created.
      */
-    private HBaseAdmin getHBaseAdmin() throws IOException {
+    private Admin getAdmin() throws IOException {
       return connectionCache.getAdmin();
     }
 
@@ -749,7 +749,7 @@ public class ThriftServerRunner implements Runnable {
     @Override
     public void enableTable(ByteBuffer tableName) throws IOError {
       try{
-        getHBaseAdmin().enableTable(getBytes(tableName));
+        getAdmin().enableTable(getTableName(tableName));
       } catch (IOException e) {
         LOG.warn(e.getMessage(), e);
         throw new IOError(e.getMessage());
@@ -759,7 +759,7 @@ public class ThriftServerRunner implements Runnable {
     @Override
     public void disableTable(ByteBuffer tableName) throws IOError{
       try{
-        getHBaseAdmin().disableTable(getBytes(tableName));
+        getAdmin().disableTable(getTableName(tableName));
       } catch (IOException e) {
         LOG.warn(e.getMessage(), e);
         throw new IOError(e.getMessage());
@@ -778,8 +778,13 @@ public class ThriftServerRunner implements Runnable {
 
     @Override
     public void compact(ByteBuffer tableNameOrRegionName) throws IOError {
-      try{
-        getHBaseAdmin().compact(getBytes(tableNameOrRegionName));
+      byte[] tableNameOrRegionNameArray = getBytes(tableNameOrRegionName);
+      try {
+        try {
+          getAdmin().compactRegion(tableNameOrRegionNameArray);
+        } catch (IllegalArgumentException e) {
+          getAdmin().compact(TableName.valueOf(tableNameOrRegionNameArray));
+        }
       } catch (IOException e) {
         LOG.warn(e.getMessage(), e);
         throw new IOError(e.getMessage());
@@ -788,8 +793,13 @@ public class ThriftServerRunner implements Runnable {
 
     @Override
     public void majorCompact(ByteBuffer tableNameOrRegionName) throws IOError {
-      try{
-        getHBaseAdmin().majorCompact(getBytes(tableNameOrRegionName));
+      byte[] tableNameOrRegionNameArray = getBytes(tableNameOrRegionName);
+      try {
+        try {
+          getAdmin().majorCompactRegion(tableNameOrRegionNameArray);
+        } catch (IllegalArgumentException e) {
+          
getAdmin().majorCompact(TableName.valueOf(tableNameOrRegionNameArray));
+        }
       } catch (IOException e) {
         LOG.warn(e.getMessage(), e);
         throw new IOError(e.getMessage());
@@ -799,7 +809,7 @@ public class ThriftServerRunner implements Runnable {
     @Override
     public List<ByteBuffer> getTableNames() throws IOError {
       try {
-        TableName[] tableNames = this.getHBaseAdmin().listTableNames();
+        TableName[] tableNames = this.getAdmin().listTableNames();
         ArrayList<ByteBuffer> list = new 
ArrayList<ByteBuffer>(tableNames.length);
         for (int i = 0; i < tableNames.length; i++) {
           list.add(ByteBuffer.wrap(tableNames[i].getName()));
@@ -1164,17 +1174,17 @@ public class ThriftServerRunner implements Runnable {
     public void createTable(ByteBuffer in_tableName,
         List<ColumnDescriptor> columnFamilies) throws IOError,
         IllegalArgument, AlreadyExists {
-      byte [] tableName = getBytes(in_tableName);
+      TableName tableName = getTableName(in_tableName);
       try {
-        if (getHBaseAdmin().tableExists(tableName)) {
+        if (getAdmin().tableExists(tableName)) {
           throw new AlreadyExists("table name already in use");
         }
-        HTableDescriptor desc = new 
HTableDescriptor(TableName.valueOf(tableName));
+        HTableDescriptor desc = new HTableDescriptor(tableName);
         for (ColumnDescriptor col : columnFamilies) {
           HColumnDescriptor colDesc = ThriftUtilities.colDescFromThrift(col);
           desc.addFamily(colDesc);
         }
-        getHBaseAdmin().createTable(desc);
+        getAdmin().createTable(desc);
       } catch (IOException e) {
         LOG.warn(e.getMessage(), e);
         throw new IOError(e.getMessage());
@@ -1184,17 +1194,21 @@ public class ThriftServerRunner implements Runnable {
       }
     }
 
+    private static TableName getTableName(ByteBuffer buffer) {
+      return TableName.valueOf(getBytes(buffer));
+    }
+
     @Override
     public void deleteTable(ByteBuffer in_tableName) throws IOError {
-      byte [] tableName = getBytes(in_tableName);
+      TableName tableName = getTableName(in_tableName);
       if (LOG.isDebugEnabled()) {
-        LOG.debug("deleteTable: table=" + Bytes.toString(tableName));
+        LOG.debug("deleteTable: table=" + tableName);
       }
       try {
-        if (!getHBaseAdmin().tableExists(tableName)) {
+        if (!getAdmin().tableExists(tableName)) {
           throw new IOException("table does not exist");
         }
-        getHBaseAdmin().deleteTable(tableName);
+        getAdmin().deleteTable(tableName);
       } catch (IOException e) {
         LOG.warn(e.getMessage(), e);
         throw new IOError(e.getMessage());

Reply via email to