@Override
  public TableDescriptor remove(final TableName tablename) throws IOException {
    if (fsreadonly) {
      throw new NotImplementedException("Cannot remove a table descriptor - in read only mode");
    }
    Path tabledir = getTableDir(tablename);
    if (this.fs.exists(tabledir)) {
      if (!this.fs.delete(tabledir, true)) {
        throw new IOException("Failed delete of " + tabledir.toString());
      }
    }
    TableDescriptor descriptor = this.cache.remove(tablename);
    return descriptor;
  }
Removes the table descriptor from the local cache and returns it. If not in read only mode, it
also deletes the entire table directory(!) from the FileSystem.
hbase-server/src/main/java/org/apache/hadoop/hbase/util/FSTableDescriptors.java