Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
0.94.6
-
None
-
None
Description
ROOT/META are not getting assigned if master restarted while closing ROOT/META.
Lets suppose catalog table regions in M_ZK_REGION_CLOSING state during master initialization and then just we are adding the them to RIT and waiting for TM.
if (isOnDeadServer(regionInfo, deadServers) && (data.getOrigin() == null || !serverManager.isServerOnline(data.getOrigin()))) { // If was on dead server, its closed now. Force to OFFLINE and this // will get it reassigned if appropriate forceOffline(regionInfo, data); } else { // Just insert region into RIT. // If this never updates the timeout will trigger new assignment regionsInTransition.put(encodedRegionName, new RegionState( regionInfo, RegionState.State.CLOSING, data.getStamp(), data.getOrigin())); }
isOnDeadServer always return false to ROOT/META because deadServers is null.
Even TM cannot close them properly because its not available in online regions since its not yet assigned.
synchronized (this.regions) { // Check if this region is currently assigned if (!regions.containsKey(region)) { LOG.debug("Attempted to unassign region " + region.getRegionNameAsString() + " but it is not " + "currently assigned anywhere"); return; } }