You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2013/08/29 19:52:56 UTC
svn commit: r1518728 -
/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java
Author: mbertozzi
Date: Thu Aug 29 17:52:56 2013
New Revision: 1518728
URL: http://svn.apache.org/r1518728
Log:
HBASE-9353 HTable returned by MetaReader#getMetaHTable() is not closed in MetaEditor#addRegionToMeta()
Modified:
hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java
Modified: hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java
URL: http://svn.apache.org/viewvc/hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java?rev=1518728&r1=1518727&r2=1518728&view=diff
==============================================================================
--- hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java (original)
+++ hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/catalog/MetaEditor.java Thu Aug 29 17:52:56 2013
@@ -111,8 +111,7 @@ public class MetaEditor {
*/
static void putToCatalogTable(final CatalogTracker ct, final Put p)
throws IOException {
- HTable t = MetaReader.getCatalogHTable(ct);
- put(t, p);
+ put(MetaReader.getCatalogHTable(ct), p);
}
/**
@@ -252,7 +251,12 @@ public class MetaEditor {
*/
public static void addRegionToMeta(CatalogTracker catalogTracker, HRegionInfo regionInfo,
HRegionInfo splitA, HRegionInfo splitB) throws IOException {
- addRegionToMeta(MetaReader.getMetaHTable(catalogTracker), regionInfo, splitA, splitB);
+ HTable meta = MetaReader.getMetaHTable(catalogTracker);
+ try {
+ addRegionToMeta(meta, regionInfo, splitA, splitB);
+ } finally {
+ meta.close();
+ }
}
/**
@@ -306,25 +310,29 @@ public class MetaEditor {
HRegionInfo mergedRegion, HRegionInfo regionA, HRegionInfo regionB,
ServerName sn) throws IOException {
HTable meta = MetaReader.getMetaHTable(catalogTracker);
- HRegionInfo copyOfMerged = new HRegionInfo(mergedRegion);
+ try {
+ HRegionInfo copyOfMerged = new HRegionInfo(mergedRegion);
- // Put for parent
- Put putOfMerged = makePutFromRegionInfo(copyOfMerged);
- putOfMerged.add(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER,
- regionA.toByteArray());
- putOfMerged.add(HConstants.CATALOG_FAMILY, HConstants.MERGEB_QUALIFIER,
- regionB.toByteArray());
-
- // Deletes for merging regions
- Delete deleteA = makeDeleteFromRegionInfo(regionA);
- Delete deleteB = makeDeleteFromRegionInfo(regionB);
-
- // The merged is a new region, openSeqNum = 1 is fine.
- addLocation(putOfMerged, sn, 1);
-
- byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString()
- + HConstants.DELIMITER);
- multiMutate(meta, tableRow, putOfMerged, deleteA, deleteB);
+ // Put for parent
+ Put putOfMerged = makePutFromRegionInfo(copyOfMerged);
+ putOfMerged.add(HConstants.CATALOG_FAMILY, HConstants.MERGEA_QUALIFIER,
+ regionA.toByteArray());
+ putOfMerged.add(HConstants.CATALOG_FAMILY, HConstants.MERGEB_QUALIFIER,
+ regionB.toByteArray());
+
+ // Deletes for merging regions
+ Delete deleteA = makeDeleteFromRegionInfo(regionA);
+ Delete deleteB = makeDeleteFromRegionInfo(regionB);
+
+ // The merged is a new region, openSeqNum = 1 is fine.
+ addLocation(putOfMerged, sn, 1);
+
+ byte[] tableRow = Bytes.toBytes(mergedRegion.getRegionNameAsString()
+ + HConstants.DELIMITER);
+ multiMutate(meta, tableRow, putOfMerged, deleteA, deleteB);
+ } finally {
+ meta.close();
+ }
}
/**
@@ -342,23 +350,27 @@ public class MetaEditor {
HRegionInfo parent, HRegionInfo splitA, HRegionInfo splitB,
ServerName sn) throws IOException {
HTable meta = MetaReader.getMetaHTable(catalogTracker);
- HRegionInfo copyOfParent = new HRegionInfo(parent);
- copyOfParent.setOffline(true);
- copyOfParent.setSplit(true);
-
- //Put for parent
- Put putParent = makePutFromRegionInfo(copyOfParent);
- addDaughtersToPut(putParent, splitA, splitB);
-
- //Puts for daughters
- Put putA = makePutFromRegionInfo(splitA);
- Put putB = makePutFromRegionInfo(splitB);
+ try {
+ HRegionInfo copyOfParent = new HRegionInfo(parent);
+ copyOfParent.setOffline(true);
+ copyOfParent.setSplit(true);
+
+ //Put for parent
+ Put putParent = makePutFromRegionInfo(copyOfParent);
+ addDaughtersToPut(putParent, splitA, splitB);
+
+ //Puts for daughters
+ Put putA = makePutFromRegionInfo(splitA);
+ Put putB = makePutFromRegionInfo(splitB);
- addLocation(putA, sn, 1); //these are new regions, openSeqNum = 1 is fine.
- addLocation(putB, sn, 1);
+ addLocation(putA, sn, 1); //these are new regions, openSeqNum = 1 is fine.
+ addLocation(putB, sn, 1);
- byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);
- multiMutate(meta, tableRow, putParent, putA, putB);
+ byte[] tableRow = Bytes.toBytes(parent.getRegionNameAsString() + HConstants.DELIMITER);
+ multiMutate(meta, tableRow, putParent, putA, putB);
+ } finally {
+ meta.close();
+ }
}
/**