HBASE-22094: Throw TableNotFoundException if table not exists in AsyncAdmin.compact
Signed-off-by: zhangduo <zhangduo@apache.org>
This commit is contained in:
parent
56dd309b21
commit
caa9650a70
|
@ -306,6 +306,7 @@ public interface AsyncAdmin {
|
||||||
/**
|
/**
|
||||||
* Compact a table. When the returned CompletableFuture is done, it only means the compact request
|
* 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.
|
* 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 tableName table to compact
|
||||||
*/
|
*/
|
||||||
default CompletableFuture<Void> compact(TableName tableName) {
|
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
|
* 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
|
* means the compact request was sent to HBase and may need some time to finish the compact
|
||||||
* operation.
|
* operation.
|
||||||
|
* Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.
|
||||||
* @param tableName table to compact
|
* @param tableName table to compact
|
||||||
* @param columnFamily column family within a table. If not present, compact the table's all
|
* @param columnFamily column family within a table. If not present, compact the table's all
|
||||||
* column families.
|
* column families.
|
||||||
|
@ -327,6 +329,8 @@ public interface AsyncAdmin {
|
||||||
/**
|
/**
|
||||||
* Compact a table. When the returned CompletableFuture is done, it only means the compact request
|
* 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.
|
* 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 tableName table to compact
|
||||||
* @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
|
* @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
|
* 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
|
* means the compact request was sent to HBase and may need some time to finish the compact
|
||||||
* operation.
|
* operation.
|
||||||
|
* Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for
|
||||||
|
* normal compaction type.
|
||||||
* @param tableName table to compact
|
* @param tableName table to compact
|
||||||
* @param columnFamily column family within a table
|
* @param columnFamily column family within a table
|
||||||
* @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
|
* @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
|
* 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.
|
* 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 tableName table to major compact
|
||||||
*/
|
*/
|
||||||
default CompletableFuture<Void> majorCompact(TableName tableName) {
|
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
|
* 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
|
* only means the compact request was sent to HBase and may need some time to finish the compact
|
||||||
* operation.
|
* operation.
|
||||||
|
* Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found for
|
||||||
|
* normal compaction. type.
|
||||||
* @param tableName table to major compact
|
* @param tableName table to major compact
|
||||||
* @param columnFamily column family within a table. If not present, major compact the table's all
|
* @param columnFamily column family within a table. If not present, major compact the table's all
|
||||||
* column families.
|
* column families.
|
||||||
|
@ -384,6 +393,8 @@ public interface AsyncAdmin {
|
||||||
/**
|
/**
|
||||||
* Major compact a table. When the returned CompletableFuture is done, it only means the compact
|
* 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.
|
* 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 tableName table to major compact
|
||||||
* @param compactType {@link org.apache.hadoop.hbase.client.CompactType}
|
* @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
|
* 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
|
* only means the compact request was sent to HBase and may need some time to finish the compact
|
||||||
* operation.
|
* operation.
|
||||||
|
* Throws {@link org.apache.hadoop.hbase.TableNotFoundException} if table not found.
|
||||||
* @param tableName table to major compact
|
* @param tableName table to major compact
|
||||||
* @param columnFamily column family within a table. If not present, major compact the table's all
|
* @param columnFamily column family within a table. If not present, major compact the table's all
|
||||||
* column families.
|
* column families.
|
||||||
|
|
|
@ -1099,6 +1099,9 @@ class RawAsyncHBaseAdmin implements AsyncAdmin {
|
||||||
future.completeExceptionally(err);
|
future.completeExceptionally(err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (locations == null || locations.isEmpty()) {
|
||||||
|
future.completeExceptionally(new TableNotFoundException(tableName));
|
||||||
|
}
|
||||||
CompletableFuture<?>[] compactFutures =
|
CompletableFuture<?>[] compactFutures =
|
||||||
locations.stream().filter(l -> l.getRegion() != null)
|
locations.stream().filter(l -> l.getRegion() != null)
|
||||||
.filter(l -> !l.getRegion().isOffline()).filter(l -> l.getServerName() != null)
|
.filter(l -> !l.getRegion().isOffline()).filter(l -> l.getServerName() != null)
|
||||||
|
|
|
@ -36,6 +36,7 @@ import java.util.stream.Collectors;
|
||||||
import org.apache.hadoop.hbase.HBaseClassTestRule;
|
import org.apache.hadoop.hbase.HBaseClassTestRule;
|
||||||
import org.apache.hadoop.hbase.ServerName;
|
import org.apache.hadoop.hbase.ServerName;
|
||||||
import org.apache.hadoop.hbase.TableName;
|
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.HMaster;
|
||||||
import org.apache.hadoop.hbase.master.RegionState;
|
import org.apache.hadoop.hbase.master.RegionState;
|
||||||
import org.apache.hadoop.hbase.master.ServerManager;
|
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) {
|
private static int countStoreFilesInFamily(List<Region> regions, final byte[] family) {
|
||||||
return countStoreFilesInFamilies(regions, new byte[][] { family });
|
return countStoreFilesInFamilies(regions, new byte[][] { family });
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue