HBASE-7996 Clean up resource leak in MultiTableInputFormat

git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1453720 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Michael Stack 2013-03-07 07:42:39 +00:00
parent 92d7a45476
commit 4fa8e86f29
1 changed files with 40 additions and 36 deletions

View File

@ -116,7 +116,10 @@ public abstract class MultiTableInputFormatBase extends
byte[] tableName = scan.getAttribute(Scan.SCAN_ATTRIBUTES_TABLE_NAME);
if (tableName == null)
throw new IOException("A scan object did not have a table name");
HTable table = new HTable(context.getConfiguration(), tableName);
HTable table = null;
try {
table = new HTable(context.getConfiguration(), tableName);
Pair<byte[][], byte[][]> keys = table.getStartEndKeys();
if (keys == null || keys.getFirst() == null ||
keys.getFirst().length == 0) {
@ -149,14 +152,15 @@ public abstract class MultiTableInputFormatBase extends
stopRow) <= 0) && keys.getSecond()[i].length > 0 ? keys
.getSecond()[i] : stopRow;
InputSplit split =
new TableSplit(tableName, scan, splitStart,
splitStop, regionLocation);
new TableSplit(tableName, scan, splitStart, splitStop, regionLocation);
splits.add(split);
if (LOG.isDebugEnabled())
LOG.debug("getSplits: split -> " + (count++) + " -> " + split);
}
}
table.close();
} finally {
if (null != table) table.close();
}
}
return splits;
}