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/05/15 23:56:48 UTC
svn commit: r1338916 -
/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Author: tedyu
Date: Tue May 15 21:56:48 2012
New Revision: 1338916
URL: http://svn.apache.org/viewvc?rev=1338916&view=rev
Log:
HBASE-5998 Bulk assignment: regionserver optimization by using a temporary cache for table descriptors when receveing an open regions request (N Keywal)
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=1338916&r1=1338915&r2=1338916&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Tue May 15 21:56:48 2012
@@ -3404,6 +3404,9 @@ public class HRegionServer implements C
requestCount.incrementAndGet();
OpenRegionResponse.Builder
builder = OpenRegionResponse.newBuilder();
+ Map<String, HTableDescriptor> htds =
+ new HashMap<String, HTableDescriptor>(request.getRegionList().size());
+
for (RegionInfo regionInfo: request.getRegionList()) {
HRegionInfo region = ProtobufUtil.toRegionInfo(regionInfo);
checkIfRegionInTransition(region, OPEN);
@@ -3427,7 +3430,11 @@ public class HRegionServer implements C
}
LOG.info("Received request to open region: "
+ region.getRegionNameAsString() + " on "+this.serverNameFromMasterPOV);
- HTableDescriptor htd = this.tableDescriptors.get(region.getTableName());
+ HTableDescriptor htd = htds.get(region.getTableNameAsString());
+ if (htd == null) {
+ htd = this.tableDescriptors.get(region.getTableName());
+ htds.put(region.getTableNameAsString(), htd);
+ }
this.regionsInTransitionInRS.putIfAbsent(region.getEncodedNameAsBytes(), true);
// Need to pass the expected version in the constructor.
if (region.isRootRegion()) {