HBASE-5466 Opening a table also opens the metatable and never closes it
(Ashley Taylor) git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1293047 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a4a4e97338
commit
49904bcf1d
|
@ -12,6 +12,8 @@ Release 0.92.1 - Unreleased
|
|||
HBASE-5243 LogSyncerThread not getting shutdown waiting for the interrupted flag (Ram)
|
||||
HBASE-5255 Use singletons for OperationStatus to save memory (Benoit)
|
||||
HBASE-5345 CheckAndPut doesn't work when value is empty byte[] (Evert Arckens)
|
||||
HBASE-5466 Opening a table also opens the metatable and never closes it
|
||||
(Ashley Taylor)
|
||||
|
||||
TESTS
|
||||
HBASE-5223 TestMetaReaderEditor is missing call to CatalogTracker.stop()
|
||||
|
|
|
@ -145,25 +145,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));
|
||||
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();
|
||||
}
|
||||
}
|
||||
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);
|
||||
} else if (tableName == null || tableName.length == 0) {
|
||||
// Full META scan
|
||||
startRow = HConstants.EMPTY_START_ROW;
|
||||
|
|
Loading…
Reference in New Issue