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<ServerName> servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> if (iterations >= 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<RegionInfo> regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> Map<ServerName, List<RegionInfo>> 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<ServerName> servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> if (iterations >= 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Collection<RegionInfo> regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> if (this.services != null && 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<>();<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<RegionInfo> regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> Map<ServerName, List<RegionInfo>> 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span> Collection<RegionInfo> regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span> if (this.services != null && 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<>();<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<ServerName> servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> if (iterations >= 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<RegionInfo> regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> Map<ServerName, List<RegionInfo>> 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<ServerName> servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> if (iterations >= 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Collection<RegionInfo> regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> if (this.services != null && 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<>();<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<RegionInfo> regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> Map<ServerName, List<RegionInfo>> 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span> Collection<RegionInfo> regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span> if (this.services != null && 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<>();<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<ServerName> servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> if (iterations >= 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<RegionInfo> regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> Map<ServerName, List<RegionInfo>> 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<ServerName> servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> if (iterations >= 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Collection<RegionInfo> regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> if (this.services != null && 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<>();<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<RegionInfo> regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> Map<ServerName, List<RegionInfo>> 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span> Collection<RegionInfo> regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span> if (this.services != null && 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<>();<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<ServerName> servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> if (iterations >= 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<RegionInfo> regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> Map<ServerName, List<RegionInfo>> 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<ServerName> servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> if (iterations >= 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Collection<RegionInfo> regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> if (this.services != null && 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<>();<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<RegionInfo> regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> Map<ServerName, List<RegionInfo>> 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span> Collection<RegionInfo> regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span> if (this.services != null && 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<>();<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<ServerName> servers) {<a name="line.1561"></a>
-<span class="sourceLineNo">1562</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1574"></a>
-<span class="sourceLineNo">1575</span> if (iterations >= 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<RegionInfo> regions,<a name="line.1596"></a>
-<span class="sourceLineNo">1597</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1597"></a>
-<span class="sourceLineNo">1598</span> Map<ServerName, List<RegionInfo>> 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<ServerName> servers) {<a name="line.1568"></a>
+<span class="sourceLineNo">1569</span> int numServers = servers.size(); // servers is not null, numServers > 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<ServerName> usedSNs = new ArrayList<>(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> && iterations++ < maxIterations);<a name="line.1581"></a>
+<span class="sourceLineNo">1582</span> if (iterations >= 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1611"></a>
-<span class="sourceLineNo">1612</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1626"></a>
-<span class="sourceLineNo">1627</span> Collection<RegionInfo> regions) {<a name="line.1627"></a>
-<span class="sourceLineNo">1628</span> if (this.services != null && 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<>();<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<RegionInfo> regions,<a name="line.1603"></a>
+<span class="sourceLineNo">1604</span> List<RegionInfo> unassignedRegions, List<ServerName> servers,<a name="line.1604"></a>
+<span class="sourceLineNo">1605</span> Map<ServerName, List<RegionInfo>> 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 > 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 < 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<RegionInfo> serverRegions = new ArrayList<>(max);<a name="line.1618"></a>
+<span class="sourceLineNo">1619</span> for (int i = regionIdx; i < 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<ServerName, List<RegionInfo>> getRegionAssignmentsByServer(<a name="line.1633"></a>
+<span class="sourceLineNo">1634</span> Collection<RegionInfo> regions) {<a name="line.1634"></a>
+<span class="sourceLineNo">1635</span> if (this.services != null && 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<>();<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>