If from Admin we try to unassign a region forcefully, though a valid region
name is given the master is not able to identify the region to unassign.
----------------------------------------------------------------------------------------------------------------------------------------------------
Key: HBASE-4351
URL: https://issues.apache.org/jira/browse/HBASE-4351
Project: HBase
Issue Type: Bug
Environment: Linux
Reporter: ramkrishna.s.vasudevan
Assignee: ramkrishna.s.vasudevan
The following is the problem
Get the exact region name from UI and call
HBaseAdmin.unassign(regionname, true).
Here true is forceful option.
As part of unassign api
{code}
public void unassign(final byte [] regionName, final boolean force)
throws IOException {
Pair<HRegionInfo, HServerAddress> pair =
MetaReader.getRegion(this.catalogTracker, regionName);
if (pair == null) throw new
UnknownRegionException(Bytes.toStringBinary(regionName));
HRegionInfo hri = pair.getFirst();
if (force) this.assignmentManager.clearRegionFromTransition(hri);
this.assignmentManager.unassign(hri, force);
}
{code}
As part of clearRegionFromTransition()
{code}
synchronized (this.regions) {
this.regions.remove(hri);
for (Set<HRegionInfo> regions : this.servers.values()) {
regions.remove(hri);
}
}
{code}
the region is also removed. Hence when the master tries to identify the region
{code}
if (!regions.containsKey(region)) {
debugLog(region, "Attempted to unassign region " +
region.getRegionNameAsString() + " but it is not " +
"currently assigned anywhere");
return;
}
{code}
It is not able to identify the region. It exists in trunk and 0.90.x also.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira