You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2018/09/29 14:52:43 UTC

[25/41] hbase-site git commit: Published site at fdbaa4c3f0253700d12b6bd61cacf29ca7fbc19f.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/83fd16f2/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html
index dee066e..1ba56c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html
@@ -1563,87 +1563,94 @@
 <span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
 <span class="sourceLineNo">1556</span><a name="line.1556"></a>
 <span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * Used to assign a single region to a random server.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>      List&lt;ServerName&gt; servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    ServerName sn = null;<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    final int maxIterations = numServers * 4;<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    int iterations = 0;<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    do {<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>      int i = RANDOM.nextInt(numServers);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>      sn = servers.get(i);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      if (!usedSNs.contains(sn)) {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>        usedSNs.add(sn);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      }<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    if (iterations &gt;= maxIterations) {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>      // availability<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      for (ServerName unusedServer : servers) {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>          // check if any other unused server is there for us to use.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>            sn = unusedServer;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>            break;<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>          }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    return sn;<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  }<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span><a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  /**<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>   * Round robin a list of regions to a list of servers<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   */<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1598"></a>
+<span class="sourceLineNo">1558</span>  * Updates the balancer status tag reported to JMX<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>  */<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>  public void updateBalancerStatus(boolean status) {<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    metricsBalancer.balancerStatus(status);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>  /**<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * Used to assign a single region to a random server.<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      List&lt;ServerName&gt; servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    ServerName sn = null;<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    final int maxIterations = numServers * 4;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>    int iterations = 0;<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    do {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      int i = RANDOM.nextInt(numServers);<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>      sn = servers.get(i);<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!usedSNs.contains(sn)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        usedSNs.add(sn);<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>    if (iterations &gt;= maxIterations) {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      // availability<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      for (ServerName unusedServer : servers) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>          // check if any other unused server is there for us to use.<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>            sn = unusedServer;<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>            break;<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          }<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>      }<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return sn;<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
 <span class="sourceLineNo">1599</span><a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    int numServers = servers.size();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>    int numRegions = regions.size();<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    int serverIdx = 0;<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    if (numServers &gt; 1) {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>    }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    int regionIdx = 0;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>          unassignedRegions.add(region);<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        } else {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>          serverRegions.add(region);<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>          cluster.doAssignRegion(region, server);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      assignments.put(server, serverRegions);<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      regionIdx++;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>    }<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>  }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    } else {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      return new HashMap&lt;&gt;();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>  }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span><a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>  @Override<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>  }<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>}<a name="line.1638"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Round robin a list of regions to a list of servers<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span><a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    int numServers = servers.size();<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>    int numRegions = regions.size();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>    int serverIdx = 0;<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    if (numServers &gt; 1) {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    int regionIdx = 0;<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span><a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>          unassignedRegions.add(region);<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        } else {<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>          serverRegions.add(region);<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>          cluster.doAssignRegion(region, server);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>      assignments.put(server, serverRegions);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      regionIdx++;<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>    }<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>  }<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span><a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    } else {<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return new HashMap&lt;&gt;();<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>    }<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  }<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span><a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>  @Override<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/83fd16f2/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.html
index dee066e..1ba56c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.html
@@ -1563,87 +1563,94 @@
 <span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
 <span class="sourceLineNo">1556</span><a name="line.1556"></a>
 <span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * Used to assign a single region to a random server.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>      List&lt;ServerName&gt; servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    ServerName sn = null;<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    final int maxIterations = numServers * 4;<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    int iterations = 0;<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    do {<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>      int i = RANDOM.nextInt(numServers);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>      sn = servers.get(i);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      if (!usedSNs.contains(sn)) {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>        usedSNs.add(sn);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      }<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    if (iterations &gt;= maxIterations) {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>      // availability<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      for (ServerName unusedServer : servers) {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>          // check if any other unused server is there for us to use.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>            sn = unusedServer;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>            break;<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>          }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    return sn;<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  }<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span><a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  /**<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>   * Round robin a list of regions to a list of servers<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   */<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1598"></a>
+<span class="sourceLineNo">1558</span>  * Updates the balancer status tag reported to JMX<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>  */<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>  public void updateBalancerStatus(boolean status) {<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    metricsBalancer.balancerStatus(status);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>  /**<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * Used to assign a single region to a random server.<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      List&lt;ServerName&gt; servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    ServerName sn = null;<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    final int maxIterations = numServers * 4;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>    int iterations = 0;<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    do {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      int i = RANDOM.nextInt(numServers);<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>      sn = servers.get(i);<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!usedSNs.contains(sn)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        usedSNs.add(sn);<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>    if (iterations &gt;= maxIterations) {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      // availability<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      for (ServerName unusedServer : servers) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>          // check if any other unused server is there for us to use.<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>            sn = unusedServer;<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>            break;<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          }<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>      }<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return sn;<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
 <span class="sourceLineNo">1599</span><a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    int numServers = servers.size();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>    int numRegions = regions.size();<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    int serverIdx = 0;<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    if (numServers &gt; 1) {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>    }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    int regionIdx = 0;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>          unassignedRegions.add(region);<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        } else {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>          serverRegions.add(region);<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>          cluster.doAssignRegion(region, server);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      assignments.put(server, serverRegions);<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      regionIdx++;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>    }<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>  }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    } else {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      return new HashMap&lt;&gt;();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>  }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span><a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>  @Override<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>  }<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>}<a name="line.1638"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Round robin a list of regions to a list of servers<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span><a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    int numServers = servers.size();<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>    int numRegions = regions.size();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>    int serverIdx = 0;<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    if (numServers &gt; 1) {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    int regionIdx = 0;<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span><a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>          unassignedRegions.add(region);<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        } else {<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>          serverRegions.add(region);<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>          cluster.doAssignRegion(region, server);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>      assignments.put(server, serverRegions);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      regionIdx++;<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>    }<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>  }<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span><a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    } else {<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return new HashMap&lt;&gt;();<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>    }<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  }<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span><a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>  @Override<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/83fd16f2/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.AssignRegionAction.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.AssignRegionAction.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.AssignRegionAction.html
index dee066e..1ba56c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.AssignRegionAction.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.AssignRegionAction.html
@@ -1563,87 +1563,94 @@
 <span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
 <span class="sourceLineNo">1556</span><a name="line.1556"></a>
 <span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * Used to assign a single region to a random server.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>      List&lt;ServerName&gt; servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    ServerName sn = null;<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    final int maxIterations = numServers * 4;<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    int iterations = 0;<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    do {<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>      int i = RANDOM.nextInt(numServers);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>      sn = servers.get(i);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      if (!usedSNs.contains(sn)) {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>        usedSNs.add(sn);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      }<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    if (iterations &gt;= maxIterations) {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>      // availability<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      for (ServerName unusedServer : servers) {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>          // check if any other unused server is there for us to use.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>            sn = unusedServer;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>            break;<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>          }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    return sn;<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  }<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span><a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  /**<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>   * Round robin a list of regions to a list of servers<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   */<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1598"></a>
+<span class="sourceLineNo">1558</span>  * Updates the balancer status tag reported to JMX<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>  */<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>  public void updateBalancerStatus(boolean status) {<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    metricsBalancer.balancerStatus(status);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>  /**<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * Used to assign a single region to a random server.<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      List&lt;ServerName&gt; servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    ServerName sn = null;<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    final int maxIterations = numServers * 4;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>    int iterations = 0;<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    do {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      int i = RANDOM.nextInt(numServers);<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>      sn = servers.get(i);<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!usedSNs.contains(sn)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        usedSNs.add(sn);<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>    if (iterations &gt;= maxIterations) {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      // availability<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      for (ServerName unusedServer : servers) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>          // check if any other unused server is there for us to use.<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>            sn = unusedServer;<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>            break;<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          }<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>      }<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return sn;<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
 <span class="sourceLineNo">1599</span><a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    int numServers = servers.size();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>    int numRegions = regions.size();<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    int serverIdx = 0;<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    if (numServers &gt; 1) {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>    }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    int regionIdx = 0;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>          unassignedRegions.add(region);<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        } else {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>          serverRegions.add(region);<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>          cluster.doAssignRegion(region, server);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      assignments.put(server, serverRegions);<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      regionIdx++;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>    }<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>  }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    } else {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      return new HashMap&lt;&gt;();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>  }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span><a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>  @Override<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>  }<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>}<a name="line.1638"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Round robin a list of regions to a list of servers<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span><a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    int numServers = servers.size();<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>    int numRegions = regions.size();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>    int serverIdx = 0;<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    if (numServers &gt; 1) {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    int regionIdx = 0;<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span><a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>          unassignedRegions.add(region);<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        } else {<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>          serverRegions.add(region);<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>          cluster.doAssignRegion(region, server);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>      assignments.put(server, serverRegions);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      regionIdx++;<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>    }<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>  }<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span><a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    } else {<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return new HashMap&lt;&gt;();<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>    }<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  }<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span><a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>  @Override<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/83fd16f2/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html
index dee066e..1ba56c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html
@@ -1563,87 +1563,94 @@
 <span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
 <span class="sourceLineNo">1556</span><a name="line.1556"></a>
 <span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * Used to assign a single region to a random server.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>      List&lt;ServerName&gt; servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    ServerName sn = null;<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    final int maxIterations = numServers * 4;<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    int iterations = 0;<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    do {<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>      int i = RANDOM.nextInt(numServers);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>      sn = servers.get(i);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      if (!usedSNs.contains(sn)) {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>        usedSNs.add(sn);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      }<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    if (iterations &gt;= maxIterations) {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>      // availability<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      for (ServerName unusedServer : servers) {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>          // check if any other unused server is there for us to use.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>            sn = unusedServer;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>            break;<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>          }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    return sn;<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  }<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span><a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  /**<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>   * Round robin a list of regions to a list of servers<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   */<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1598"></a>
+<span class="sourceLineNo">1558</span>  * Updates the balancer status tag reported to JMX<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>  */<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>  public void updateBalancerStatus(boolean status) {<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    metricsBalancer.balancerStatus(status);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>  /**<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * Used to assign a single region to a random server.<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      List&lt;ServerName&gt; servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    ServerName sn = null;<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    final int maxIterations = numServers * 4;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>    int iterations = 0;<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    do {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      int i = RANDOM.nextInt(numServers);<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>      sn = servers.get(i);<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!usedSNs.contains(sn)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        usedSNs.add(sn);<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>    if (iterations &gt;= maxIterations) {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      // availability<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      for (ServerName unusedServer : servers) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>          // check if any other unused server is there for us to use.<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>            sn = unusedServer;<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>            break;<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          }<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>      }<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return sn;<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
 <span class="sourceLineNo">1599</span><a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    int numServers = servers.size();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>    int numRegions = regions.size();<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    int serverIdx = 0;<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    if (numServers &gt; 1) {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>    }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    int regionIdx = 0;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>          unassignedRegions.add(region);<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        } else {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>          serverRegions.add(region);<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>          cluster.doAssignRegion(region, server);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      assignments.put(server, serverRegions);<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      regionIdx++;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>    }<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>  }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    } else {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      return new HashMap&lt;&gt;();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>  }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span><a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>  @Override<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>  }<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>}<a name="line.1638"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Round robin a list of regions to a list of servers<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span><a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    int numServers = servers.size();<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>    int numRegions = regions.size();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>    int serverIdx = 0;<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    if (numServers &gt; 1) {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    int regionIdx = 0;<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span><a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>          unassignedRegions.add(region);<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        } else {<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>          serverRegions.add(region);<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>          cluster.doAssignRegion(region, server);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>      assignments.put(server, serverRegions);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      regionIdx++;<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>    }<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>  }<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span><a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    } else {<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return new HashMap&lt;&gt;();<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>    }<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  }<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span><a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>  @Override<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/83fd16f2/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.MoveRegionAction.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.MoveRegionAction.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.MoveRegionAction.html
index dee066e..1ba56c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.MoveRegionAction.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.MoveRegionAction.html
@@ -1563,87 +1563,94 @@
 <span class="sourceLineNo">1555</span>  }<a name="line.1555"></a>
 <span class="sourceLineNo">1556</span><a name="line.1556"></a>
 <span class="sourceLineNo">1557</span>  /**<a name="line.1557"></a>
-<span class="sourceLineNo">1558</span>   * Used to assign a single region to a random server.<a name="line.1558"></a>
-<span class="sourceLineNo">1559</span>   */<a name="line.1559"></a>
-<span class="sourceLineNo">1560</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1560"></a>
-<span class="sourceLineNo">1561</span>      List&lt;ServerName&gt; servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1562"></a>
-<span class="sourceLineNo">1563</span>    ServerName sn = null;<a name="line.1563"></a>
-<span class="sourceLineNo">1564</span>    final int maxIterations = numServers * 4;<a name="line.1564"></a>
-<span class="sourceLineNo">1565</span>    int iterations = 0;<a name="line.1565"></a>
-<span class="sourceLineNo">1566</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1566"></a>
-<span class="sourceLineNo">1567</span>    do {<a name="line.1567"></a>
-<span class="sourceLineNo">1568</span>      int i = RANDOM.nextInt(numServers);<a name="line.1568"></a>
-<span class="sourceLineNo">1569</span>      sn = servers.get(i);<a name="line.1569"></a>
-<span class="sourceLineNo">1570</span>      if (!usedSNs.contains(sn)) {<a name="line.1570"></a>
-<span class="sourceLineNo">1571</span>        usedSNs.add(sn);<a name="line.1571"></a>
-<span class="sourceLineNo">1572</span>      }<a name="line.1572"></a>
-<span class="sourceLineNo">1573</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1573"></a>
-<span class="sourceLineNo">1574</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span>    if (iterations &gt;= maxIterations) {<a name="line.1575"></a>
-<span class="sourceLineNo">1576</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1576"></a>
-<span class="sourceLineNo">1577</span>      // availability<a name="line.1577"></a>
-<span class="sourceLineNo">1578</span>      for (ServerName unusedServer : servers) {<a name="line.1578"></a>
-<span class="sourceLineNo">1579</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1579"></a>
-<span class="sourceLineNo">1580</span>          // check if any other unused server is there for us to use.<a name="line.1580"></a>
-<span class="sourceLineNo">1581</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1581"></a>
-<span class="sourceLineNo">1582</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1582"></a>
-<span class="sourceLineNo">1583</span>            sn = unusedServer;<a name="line.1583"></a>
-<span class="sourceLineNo">1584</span>            break;<a name="line.1584"></a>
-<span class="sourceLineNo">1585</span>          }<a name="line.1585"></a>
-<span class="sourceLineNo">1586</span>        }<a name="line.1586"></a>
-<span class="sourceLineNo">1587</span>      }<a name="line.1587"></a>
-<span class="sourceLineNo">1588</span>    }<a name="line.1588"></a>
-<span class="sourceLineNo">1589</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1589"></a>
-<span class="sourceLineNo">1590</span>    return sn;<a name="line.1590"></a>
-<span class="sourceLineNo">1591</span>  }<a name="line.1591"></a>
-<span class="sourceLineNo">1592</span><a name="line.1592"></a>
-<span class="sourceLineNo">1593</span>  /**<a name="line.1593"></a>
-<span class="sourceLineNo">1594</span>   * Round robin a list of regions to a list of servers<a name="line.1594"></a>
-<span class="sourceLineNo">1595</span>   */<a name="line.1595"></a>
-<span class="sourceLineNo">1596</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1598"></a>
+<span class="sourceLineNo">1558</span>  * Updates the balancer status tag reported to JMX<a name="line.1558"></a>
+<span class="sourceLineNo">1559</span>  */<a name="line.1559"></a>
+<span class="sourceLineNo">1560</span>  public void updateBalancerStatus(boolean status) {<a name="line.1560"></a>
+<span class="sourceLineNo">1561</span>    metricsBalancer.balancerStatus(status);<a name="line.1561"></a>
+<span class="sourceLineNo">1562</span>  }<a name="line.1562"></a>
+<span class="sourceLineNo">1563</span><a name="line.1563"></a>
+<span class="sourceLineNo">1564</span>  /**<a name="line.1564"></a>
+<span class="sourceLineNo">1565</span>   * Used to assign a single region to a random server.<a name="line.1565"></a>
+<span class="sourceLineNo">1566</span>   */<a name="line.1566"></a>
+<span class="sourceLineNo">1567</span>  private ServerName randomAssignment(Cluster cluster, RegionInfo regionInfo,<a name="line.1567"></a>
+<span class="sourceLineNo">1568</span>      List&lt;ServerName&gt; servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span>    int numServers = servers.size(); // servers is not null, numServers &gt; 1<a name="line.1569"></a>
+<span class="sourceLineNo">1570</span>    ServerName sn = null;<a name="line.1570"></a>
+<span class="sourceLineNo">1571</span>    final int maxIterations = numServers * 4;<a name="line.1571"></a>
+<span class="sourceLineNo">1572</span>    int iterations = 0;<a name="line.1572"></a>
+<span class="sourceLineNo">1573</span>    List&lt;ServerName&gt; usedSNs = new ArrayList&lt;&gt;(servers.size());<a name="line.1573"></a>
+<span class="sourceLineNo">1574</span>    do {<a name="line.1574"></a>
+<span class="sourceLineNo">1575</span>      int i = RANDOM.nextInt(numServers);<a name="line.1575"></a>
+<span class="sourceLineNo">1576</span>      sn = servers.get(i);<a name="line.1576"></a>
+<span class="sourceLineNo">1577</span>      if (!usedSNs.contains(sn)) {<a name="line.1577"></a>
+<span class="sourceLineNo">1578</span>        usedSNs.add(sn);<a name="line.1578"></a>
+<span class="sourceLineNo">1579</span>      }<a name="line.1579"></a>
+<span class="sourceLineNo">1580</span>    } while (cluster.wouldLowerAvailability(regionInfo, sn)<a name="line.1580"></a>
+<span class="sourceLineNo">1581</span>        &amp;&amp; iterations++ &lt; maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span>    if (iterations &gt;= maxIterations) {<a name="line.1582"></a>
+<span class="sourceLineNo">1583</span>      // We have reached the max. Means the servers that we collected is still lowering the<a name="line.1583"></a>
+<span class="sourceLineNo">1584</span>      // availability<a name="line.1584"></a>
+<span class="sourceLineNo">1585</span>      for (ServerName unusedServer : servers) {<a name="line.1585"></a>
+<span class="sourceLineNo">1586</span>        if (!usedSNs.contains(unusedServer)) {<a name="line.1586"></a>
+<span class="sourceLineNo">1587</span>          // check if any other unused server is there for us to use.<a name="line.1587"></a>
+<span class="sourceLineNo">1588</span>          // If so use it. Else we have not other go but to go with one of them<a name="line.1588"></a>
+<span class="sourceLineNo">1589</span>          if (!cluster.wouldLowerAvailability(regionInfo, unusedServer)) {<a name="line.1589"></a>
+<span class="sourceLineNo">1590</span>            sn = unusedServer;<a name="line.1590"></a>
+<span class="sourceLineNo">1591</span>            break;<a name="line.1591"></a>
+<span class="sourceLineNo">1592</span>          }<a name="line.1592"></a>
+<span class="sourceLineNo">1593</span>        }<a name="line.1593"></a>
+<span class="sourceLineNo">1594</span>      }<a name="line.1594"></a>
+<span class="sourceLineNo">1595</span>    }<a name="line.1595"></a>
+<span class="sourceLineNo">1596</span>    cluster.doAssignRegion(regionInfo, sn);<a name="line.1596"></a>
+<span class="sourceLineNo">1597</span>    return sn;<a name="line.1597"></a>
+<span class="sourceLineNo">1598</span>  }<a name="line.1598"></a>
 <span class="sourceLineNo">1599</span><a name="line.1599"></a>
-<span class="sourceLineNo">1600</span>    int numServers = servers.size();<a name="line.1600"></a>
-<span class="sourceLineNo">1601</span>    int numRegions = regions.size();<a name="line.1601"></a>
-<span class="sourceLineNo">1602</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1602"></a>
-<span class="sourceLineNo">1603</span>    int serverIdx = 0;<a name="line.1603"></a>
-<span class="sourceLineNo">1604</span>    if (numServers &gt; 1) {<a name="line.1604"></a>
-<span class="sourceLineNo">1605</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1605"></a>
-<span class="sourceLineNo">1606</span>    }<a name="line.1606"></a>
-<span class="sourceLineNo">1607</span>    int regionIdx = 0;<a name="line.1607"></a>
-<span class="sourceLineNo">1608</span><a name="line.1608"></a>
-<span class="sourceLineNo">1609</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1609"></a>
-<span class="sourceLineNo">1610</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1610"></a>
-<span class="sourceLineNo">1611</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1612"></a>
-<span class="sourceLineNo">1613</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1613"></a>
-<span class="sourceLineNo">1614</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1614"></a>
-<span class="sourceLineNo">1615</span>          unassignedRegions.add(region);<a name="line.1615"></a>
-<span class="sourceLineNo">1616</span>        } else {<a name="line.1616"></a>
-<span class="sourceLineNo">1617</span>          serverRegions.add(region);<a name="line.1617"></a>
-<span class="sourceLineNo">1618</span>          cluster.doAssignRegion(region, server);<a name="line.1618"></a>
-<span class="sourceLineNo">1619</span>        }<a name="line.1619"></a>
-<span class="sourceLineNo">1620</span>      }<a name="line.1620"></a>
-<span class="sourceLineNo">1621</span>      assignments.put(server, serverRegions);<a name="line.1621"></a>
-<span class="sourceLineNo">1622</span>      regionIdx++;<a name="line.1622"></a>
-<span class="sourceLineNo">1623</span>    }<a name="line.1623"></a>
-<span class="sourceLineNo">1624</span>  }<a name="line.1624"></a>
-<span class="sourceLineNo">1625</span><a name="line.1625"></a>
-<span class="sourceLineNo">1626</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1628"></a>
-<span class="sourceLineNo">1629</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1629"></a>
-<span class="sourceLineNo">1630</span>    } else {<a name="line.1630"></a>
-<span class="sourceLineNo">1631</span>      return new HashMap&lt;&gt;();<a name="line.1631"></a>
-<span class="sourceLineNo">1632</span>    }<a name="line.1632"></a>
-<span class="sourceLineNo">1633</span>  }<a name="line.1633"></a>
-<span class="sourceLineNo">1634</span><a name="line.1634"></a>
-<span class="sourceLineNo">1635</span>  @Override<a name="line.1635"></a>
-<span class="sourceLineNo">1636</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1636"></a>
-<span class="sourceLineNo">1637</span>  }<a name="line.1637"></a>
-<span class="sourceLineNo">1638</span>}<a name="line.1638"></a>
+<span class="sourceLineNo">1600</span>  /**<a name="line.1600"></a>
+<span class="sourceLineNo">1601</span>   * Round robin a list of regions to a list of servers<a name="line.1601"></a>
+<span class="sourceLineNo">1602</span>   */<a name="line.1602"></a>
+<span class="sourceLineNo">1603</span>  private void roundRobinAssignment(Cluster cluster, List&lt;RegionInfo&gt; regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span>      List&lt;RegionInfo&gt; unassignedRegions, List&lt;ServerName&gt; servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span>      Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; assignments) {<a name="line.1605"></a>
+<span class="sourceLineNo">1606</span><a name="line.1606"></a>
+<span class="sourceLineNo">1607</span>    int numServers = servers.size();<a name="line.1607"></a>
+<span class="sourceLineNo">1608</span>    int numRegions = regions.size();<a name="line.1608"></a>
+<span class="sourceLineNo">1609</span>    int max = (int) Math.ceil((float) numRegions / numServers);<a name="line.1609"></a>
+<span class="sourceLineNo">1610</span>    int serverIdx = 0;<a name="line.1610"></a>
+<span class="sourceLineNo">1611</span>    if (numServers &gt; 1) {<a name="line.1611"></a>
+<span class="sourceLineNo">1612</span>      serverIdx = RANDOM.nextInt(numServers);<a name="line.1612"></a>
+<span class="sourceLineNo">1613</span>    }<a name="line.1613"></a>
+<span class="sourceLineNo">1614</span>    int regionIdx = 0;<a name="line.1614"></a>
+<span class="sourceLineNo">1615</span><a name="line.1615"></a>
+<span class="sourceLineNo">1616</span>    for (int j = 0; j &lt; numServers; j++) {<a name="line.1616"></a>
+<span class="sourceLineNo">1617</span>      ServerName server = servers.get((j + serverIdx) % numServers);<a name="line.1617"></a>
+<span class="sourceLineNo">1618</span>      List&lt;RegionInfo&gt; serverRegions = new ArrayList&lt;&gt;(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span>      for (int i = regionIdx; i &lt; numRegions; i += numServers) {<a name="line.1619"></a>
+<span class="sourceLineNo">1620</span>        RegionInfo region = regions.get(i % numRegions);<a name="line.1620"></a>
+<span class="sourceLineNo">1621</span>        if (cluster.wouldLowerAvailability(region, server)) {<a name="line.1621"></a>
+<span class="sourceLineNo">1622</span>          unassignedRegions.add(region);<a name="line.1622"></a>
+<span class="sourceLineNo">1623</span>        } else {<a name="line.1623"></a>
+<span class="sourceLineNo">1624</span>          serverRegions.add(region);<a name="line.1624"></a>
+<span class="sourceLineNo">1625</span>          cluster.doAssignRegion(region, server);<a name="line.1625"></a>
+<span class="sourceLineNo">1626</span>        }<a name="line.1626"></a>
+<span class="sourceLineNo">1627</span>      }<a name="line.1627"></a>
+<span class="sourceLineNo">1628</span>      assignments.put(server, serverRegions);<a name="line.1628"></a>
+<span class="sourceLineNo">1629</span>      regionIdx++;<a name="line.1629"></a>
+<span class="sourceLineNo">1630</span>    }<a name="line.1630"></a>
+<span class="sourceLineNo">1631</span>  }<a name="line.1631"></a>
+<span class="sourceLineNo">1632</span><a name="line.1632"></a>
+<span class="sourceLineNo">1633</span>  protected Map&lt;ServerName, List&lt;RegionInfo&gt;&gt; getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span>    Collection&lt;RegionInfo&gt; regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span>    if (this.services != null &amp;&amp; this.services.getAssignmentManager() != null) {<a name="line.1635"></a>
+<span class="sourceLineNo">1636</span>      return this.services.getAssignmentManager().getSnapShotOfAssignment(regions);<a name="line.1636"></a>
+<span class="sourceLineNo">1637</span>    } else {<a name="line.1637"></a>
+<span class="sourceLineNo">1638</span>      return new HashMap&lt;&gt;();<a name="line.1638"></a>
+<span class="sourceLineNo">1639</span>    }<a name="line.1639"></a>
+<span class="sourceLineNo">1640</span>  }<a name="line.1640"></a>
+<span class="sourceLineNo">1641</span><a name="line.1641"></a>
+<span class="sourceLineNo">1642</span>  @Override<a name="line.1642"></a>
+<span class="sourceLineNo">1643</span>  public void onConfigurationChange(Configuration conf) {<a name="line.1643"></a>
+<span class="sourceLineNo">1644</span>  }<a name="line.1644"></a>
+<span class="sourceLineNo">1645</span>}<a name="line.1645"></a>