HBASE-5894 Table deletion failed but HBaseAdmin#deletetable reports it as success (Xufeng)
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1334464 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
007d6da28c
commit
9c8d4067ce
|
@ -510,6 +510,7 @@ public class HBaseAdmin implements Abortable, Closeable {
|
||||||
public void deleteTable(final byte [] tableName) throws IOException {
|
public void deleteTable(final byte [] tableName) throws IOException {
|
||||||
HTableDescriptor.isLegalTableName(tableName);
|
HTableDescriptor.isLegalTableName(tableName);
|
||||||
HRegionLocation firstMetaServer = getFirstMetaServerForTable(tableName);
|
HRegionLocation firstMetaServer = getFirstMetaServerForTable(tableName);
|
||||||
|
boolean tableExists = true;
|
||||||
|
|
||||||
execute(new MasterCallable<Void>() {
|
execute(new MasterCallable<Void>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -541,7 +542,7 @@ public class HBaseAdmin implements Abortable, Closeable {
|
||||||
// let us wait until .META. table is updated and
|
// let us wait until .META. table is updated and
|
||||||
// HMaster removes the table from its HTableDescriptors
|
// HMaster removes the table from its HTableDescriptors
|
||||||
if (values == null || values.length == 0) {
|
if (values == null || values.length == 0) {
|
||||||
boolean tableExists = false;
|
tableExists = false;
|
||||||
HTableDescriptor[] htds;
|
HTableDescriptor[] htds;
|
||||||
MasterKeepAliveConnection master = connection.getKeepAliveMaster();
|
MasterKeepAliveConnection master = connection.getKeepAliveMaster();
|
||||||
try {
|
try {
|
||||||
|
@ -576,6 +577,11 @@ public class HBaseAdmin implements Abortable, Closeable {
|
||||||
// continue
|
// continue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tableExists) {
|
||||||
|
throw new IOException("Retries exhausted, it took too long to wait"+
|
||||||
|
" for the table " + Bytes.toString(tableName) + " to be deleted.");
|
||||||
|
}
|
||||||
// Delete cached information to prevent clients from using old locations
|
// Delete cached information to prevent clients from using old locations
|
||||||
this.connection.clearRegionCache(tableName);
|
this.connection.clearRegionCache(tableName);
|
||||||
LOG.info("Deleted " + Bytes.toString(tableName));
|
LOG.info("Deleted " + Bytes.toString(tableName));
|
||||||
|
|
Loading…
Reference in New Issue