You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by te...@apache.org on 2012/03/23 22:31:42 UTC
svn commit: r1304611 - in /hbase/branches/0.90: CHANGES.txt
src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
Author: tedyu
Date: Fri Mar 23 21:31:42 2012
New Revision: 1304611
URL: http://svn.apache.org/viewvc?rev=1304611&view=rev
Log:
HBASE-5466 Opening a table also opens the metatable and never closes it (Ashley Taylor)
Modified:
hbase/branches/0.90/CHANGES.txt
hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
Modified: hbase/branches/0.90/CHANGES.txt
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/CHANGES.txt?rev=1304611&r1=1304610&r2=1304611&view=diff
==============================================================================
--- hbase/branches/0.90/CHANGES.txt (original)
+++ hbase/branches/0.90/CHANGES.txt Fri Mar 23 21:31:42 2012
@@ -7,6 +7,7 @@ Release 0.90.7 - Unreleased
same region with Src and Destination as same RS. (Ram)
HBASE-5593 Reverse DNS resolution in regionServerStartup() does not strip trailing dot
(David S. Wang)
+ HBASE-5466 Opening a table also opens the metatable and never closes it (Ashley Taylor)
IMPROVEMENT
HBASE-5588 Deprecate/remove AssignmentManager#clearRegionFromTransition
Modified: hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java?rev=1304611&r1=1304610&r2=1304611&view=diff
==============================================================================
--- hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java (original)
+++ hbase/branches/0.90/src/main/java/org/apache/hadoop/hbase/client/MetaScanner.java Fri Mar 23 21:31:42 2012
@@ -142,25 +142,31 @@ public class MetaScanner {
byte[] searchRow =
HRegionInfo.createRegionName(tableName, row, HConstants.NINES,
false);
-
- HTable metaTable = new HTable(configuration, HConstants.META_TABLE_NAME);
- Result startRowResult = metaTable.getRowOrBefore(searchRow,
- HConstants.CATALOG_FAMILY);
- if (startRowResult == null) {
- throw new TableNotFoundException("Cannot find row in .META. for table: "
- + Bytes.toString(tableName) + ", row=" + Bytes.toStringBinary(searchRow));
- }
- byte[] value = startRowResult.getValue(HConstants.CATALOG_FAMILY,
- HConstants.REGIONINFO_QUALIFIER);
- if (value == null || value.length == 0) {
- throw new IOException("HRegionInfo was null or empty in Meta for " +
- Bytes.toString(tableName) + ", row=" + Bytes.toStringBinary(searchRow));
+ HTable metaTable = null;
+ try {
+ metaTable = new HTable(configuration, HConstants.META_TABLE_NAME);
+ Result startRowResult = metaTable.getRowOrBefore(searchRow,
+ HConstants.CATALOG_FAMILY);
+ if (startRowResult == null) {
+ throw new TableNotFoundException("Cannot find row in .META. for table: "
+ + Bytes.toString(tableName) + ", row=" + Bytes.toStringBinary(searchRow));
+ }
+ byte[] value = startRowResult.getValue(HConstants.CATALOG_FAMILY,
+ HConstants.REGIONINFO_QUALIFIER);
+ if (value == null || value.length == 0) {
+ throw new IOException("HRegionInfo was null or empty in Meta for " +
+ Bytes.toString(tableName) + ", row=" + Bytes.toStringBinary(searchRow));
+ }
+ HRegionInfo regionInfo = Writables.getHRegionInfo(value);
+
+ byte[] rowBefore = regionInfo.getStartKey();
+ startRow = HRegionInfo.createRegionName(tableName, rowBefore,
+ HConstants.ZEROES, false);
+ } finally {
+ if (metaTable != null) {
+ metaTable.close();
+ }
}
- HRegionInfo regionInfo = Writables.getHRegionInfo(value);
-
- byte[] rowBefore = regionInfo.getStartKey();
- startRow = HRegionInfo.createRegionName(tableName, rowBefore,
- HConstants.ZEROES, false);
} else if (tableName == null || tableName.length == 0) {
// Full META scan
startRow = HConstants.EMPTY_START_ROW;