You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2009/10/07 19:05:20 UTC
svn commit: r822804 - in /hadoop/hbase/trunk: ./
src/java/org/apache/hadoop/hbase/master/
src/java/org/apache/hadoop/hbase/regionserver/
Author: stack
Date: Wed Oct 7 17:05:20 2009
New Revision: 822804
URL: http://svn.apache.org/viewvc?rev=822804&view=rev
Log:
HBASE-1890 hbase-1506 where assignment is done at regionserver doesn't work
Modified:
hadoop/hbase/trunk/CHANGES.txt
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
Modified: hadoop/hbase/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/CHANGES.txt?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/CHANGES.txt (original)
+++ hadoop/hbase/trunk/CHANGES.txt Wed Oct 7 17:05:20 2009
@@ -60,6 +60,7 @@
hbase-1784)
HBASE-1831 Scanning API must be reworked to allow for fully functional
Filters client-side
+ HBASE-1890 hbase-1506 where assignment is done at regionserver doesn't work
IMPROVEMENTS
HBASE-1760 Cleanup TODOs in HTable
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/RegionManager.java Wed Oct 7 17:05:20 2009
@@ -341,17 +341,8 @@
LOG.info("Assigning region " + regionName + " to " + sinfo.getServerName());
rs.setPendingOpen(sinfo.getServerName());
this.regionsInTransition.put(regionName, rs);
- if (returnMsgs != null) {
- returnMsgs.add(new HMsg(HMsg.Type.MSG_REGION_OPEN, rs.getRegionInfo()));
- }
- }
- /**
- * @param regionName
- * @param sinfo
- */
- void doRegionAssignment(final String regionName, final HServerInfo sinfo) {
- doRegionAssignment(this.regionsInTransition.get(regionName), sinfo, null);
+ returnMsgs.add(new HMsg(HMsg.Type.MSG_REGION_OPEN, rs.getRegionInfo()));
}
/*
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/master/ServerManager.java Wed Oct 7 17:05:20 2009
@@ -454,8 +454,7 @@
break;
case MSG_REPORT_SPLIT:
- processSplitRegion(serverInfo, region, incomingMsgs[++i],
- incomingMsgs[++i]);
+ processSplitRegion(region, incomingMsgs[++i], incomingMsgs[++i]);
break;
default:
@@ -497,26 +496,18 @@
* @param splitB
* @param returnMsgs
*/
- private void processSplitRegion(final HServerInfo si, final HRegionInfo region,
- final HMsg splitA, final HMsg splitB) {
+ private void processSplitRegion(HRegionInfo region, HMsg splitA, HMsg splitB) {
synchronized (master.regionManager) {
// Cancel any actions pending for the affected region.
// This prevents the master from sending a SPLIT message if the table
// has already split by the region server.
- this.master.regionManager.endActions(region.getRegionName());
- // Region A is now opened immediately on the splitting server. The message
- // that its been successfully opened is probably just behind this split
- // message. Set up the master state so that its properly primed for the
- // coming open message.
- HRegionInfo a = splitA.getRegionInfo();
- assignSplitDaughter(a);
- this.master.regionManager.doRegionAssignment(a.getRegionNameAsString(), si);
- // Region B will be assigned old-school style by the master.
+ master.regionManager.endActions(region.getRegionName());
+ assignSplitDaughter(splitA.getRegionInfo());
assignSplitDaughter(splitB.getRegionInfo());
if (region.isMetaTable()) {
// A meta region has split.
- this.master.regionManager.offlineMetaRegion(region.getStartKey());
- this.master.regionManager.incrementNumMetaRegions();
+ master.regionManager.offlineMetaRegion(region.getStartKey());
+ master.regionManager.incrementNumMetaRegions();
}
}
}
@@ -587,7 +578,7 @@
if (duplicateAssignment) {
if (LOG.isDebugEnabled()) {
LOG.debug("region server " + serverInfo.getServerAddress().toString()
- + " should not have opened region " + Bytes.toString(region.getRegionName()));
+ + " should not have opened region " + Bytes.toString(region.getRegionName()));
}
// This Region should not have been opened.
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/CompactSplitThread.java Wed Oct 7 17:05:20 2009
@@ -219,8 +219,8 @@
newRegions[i].getRegionInfo()));
t.put(put);
}
- // Now tell the master about the new regions. Note that we'll online
- // the A region ourselves on this server. Master only has to online B.
+
+ // Now tell the master about the new regions
server.reportSplit(oldRegionInfo, newRegions[0].getRegionInfo(),
newRegions[1].getRegionInfo());
LOG.info("region split, META updated, and report to master all" +
@@ -228,15 +228,8 @@
", new regions: " + newRegions[0].toString() + ", " +
newRegions[1].toString() + ". Split took " +
StringUtils.formatTimeDiff(System.currentTimeMillis(), startTime));
- // Server region A. Let master assign region B.
- HRegionInfo hri = newRegions[0].getRegionInfo();
- HMsg msg = new HMsg(HMsg.Type.MSG_REGION_OPEN, hri,
- Bytes.toBytes("Local immediate open"));
- try {
- this.server.toDo.put(new HRegionServer.ToDoEntry(msg));
- } catch (InterruptedException e) {
- throw new IOException("Failed queue of open of " + hri, e);
- }
+
+ // Do not serve the new regions. Let the Master assign them.
}
/**
Modified: hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
URL: http://svn.apache.org/viewvc/hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java?rev=822804&r1=822803&r2=822804&view=diff
==============================================================================
--- hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java (original)
+++ hadoop/hbase/trunk/src/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java Wed Oct 7 17:05:20 2009
@@ -1396,7 +1396,7 @@
/*
* Data structure to hold a HMsg and retries count.
*/
- static final class ToDoEntry {
+ private static final class ToDoEntry {
protected final AtomicInteger tries = new AtomicInteger(0);
protected final HMsg msg;