Hi, I wanted to automate the manual deletion of dangling row(s) in .META. table. Please kindly comment on the following modification to HMaster.createTable() which is base on 0.20.6 codebase:
long scannerid = srvr.openScanner(metaRegionName, scan); try { HashSet<byte[]> regions = new HashSet<byte[]>(); boolean cleanTable = false, // whether the table has a row in .META. whose start key is empty exists = false; Result data = srvr.next(scannerid); while (data != null) { if (data != null && data.size() > 0) { HRegionInfo info = Writables.getHRegionInfo( data.getValue(CATALOG_FAMILY, REGIONINFO_QUALIFIER)); if (info.getTableDesc().getNameAsString().equals(tableName)) { exists = true; if (info.getStartKey().length == 0) { cleanTable = true; } else { regions.add(info.getRegionName()); } } } data = srvr.next(scannerid); } if (exists) { if (!cleanTable) { HTable meta = new HTable(HConstants.META_TABLE_NAME); for (byte[] region : regions) { Delete d = new Delete(region); meta.delete(d); LOG.info("dangling row " + Bytes.toString(region) + " deleted from .META."); } } else { // A region for this table already exists. Ergo table exists. throw new TableExistsException(tableName); } } } finally { srvr.close(scannerid); } Thanks