You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ap...@apache.org on 2018/05/24 23:26:20 UTC
[1/6] hbase git commit: HBASE-20548 Master fails to startup on large
clusters, refreshing block distribution
Repository: hbase
Updated Branches:
refs/heads/branch-1 416f28356 -> b892be744
refs/heads/branch-1.3 f6d8a29a3 -> b62d12ffc
refs/heads/branch-1.4 f3accdcfc -> 0e21e9bcb
refs/heads/branch-2 db8789ab2 -> d1cbd561d
refs/heads/branch-2.0 e3deb9156 -> 16f8aac60
refs/heads/master 554d513f5 -> 1fbce10ff
HBASE-20548 Master fails to startup on large clusters, refreshing block distribution
Signed-off-by: Andrew Purtell <ap...@apache.org>
Conflicts:
hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b62d12ff
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b62d12ff
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b62d12ff
Branch: refs/heads/branch-1.3
Commit: b62d12ffcb5a70ed60c577abe8722153a642d01f
Parents: f6d8a29
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Tue May 22 18:28:31 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu May 24 12:26:41 2018 -0700
----------------------------------------------------------------------
.../org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++
.../hadoop/hbase/master/LoadBalancer.java | 5 ++++
.../hbase/master/balancer/BaseLoadBalancer.java | 26 +++++++++++++-------
3 files changed, 33 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/b62d12ff/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 54a0b74..29acb26 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -894,6 +894,17 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
}
zombieDetector.interrupt();
+
+ /*
+ * After master has started up, lets do balancer post startup initialization. Since this runs
+ * in activeMasterManager thread, it should be fine.
+ */
+ long start = System.currentTimeMillis();
+ this.balancer.postMasterStartupInitialize();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Balancer post startup initialization complete, took " + (
+ (System.currentTimeMillis() - start) / 1000) + " seconds");
+ }
}
private void initQuotaManager() throws IOException {
http://git-wip-us.apache.org/repos/asf/hbase/blob/b62d12ff/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index c581b08..1642af1 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -149,4 +149,9 @@ public interface LoadBalancer extends Configurable, Stoppable, ConfigurationObse
* @param conf
*/
void onConfigurationChange(Configuration conf);
+
+ /**
+ * If balancer needs to do initialization after Master has started up, lets do that here.
+ */
+ void postMasterStartupInitialize();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b62d12ff/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 3e00080..e68c925 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1126,6 +1126,19 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
this.regionFinder.setServices(masterServices);
}
+ @Override
+ public void postMasterStartupInitialize() {
+ if (services != null && regionFinder != null) {
+ try {
+ Set<HRegionInfo> regions =
+ services.getAssignmentManager().getRegionStates().getRegionAssignments().keySet();
+ regionFinder.refreshAndWait(regions);
+ } catch (Exception e) {
+ LOG.warn("Refreshing region HDFS Block dist failed with exception, ignoring", e);
+ }
+ }
+ }
+
public void setRackManager(RackManager rackManager) {
this.rackManager = rackManager;
}
@@ -1226,7 +1239,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
List<HRegionInfo> unassignedRegions = new ArrayList<HRegionInfo>();
roundRobinAssignment(cluster, regions, unassignedRegions,
@@ -1272,11 +1285,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- protected Cluster createCluster(List<ServerName> servers,
- Collection<HRegionInfo> regions, boolean forceRefresh) {
- if (forceRefresh) {
- regionFinder.refreshAndWait(regions);
- }
+ protected Cluster createCluster(List<ServerName> servers, Collection<HRegionInfo> regions) {
// Get the snapshot of the current assignments for the regions in question, and then create
// a cluster out of it. Note that we might have replicas already assigned to some servers
// earlier. So we want to get the snapshot to see those assignments, but this will only contain
@@ -1350,7 +1359,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
List<HRegionInfo> regions = Lists.newArrayList(regionInfo);
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
return randomAssignment(cluster, regionInfo, servers);
}
@@ -1428,8 +1437,6 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
int numRandomAssignments = 0;
int numRetainedAssigments = 0;
- Cluster cluster = createCluster(servers, regions.keySet(), true);
-
for (Map.Entry<HRegionInfo, ServerName> entry : regions.entrySet()) {
HRegionInfo region = entry.getKey();
ServerName oldServerName = entry.getValue();
@@ -1472,6 +1479,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
// If servers from prior assignment aren't present, then lets do randomAssignment on regions.
if (randomAssignRegions.size() > 0) {
+ Cluster cluster = createCluster(servers, regions.keySet());
for (Map.Entry<ServerName, List<HRegionInfo>> entry : assignments.entrySet()) {
ServerName sn = entry.getKey();
for (HRegionInfo region : entry.getValue()) {
[3/6] hbase git commit: HBASE-20548 Master fails to startup on large
clusters, refreshing block distribution
Posted by ap...@apache.org.
HBASE-20548 Master fails to startup on large clusters, refreshing block distribution
Signed-off-by: Andrew Purtell <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/0e21e9bc
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/0e21e9bc
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/0e21e9bc
Branch: refs/heads/branch-1.4
Commit: 0e21e9bcb3a609689998c36602d6f5965d1bf931
Parents: f3accdc
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Tue May 22 18:28:31 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu May 24 12:27:23 2018 -0700
----------------------------------------------------------------------
.../hbase/rsgroup/RSGroupBasedLoadBalancer.java | 5 ++++
.../org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++
.../hadoop/hbase/master/LoadBalancer.java | 5 ++++
.../hbase/master/balancer/BaseLoadBalancer.java | 26 +++++++++++++-------
4 files changed, 38 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/0e21e9bc/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index ebae030..77adf0d 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -455,4 +455,9 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer, LoadBalanc
public boolean isStopped() {
return false;
}
+
+ @Override
+ public void postMasterStartupInitialize() {
+ this.internalBalancer.postMasterStartupInitialize();
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/0e21e9bc/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 80bda8d..59e4437 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -932,6 +932,17 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
}
zombieDetector.interrupt();
+
+ /*
+ * After master has started up, lets do balancer post startup initialization. Since this runs
+ * in activeMasterManager thread, it should be fine.
+ */
+ long start = System.currentTimeMillis();
+ this.balancer.postMasterStartupInitialize();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Balancer post startup initialization complete, took " + (
+ (System.currentTimeMillis() - start) / 1000) + " seconds");
+ }
}
private void initQuotaManager() throws IOException {
http://git-wip-us.apache.org/repos/asf/hbase/blob/0e21e9bc/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index e387f59..8531ff7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -152,4 +152,9 @@ public interface LoadBalancer extends Configurable, Stoppable, ConfigurationObse
*/
@Override
void onConfigurationChange(Configuration conf);
+
+ /**
+ * If balancer needs to do initialization after Master has started up, lets do that here.
+ */
+ void postMasterStartupInitialize();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/0e21e9bc/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 41cbeaa..01df8a2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1267,6 +1267,19 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
}
+ @Override
+ public void postMasterStartupInitialize() {
+ if (services != null && regionFinder != null) {
+ try {
+ Set<HRegionInfo> regions =
+ services.getAssignmentManager().getRegionStates().getRegionAssignments().keySet();
+ regionFinder.refreshAndWait(regions);
+ } catch (Exception e) {
+ LOG.warn("Refreshing region HDFS Block dist failed with exception, ignoring", e);
+ }
+ }
+ }
+
public void setRackManager(RackManager rackManager) {
this.rackManager = rackManager;
}
@@ -1367,7 +1380,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
List<HRegionInfo> unassignedRegions = new ArrayList<HRegionInfo>();
roundRobinAssignment(cluster, regions, unassignedRegions,
@@ -1413,11 +1426,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- protected Cluster createCluster(List<ServerName> servers,
- Collection<HRegionInfo> regions, boolean forceRefresh) {
- if (forceRefresh && useRegionFinder) {
- regionFinder.refreshAndWait(regions);
- }
+ protected Cluster createCluster(List<ServerName> servers, Collection<HRegionInfo> regions) {
// Get the snapshot of the current assignments for the regions in question, and then create
// a cluster out of it. Note that we might have replicas already assigned to some servers
// earlier. So we want to get the snapshot to see those assignments, but this will only contain
@@ -1491,7 +1500,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
List<HRegionInfo> regions = Lists.newArrayList(regionInfo);
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
return randomAssignment(cluster, regionInfo, servers);
}
@@ -1569,8 +1578,6 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
int numRandomAssignments = 0;
int numRetainedAssigments = 0;
- Cluster cluster = createCluster(servers, regions.keySet(), true);
-
for (Map.Entry<HRegionInfo, ServerName> entry : regions.entrySet()) {
HRegionInfo region = entry.getKey();
ServerName oldServerName = entry.getValue();
@@ -1613,6 +1620,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
// If servers from prior assignment aren't present, then lets do randomAssignment on regions.
if (randomAssignRegions.size() > 0) {
+ Cluster cluster = createCluster(servers, regions.keySet());
for (Map.Entry<ServerName, List<HRegionInfo>> entry : assignments.entrySet()) {
ServerName sn = entry.getKey();
for (HRegionInfo region : entry.getValue()) {
[2/6] hbase git commit: HBASE-20548 Master fails to startup on large
clusters, refreshing block distribution
Posted by ap...@apache.org.
HBASE-20548 Master fails to startup on large clusters, refreshing block distribution
Signed-off-by: Andrew Purtell <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/b892be74
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b892be74
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b892be74
Branch: refs/heads/branch-1
Commit: b892be7440afde8da8a2db8fe3053af3ba4daedf
Parents: 416f283
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Tue May 22 18:28:31 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu May 24 12:27:19 2018 -0700
----------------------------------------------------------------------
.../hbase/rsgroup/RSGroupBasedLoadBalancer.java | 5 ++++
.../org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++
.../hadoop/hbase/master/LoadBalancer.java | 5 ++++
.../hbase/master/balancer/BaseLoadBalancer.java | 26 +++++++++++++-------
4 files changed, 38 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/b892be74/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index ebae030..77adf0d 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -455,4 +455,9 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer, LoadBalanc
public boolean isStopped() {
return false;
}
+
+ @Override
+ public void postMasterStartupInitialize() {
+ this.internalBalancer.postMasterStartupInitialize();
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b892be74/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 85d5e23..a2b43e9 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -933,6 +933,17 @@ public class HMaster extends HRegionServer implements MasterServices, Server {
}
zombieDetector.interrupt();
+
+ /*
+ * After master has started up, lets do balancer post startup initialization. Since this runs
+ * in activeMasterManager thread, it should be fine.
+ */
+ long start = System.currentTimeMillis();
+ this.balancer.postMasterStartupInitialize();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Balancer post startup initialization complete, took " + (
+ (System.currentTimeMillis() - start) / 1000) + " seconds");
+ }
}
private void initQuotaManager() throws IOException {
http://git-wip-us.apache.org/repos/asf/hbase/blob/b892be74/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index e387f59..8531ff7 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -152,4 +152,9 @@ public interface LoadBalancer extends Configurable, Stoppable, ConfigurationObse
*/
@Override
void onConfigurationChange(Configuration conf);
+
+ /**
+ * If balancer needs to do initialization after Master has started up, lets do that here.
+ */
+ void postMasterStartupInitialize();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/b892be74/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 41cbeaa..01df8a2 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1267,6 +1267,19 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
}
+ @Override
+ public void postMasterStartupInitialize() {
+ if (services != null && regionFinder != null) {
+ try {
+ Set<HRegionInfo> regions =
+ services.getAssignmentManager().getRegionStates().getRegionAssignments().keySet();
+ regionFinder.refreshAndWait(regions);
+ } catch (Exception e) {
+ LOG.warn("Refreshing region HDFS Block dist failed with exception, ignoring", e);
+ }
+ }
+ }
+
public void setRackManager(RackManager rackManager) {
this.rackManager = rackManager;
}
@@ -1367,7 +1380,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
List<HRegionInfo> unassignedRegions = new ArrayList<HRegionInfo>();
roundRobinAssignment(cluster, regions, unassignedRegions,
@@ -1413,11 +1426,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- protected Cluster createCluster(List<ServerName> servers,
- Collection<HRegionInfo> regions, boolean forceRefresh) {
- if (forceRefresh && useRegionFinder) {
- regionFinder.refreshAndWait(regions);
- }
+ protected Cluster createCluster(List<ServerName> servers, Collection<HRegionInfo> regions) {
// Get the snapshot of the current assignments for the regions in question, and then create
// a cluster out of it. Note that we might have replicas already assigned to some servers
// earlier. So we want to get the snapshot to see those assignments, but this will only contain
@@ -1491,7 +1500,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
List<HRegionInfo> regions = Lists.newArrayList(regionInfo);
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
return randomAssignment(cluster, regionInfo, servers);
}
@@ -1569,8 +1578,6 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
int numRandomAssignments = 0;
int numRetainedAssigments = 0;
- Cluster cluster = createCluster(servers, regions.keySet(), true);
-
for (Map.Entry<HRegionInfo, ServerName> entry : regions.entrySet()) {
HRegionInfo region = entry.getKey();
ServerName oldServerName = entry.getValue();
@@ -1613,6 +1620,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
// If servers from prior assignment aren't present, then lets do randomAssignment on regions.
if (randomAssignRegions.size() > 0) {
+ Cluster cluster = createCluster(servers, regions.keySet());
for (Map.Entry<ServerName, List<HRegionInfo>> entry : assignments.entrySet()) {
ServerName sn = entry.getKey();
for (HRegionInfo region : entry.getValue()) {
[5/6] hbase git commit: HBASE-20548 Master fails to startup on large
clusters, refreshing block distribution
Posted by ap...@apache.org.
HBASE-20548 Master fails to startup on large clusters, refreshing block distribution
Signed-off-by: Andrew Purtell <ap...@apache.org>
Conflicts:
hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/16f8aac6
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/16f8aac6
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/16f8aac6
Branch: refs/heads/branch-2.0
Commit: 16f8aac60d6365376572225ebf61f92927f04fc8
Parents: e3deb91
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Thu May 24 01:01:54 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu May 24 15:47:23 2018 -0700
----------------------------------------------------------------------
.../hbase/rsgroup/RSGroupBasedLoadBalancer.java | 5 ++++
.../org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++
.../hadoop/hbase/master/LoadBalancer.java | 5 ++++
.../hbase/master/balancer/BaseLoadBalancer.java | 25 +++++++++++++-------
4 files changed, 38 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/16f8aac6/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index 9c02bc6..a6a57e7 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -462,4 +462,9 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer {
public void setRsGroupInfoManager(RSGroupInfoManager rsGroupInfoManager) {
this.rsGroupInfoManager = rsGroupInfoManager;
}
+
+ @Override
+ public void postMasterStartupInitialize() {
+ this.internalBalancer.postMasterStartupInitialize();
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/16f8aac6/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index f3871e0..d29ac70 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -971,6 +971,17 @@ public class HMaster extends HRegionServer implements MasterServices {
}
zombieDetector.interrupt();
+
+ /*
+ * After master has started up, lets do balancer post startup initialization. Since this runs
+ * in activeMasterManager thread, it should be fine.
+ */
+ long start = System.currentTimeMillis();
+ this.balancer.postMasterStartupInitialize();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Balancer post startup initialization complete, took " + (
+ (System.currentTimeMillis() - start) / 1000) + " seconds");
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/16f8aac6/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index 917da08..aa88f49 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -160,6 +160,11 @@ public interface LoadBalancer extends Configurable, Stoppable, ConfigurationObse
void onConfigurationChange(Configuration conf);
/**
+ * If balancer needs to do initialization after Master has started up, lets do that here.
+ */
+ void postMasterStartupInitialize();
+
+ /**
* @return true if Master carries regions
*/
static boolean isTablesOnMaster(Configuration conf) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/16f8aac6/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 08e1ab1..98c3843 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1151,6 +1151,19 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
}
+ @Override
+ public void postMasterStartupInitialize() {
+ if (services != null && regionFinder != null) {
+ try {
+ Set<RegionInfo> regions =
+ services.getAssignmentManager().getRegionStates().getRegionAssignments().keySet();
+ regionFinder.refreshAndWait(regions);
+ } catch (Exception e) {
+ LOG.warn("Refreshing region HDFS Block dist failed with exception, ignoring", e);
+ }
+ }
+ }
+
public void setRackManager(RackManager rackManager) {
this.rackManager = rackManager;
}
@@ -1249,7 +1262,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
List<RegionInfo> unassignedRegions = new ArrayList<>();
roundRobinAssignment(cluster, regions, unassignedRegions,
@@ -1288,11 +1301,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- protected Cluster createCluster(List<ServerName> servers,
- Collection<RegionInfo> regions, boolean forceRefresh) {
- if (forceRefresh && useRegionFinder) {
- regionFinder.refreshAndWait(regions);
- }
+ protected Cluster createCluster(List<ServerName> servers, Collection<RegionInfo> regions) {
// Get the snapshot of the current assignments for the regions in question, and then create
// a cluster out of it. Note that we might have replicas already assigned to some servers
// earlier. So we want to get the snapshot to see those assignments, but this will only contain
@@ -1346,7 +1355,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
final List<ServerName> finalServers = idleServers.isEmpty() ?
servers : idleServers;
List<RegionInfo> regions = Lists.newArrayList(regionInfo);
- Cluster cluster = createCluster(finalServers, regions, false);
+ Cluster cluster = createCluster(finalServers, regions);
return randomAssignment(cluster, regionInfo, finalServers);
}
@@ -1416,7 +1425,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
int numRandomAssignments = 0;
int numRetainedAssigments = 0;
- Cluster cluster = createCluster(servers, regions.keySet(), true);
+ Cluster cluster = createCluster(servers, regions.keySet());
for (Map.Entry<RegionInfo, ServerName> entry : regions.entrySet()) {
RegionInfo region = entry.getKey();
[6/6] hbase git commit: HBASE-20548 Master fails to startup on large
clusters, refreshing block distribution
Posted by ap...@apache.org.
HBASE-20548 Master fails to startup on large clusters, refreshing block distribution
Signed-off-by: Andrew Purtell <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/1fbce10f
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/1fbce10f
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/1fbce10f
Branch: refs/heads/master
Commit: 1fbce10ff45571633755eb27605fae880dc23a6f
Parents: 554d513
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Thu May 24 01:01:54 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu May 24 15:47:24 2018 -0700
----------------------------------------------------------------------
.../hbase/rsgroup/RSGroupBasedLoadBalancer.java | 5 ++++
.../org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++
.../hadoop/hbase/master/LoadBalancer.java | 5 ++++
.../hbase/master/balancer/BaseLoadBalancer.java | 26 +++++++++++++-------
4 files changed, 38 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/1fbce10f/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index 69131f9..059f07e 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -466,4 +466,9 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer {
public void setRsGroupInfoManager(RSGroupInfoManager rsGroupInfoManager) {
this.rsGroupInfoManager = rsGroupInfoManager;
}
+
+ @Override
+ public void postMasterStartupInitialize() {
+ this.internalBalancer.postMasterStartupInitialize();
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/1fbce10f/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index 6c41b8e..68b3ce8 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -1003,6 +1003,17 @@ public class HMaster extends HRegionServer implements MasterServices {
}
zombieDetector.interrupt();
+
+ /*
+ * After master has started up, lets do balancer post startup initialization. Since this runs
+ * in activeMasterManager thread, it should be fine.
+ */
+ long start = System.currentTimeMillis();
+ this.balancer.postMasterStartupInitialize();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Balancer post startup initialization complete, took " + (
+ (System.currentTimeMillis() - start) / 1000) + " seconds");
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/1fbce10f/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index 917da08..aa88f49 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -160,6 +160,11 @@ public interface LoadBalancer extends Configurable, Stoppable, ConfigurationObse
void onConfigurationChange(Configuration conf);
/**
+ * If balancer needs to do initialization after Master has started up, lets do that here.
+ */
+ void postMasterStartupInitialize();
+
+ /**
* @return true if Master carries regions
*/
static boolean isTablesOnMaster(Configuration conf) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/1fbce10f/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 5f597dd..f32930f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1151,6 +1151,19 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
}
+ @Override
+ public void postMasterStartupInitialize() {
+ if (services != null && regionFinder != null) {
+ try {
+ Set<RegionInfo> regions =
+ services.getAssignmentManager().getRegionStates().getRegionAssignments().keySet();
+ regionFinder.refreshAndWait(regions);
+ } catch (Exception e) {
+ LOG.warn("Refreshing region HDFS Block dist failed with exception, ignoring", e);
+ }
+ }
+ }
+
public void setRackManager(RackManager rackManager) {
this.rackManager = rackManager;
}
@@ -1249,7 +1262,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
List<RegionInfo> unassignedRegions = new ArrayList<>();
roundRobinAssignment(cluster, regions, unassignedRegions,
@@ -1288,11 +1301,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- protected Cluster createCluster(List<ServerName> servers,
- Collection<RegionInfo> regions, boolean forceRefresh) {
- if (forceRefresh && useRegionFinder) {
- regionFinder.refreshAndWait(regions);
- }
+ protected Cluster createCluster(List<ServerName> servers, Collection<RegionInfo> regions) {
// Get the snapshot of the current assignments for the regions in question, and then create
// a cluster out of it. Note that we might have replicas already assigned to some servers
// earlier. So we want to get the snapshot to see those assignments, but this will only contain
@@ -1346,7 +1355,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
final List<ServerName> finalServers = idleServers.isEmpty() ?
servers : idleServers;
List<RegionInfo> regions = Lists.newArrayList(regionInfo);
- Cluster cluster = createCluster(finalServers, regions, false);
+ Cluster cluster = createCluster(finalServers, regions);
return randomAssignment(cluster, regionInfo, finalServers);
}
@@ -1419,8 +1428,6 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
int numRandomAssignments = 0;
int numRetainedAssigments = 0;
- Cluster cluster = createCluster(servers, regions.keySet(), true);
-
for (Map.Entry<RegionInfo, ServerName> entry : regions.entrySet()) {
RegionInfo region = entry.getKey();
ServerName oldServerName = entry.getValue();
@@ -1463,6 +1470,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
// If servers from prior assignment aren't present, then lets do randomAssignment on regions.
if (randomAssignRegions.size() > 0) {
+ Cluster cluster = createCluster(servers, regions.keySet());
for (Map.Entry<ServerName, List<RegionInfo>> entry : assignments.entrySet()) {
ServerName sn = entry.getKey();
for (RegionInfo region : entry.getValue()) {
[4/6] hbase git commit: HBASE-20548 Master fails to startup on large
clusters, refreshing block distribution
Posted by ap...@apache.org.
HBASE-20548 Master fails to startup on large clusters, refreshing block distribution
Signed-off-by: Andrew Purtell <ap...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/d1cbd561
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/d1cbd561
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/d1cbd561
Branch: refs/heads/branch-2
Commit: d1cbd561dfda875acbc6cf5de96cd414d3fed90c
Parents: db8789a
Author: Thiruvel Thirumoolan <th...@oath.com>
Authored: Thu May 24 01:01:54 2018 -0700
Committer: Andrew Purtell <ap...@apache.org>
Committed: Thu May 24 15:47:22 2018 -0700
----------------------------------------------------------------------
.../hbase/rsgroup/RSGroupBasedLoadBalancer.java | 5 ++++
.../org/apache/hadoop/hbase/master/HMaster.java | 11 +++++++++
.../hadoop/hbase/master/LoadBalancer.java | 5 ++++
.../hbase/master/balancer/BaseLoadBalancer.java | 26 +++++++++++++-------
4 files changed, 38 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/d1cbd561/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
index 83286a9..700470b 100644
--- a/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
+++ b/hbase-rsgroup/src/main/java/org/apache/hadoop/hbase/rsgroup/RSGroupBasedLoadBalancer.java
@@ -468,4 +468,9 @@ public class RSGroupBasedLoadBalancer implements RSGroupableBalancer {
public void setRsGroupInfoManager(RSGroupInfoManager rsGroupInfoManager) {
this.rsGroupInfoManager = rsGroupInfoManager;
}
+
+ @Override
+ public void postMasterStartupInitialize() {
+ this.internalBalancer.postMasterStartupInitialize();
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/d1cbd561/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
index d0ecf23..d100ea4 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
@@ -1003,6 +1003,17 @@ public class HMaster extends HRegionServer implements MasterServices {
}
zombieDetector.interrupt();
+
+ /*
+ * After master has started up, lets do balancer post startup initialization. Since this runs
+ * in activeMasterManager thread, it should be fine.
+ */
+ long start = System.currentTimeMillis();
+ this.balancer.postMasterStartupInitialize();
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Balancer post startup initialization complete, took " + (
+ (System.currentTimeMillis() - start) / 1000) + " seconds");
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/hbase/blob/d1cbd561/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
index 917da08..aa88f49 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/LoadBalancer.java
@@ -160,6 +160,11 @@ public interface LoadBalancer extends Configurable, Stoppable, ConfigurationObse
void onConfigurationChange(Configuration conf);
/**
+ * If balancer needs to do initialization after Master has started up, lets do that here.
+ */
+ void postMasterStartupInitialize();
+
+ /**
* @return true if Master carries regions
*/
static boolean isTablesOnMaster(Configuration conf) {
http://git-wip-us.apache.org/repos/asf/hbase/blob/d1cbd561/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
index 5f597dd..f32930f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.java
@@ -1151,6 +1151,19 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
}
}
+ @Override
+ public void postMasterStartupInitialize() {
+ if (services != null && regionFinder != null) {
+ try {
+ Set<RegionInfo> regions =
+ services.getAssignmentManager().getRegionStates().getRegionAssignments().keySet();
+ regionFinder.refreshAndWait(regions);
+ } catch (Exception e) {
+ LOG.warn("Refreshing region HDFS Block dist failed with exception, ignoring", e);
+ }
+ }
+ }
+
public void setRackManager(RackManager rackManager) {
this.rackManager = rackManager;
}
@@ -1249,7 +1262,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- Cluster cluster = createCluster(servers, regions, false);
+ Cluster cluster = createCluster(servers, regions);
List<RegionInfo> unassignedRegions = new ArrayList<>();
roundRobinAssignment(cluster, regions, unassignedRegions,
@@ -1288,11 +1301,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
return assignments;
}
- protected Cluster createCluster(List<ServerName> servers,
- Collection<RegionInfo> regions, boolean forceRefresh) {
- if (forceRefresh && useRegionFinder) {
- regionFinder.refreshAndWait(regions);
- }
+ protected Cluster createCluster(List<ServerName> servers, Collection<RegionInfo> regions) {
// Get the snapshot of the current assignments for the regions in question, and then create
// a cluster out of it. Note that we might have replicas already assigned to some servers
// earlier. So we want to get the snapshot to see those assignments, but this will only contain
@@ -1346,7 +1355,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
final List<ServerName> finalServers = idleServers.isEmpty() ?
servers : idleServers;
List<RegionInfo> regions = Lists.newArrayList(regionInfo);
- Cluster cluster = createCluster(finalServers, regions, false);
+ Cluster cluster = createCluster(finalServers, regions);
return randomAssignment(cluster, regionInfo, finalServers);
}
@@ -1419,8 +1428,6 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
int numRandomAssignments = 0;
int numRetainedAssigments = 0;
- Cluster cluster = createCluster(servers, regions.keySet(), true);
-
for (Map.Entry<RegionInfo, ServerName> entry : regions.entrySet()) {
RegionInfo region = entry.getKey();
ServerName oldServerName = entry.getValue();
@@ -1463,6 +1470,7 @@ public abstract class BaseLoadBalancer implements LoadBalancer {
// If servers from prior assignment aren't present, then lets do randomAssignment on regions.
if (randomAssignRegions.size() > 0) {
+ Cluster cluster = createCluster(servers, regions.keySet());
for (Map.Entry<ServerName, List<RegionInfo>> entry : assignments.entrySet()) {
ServerName sn = entry.getKey();
for (RegionInfo region : entry.getValue()) {