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