You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2019/03/27 12:38:08 UTC
[hbase] branch master updated: HBASE-22094: Throw
TableNotFoundException if table not exists in AsyncAdmin.compact
This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new caa9650 HBASE-22094: Throw TableNotFoundException if table not exists in AsyncAdmin.compact
caa9650 is described below
commit caa9650a703d7585c66a1b3e3b8501a61370f74f
Author: Sakthi <sa...@gmail.com>
AuthorDate: Mon Mar 25 22:54:48 2019 -0700
HBASE-22094: Throw TableNotFoundException if table not exists in AsyncAdmin.compact
Signed-off-by: zhangduo <zh...@apache.org>
---
.../org/apache/hadoop/hbase/client/AsyncAdmin.java | 12 ++++++++++++
.../hadoop/hbase/client/RawAsyncHBaseAdmin.java | 3 +++
.../hbase/client/TestAsyncRegionAdminApi.java | 21 +++++++++++++++++++++
3 files changed, 36 insertions(+)
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java
index ea75f60..2f1f494 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java
@@ -306,6 +306,7 @@ public interface AsyncAdmin {
/**
* Compact a table. When the returned CompletableFuture is done, it only means the compact request
* was sent to HBase and may need some time to finish the compact operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.
* @param tableName table to compact
*/
default CompletableFuture<Void> compact(TableName tableName) {
@@ -316,6 +317,7 @@ public interface AsyncAdmin {
* Compact a column family within a table. When the returned CompletableFuture is done, it only
* means the compact request was sent to HBase and may need some time to finish the compact
* operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.
* @param tableName table to compact
* @param columnFamily column family within a table. If not present, compact the table's all
* column families.
@@ -327,6 +329,8 @@ public interface AsyncAdmin {
/**
* Compact a table. When the returned CompletableFuture is done, it only means the compact request
* was sent to HBase and may need some time to finish the compact operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for
+ * normal compaction type.
* @param tableName table to compact
* @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
*/
@@ -336,6 +340,8 @@ public interface AsyncAdmin {
* Compact a column family within a table. When the returned CompletableFuture is done, it only
* means the compact request was sent to HBase and may need some time to finish the compact
* operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for
+ * normal compaction type.
* @param tableName table to compact
* @param columnFamily column family within a table
* @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
@@ -363,6 +369,7 @@ public interface AsyncAdmin {
/**
* Major compact a table. When the returned CompletableFuture is done, it only means the compact
* request was sent to HBase and may need some time to finish the compact operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.
* @param tableName table to major compact
*/
default CompletableFuture<Void> majorCompact(TableName tableName) {
@@ -373,6 +380,8 @@ public interface AsyncAdmin {
* Major compact a column family within a table. When the returned CompletableFuture is done, it
* only means the compact request was sent to HBase and may need some time to finish the compact
* operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for
+ * normal compaction. type.
* @param tableName table to major compact
* @param columnFamily column family within a table. If not present, major compact the table's all
* column families.
@@ -384,6 +393,8 @@ public interface AsyncAdmin {
/**
* Major compact a table. When the returned CompletableFuture is done, it only means the compact
* request was sent to HBase and may need some time to finish the compact operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for
+ * normal compaction type.
* @param tableName table to major compact
* @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
*/
@@ -393,6 +404,7 @@ public interface AsyncAdmin {
* Major compact a column family within a table. When the returned CompletableFuture is done, it
* only means the compact request was sent to HBase and may need some time to finish the compact
* operation.
+ * Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.
* @param tableName table to major compact
* @param columnFamily column family within a table. If not present, major compact the table's all
* column families.
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java
index 248e732..ef48f5a 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java
@@ -1099,6 +1099,9 @@ class RawAsyncHBaseAdmin implements AsyncAdmin {
future.completeExceptionally(err);
return;
}
+ if (locations == null || locations.isEmpty()) {
+ future.completeExceptionally(new TableNotFoundException(tableName));
+ }
CompletableFuture<?>[] compactFutures =
locations.stream().filter(l -> l.getRegion() != null)
.filter(l -> !l.getRegion().isOffline()).filter(l -> l.getServerName() != null)
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java
index 6d30faf..3a8673c 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.java
@@ -36,6 +36,7 @@ import java.util.stream.Collectors;
import org.apache.hadoop.hbase.HBaseClassTestRule;
import org.apache.hadoop.hbase.ServerName;
import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.master.HMaster;
import org.apache.hadoop.hbase.master.RegionState;
import org.apache.hadoop.hbase.master.ServerManager;
@@ -427,6 +428,26 @@ public class TestAsyncRegionAdminApi extends TestAsyncAdminBase {
}
}
+ @Test
+ public void testNonExistentTableCompaction() {
+ testNonExistentTableCompaction(CompactionState.MINOR);
+ testNonExistentTableCompaction(CompactionState.MAJOR);
+ }
+
+ private void testNonExistentTableCompaction(CompactionState compactionState) {
+ try {
+ if (compactionState == CompactionState.MINOR) {
+ admin.compact(TableName.valueOf("NonExistentTable")).get();
+ } else {
+ admin.majorCompact(TableName.valueOf("NonExistentTable")).get();
+ }
+ fail("Expected TableNotFoundException when table doesn't exist");
+ } catch (Exception e) {
+ // expected.
+ assertTrue(e.getCause() instanceof TableNotFoundException);
+ }
+ }
+
private static int countStoreFilesInFamily(List<Region> regions, final byte[] family) {
return countStoreFilesInFamilies(regions, new byte[][] { family });
}