That code does actually exist in the latest 0.89 release.

It was a protection put in place to guard against a weird behavior that we had 
seen during load balancing.

As Ryan suggests, this code was in need of a rewrite and was just committed 
last week to trunk/0.90.  If you're interested in the new load balancing code, 
it's in o.a.h.h.regionserver.LoadBalancer

At the least, you should upgrade to 0.20.6 as there are some important fixes 
from 0.20.4 (until 0.90 is released, at which point everyone should move to it).

JG

> -----Original Message-----
> From: Ryan Rawson [mailto:[email protected]]
> Sent: Monday, September 06, 2010 7:10 PM
> To: [email protected]
> Subject: Re: question about RegionManager
> 
> That code was completely rewritten in 0.89/0.90... its pretty dodgy so
> I'd
> highly consider upgrading to 0.89 asap.
> > hi, all
> >
> > I'm reading the code of RegionManager, I find in the following method
> there
> > is an situation when nRegionsToAssign <= nregions, the code only
> assigns 1
> > region.
> > Is this correct? Hbase version 0.20.4.
> >
> > private void assignRegionsToMultipleServers(final HServerLoad
> > thisServersLoad,
> > final Set<RegionState> regionsToAssign, final HServerInfo info,
> > final ArrayList<HMsg> returnMsgs) {
> > boolean isMetaAssign = false;
> > for (RegionState s : regionsToAssign) {
> > if (s.getRegionInfo().isMetaRegion())
> > isMetaAssign = true;
> > }
> > int nRegionsToAssign = regionsToAssign.size();
> > // Now many regions to assign this server.
> > int nregions = regionsPerServer(nRegionsToAssign, thisServersLoad);
> > LOG.debug("Assigning for " + info + ": total nregions to assign=" +
> > nRegionsToAssign + ", nregions to reach balance=" + nregions +
> > ", isMetaAssign=" + isMetaAssign);
> > if (nRegionsToAssign <= nregions) {
> > // I do not know whats supposed to happen in this case. Assign one.
> > LOG.debug("Assigning one region only (playing it safe..)");
> > assignRegions(regionsToAssign, 1, info, returnMsgs);
> > } else {

Reply via email to