You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by jx...@apache.org on 2014/01/17 01:18:24 UTC
svn commit: r1558965 - in
/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master:
AssignmentManager.java HMaster.java
Author: jxiang
Date: Fri Jan 17 00:18:23 2014
New Revision: 1558965
URL: http://svn.apache.org/r1558965
Log:
HBASE-10333 Assignments are not retained on a cluster start
Modified:
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
Modified: hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1558965&r1=1558964&r2=1558965&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Fri Jan 17 00:18:23 2014
@@ -633,17 +633,19 @@ public class AssignmentManager extends Z
}
// Put it back in transition so that SSH can re-assign it
regionStates.updateRegionState(regionInfo, State.OFFLINE, sn);
- // No mater the previous server is online or offline,
- // we need to reset the last region server of the region.
- regionStates.setLastRegionServerOfRegion(sn, encodedName);
+
if (regionInfo.isMetaRegion()) {
// If it's meta region, reset the meta location.
// So that master knows the right meta region server.
MetaRegionTracker.setMetaLocation(watcher, sn);
- }
- // Make sure we know the server is dead.
- if (!serverManager.isServerDead(sn)) {
- serverManager.expireServer(sn);
+ } else {
+ // No matter the previous server is online or offline,
+ // we need to reset the last region server of the region.
+ regionStates.setLastRegionServerOfRegion(sn, encodedName);
+ // Make sure we know the server is dead.
+ if (!serverManager.isServerDead(sn)) {
+ serverManager.expireServer(sn);
+ }
}
return false;
}
Modified: hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1558965&r1=1558964&r2=1558965&view=diff
==============================================================================
--- hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/branches/0.96/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Fri Jan 17 00:18:23 2014
@@ -1006,16 +1006,23 @@ MasterServices, Server {
assigned++;
if (!rit) {
// Assign meta since not already in transition
- if (!serverManager.isServerDead(currentMetaServer)) {
- LOG.info("Forcing expire of " + currentMetaServer);
- serverManager.expireServer(currentMetaServer);
+ if (currentMetaServer != null) {
+ // If the meta server is not known to be dead or online,
+ // just split the meta log, and don't expire it since this
+ // could be a full cluster restart. Otherwise, we will think
+ // this is a failover and lose previous region locations.
+ // If it is really a failover case, AM will find out in rebuilding
+ // user regions. Otherwise, we are good since all logs are split
+ // or known to be replayed before user regions are assigned.
+ if (serverManager.isServerOnline(currentMetaServer)) {
+ LOG.info("Forcing expire of " + currentMetaServer);
+ serverManager.expireServer(currentMetaServer);
+ }
splitMetaLogBeforeAssignment(currentMetaServer);
if (this.distributedLogReplay) {
logReplayFailedMetaServer = currentMetaServer;
}
}
- // Make sure assignment manager knows where the meta is,
- // so that meta sever shutdown handler kicks in.
assignmentManager.assignMeta();
}
} else {