You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by ra...@apache.org on 2012/04/19 20:05:31 UTC
svn commit: r1328057 - in /hbase/trunk/src:
main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
main/java/org/apache/hadoop/hbase/master/HMaster.java
test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
Author: ramkrishna
Date: Thu Apr 19 18:05:31 2012
New Revision: 1328057
URL: http://svn.apache.org/viewvc?rev=1328057&view=rev
Log:
HBASE-5737 Minor Improvements related to balancer. (Ram)
Modified:
hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java?rev=1328057&r1=1328056&r2=1328057&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/AssignmentManager.java Thu Apr 19 18:05:31 2012
@@ -199,7 +199,8 @@ public class AssignmentManager extends Z
* @throws IOException
*/
public AssignmentManager(Server master, ServerManager serverManager,
- CatalogTracker catalogTracker, final ExecutorService service, MasterMetrics metrics)
+ CatalogTracker catalogTracker, final LoadBalancer balancer,
+ final ExecutorService service, MasterMetrics metrics)
throws KeeperException, IOException {
super(master.getZooKeeper());
this.master = master;
@@ -218,7 +219,7 @@ public class AssignmentManager extends Z
this.zkTable = new ZKTable(this.master.getZooKeeper());
this.maximumAssignmentAttempts =
this.master.getConfiguration().getInt("hbase.assignment.maximum.attempts", 10);
- this.balancer = LoadBalancerFactory.getLoadBalancer(conf);
+ this.balancer = balancer;
this.threadPoolExecutorService = Executors.newCachedThreadPool();
this.masterMetrics = metrics;// can be null only with tests.
}
@@ -1820,8 +1821,7 @@ public class AssignmentManager extends Z
if (servers.isEmpty()) return null;
- RegionPlan randomPlan = new RegionPlan(state.getRegion(), null,
- balancer.randomAssignment(state.getRegion(), servers));
+ RegionPlan randomPlan = null;
boolean newPlan = false;
RegionPlan existingPlan = null;
@@ -1839,6 +1839,8 @@ public class AssignmentManager extends Z
|| existingPlan.getDestination() == null
|| drainingServers.contains(existingPlan.getDestination())) {
newPlan = true;
+ randomPlan = new RegionPlan(state.getRegion(), null,
+ balancer.randomAssignment(state.getRegion(), servers));
this.regionPlans.put(encodedName, randomPlan);
}
}
@@ -2989,6 +2991,7 @@ public class AssignmentManager extends Z
public boolean isCarryingMeta(ServerName serverName) {
return isCarryingRegion(serverName, HRegionInfo.FIRST_META_REGIONINFO);
}
+
/**
* Check if the shutdown server carries the specific region.
* We have a bunch of places that store region location
Modified: hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java?rev=1328057&r1=1328056&r2=1328057&view=diff
==============================================================================
--- hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (original)
+++ hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java Thu Apr 19 18:05:31 2012
@@ -426,9 +426,9 @@ Server {
this, conf.getInt("hbase.master.catalog.timeout", Integer.MAX_VALUE));
this.catalogTracker.start();
- this.assignmentManager = new AssignmentManager(this, serverManager,
- this.catalogTracker, this.executorService, this.metrics);
this.balancer = LoadBalancerFactory.getLoadBalancer(conf);
+ this.assignmentManager = new AssignmentManager(this, serverManager,
+ this.catalogTracker, this.balancer, this.executorService, this.metrics);
zooKeeper.registerListenerFirst(assignmentManager);
this.regionServerTracker = new RegionServerTracker(zooKeeper, this,
@@ -585,12 +585,12 @@ Server {
org.apache.hadoop.hbase.catalog.MetaMigrationRemovingHTD.
updateMetaWithNewHRI(this);
+ this.balancer.setMasterServices(this);
// Fixup assignment manager status
status.setStatus("Starting assignment manager");
this.assignmentManager.joinCluster(onlineServers);
this.balancer.setClusterStatus(getClusterStatus());
- this.balancer.setMasterServices(this);
// Fixing up missing daughters if any
status.setStatus("Fixing up missing daughters");
Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java?rev=1328057&r1=1328056&r2=1328057&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/master/TestAssignmentManager.java Thu Apr 19 18:05:31 2012
@@ -316,9 +316,11 @@ public class TestAssignmentManager {
// We need a mocked catalog tracker.
CatalogTracker ct = Mockito.mock(CatalogTracker.class);
+ LoadBalancer balancer = LoadBalancerFactory.getLoadBalancer(server
+ .getConfiguration());
// Create an AM.
- AssignmentManager am =
- new AssignmentManager(this.server, this.serverManager, ct, executor, null);
+ AssignmentManager am = new AssignmentManager(this.server,
+ this.serverManager, ct, balancer, executor, null);
try {
// Make sure our new AM gets callbacks; once registered, can't unregister.
// Thats ok because we make a new zk watcher for each test.
@@ -382,9 +384,11 @@ public class TestAssignmentManager {
// We need a mocked catalog tracker.
CatalogTracker ct = Mockito.mock(CatalogTracker.class);
+ LoadBalancer balancer = LoadBalancerFactory.getLoadBalancer(server
+ .getConfiguration());
// Create an AM.
- AssignmentManager am =
- new AssignmentManager(this.server, this.serverManager, ct, executor, null);
+ AssignmentManager am = new AssignmentManager(this.server,
+ this.serverManager, ct, balancer, executor, null);
try {
// Make sure our new AM gets callbacks; once registered, can't unregister.
// Thats ok because we make a new zk watcher for each test.
@@ -457,9 +461,11 @@ public class TestAssignmentManager {
Mockito.when(this.serverManager.sendRegionClose(SERVERNAME_A, hri, -1)).thenReturn(true);
// Need a mocked catalog tracker.
CatalogTracker ct = Mockito.mock(CatalogTracker.class);
+ LoadBalancer balancer = LoadBalancerFactory.getLoadBalancer(server
+ .getConfiguration());
// Create an AM.
- AssignmentManager am =
- new AssignmentManager(this.server, this.serverManager, ct, null, null);
+ AssignmentManager am = new AssignmentManager(this.server,
+ this.serverManager, ct, balancer, null, null);
try {
// First make sure my mock up basically works. Unassign a region.
unassign(am, SERVERNAME_A, hri);
@@ -607,8 +613,10 @@ public class TestAssignmentManager {
Mockito.when(ct.getConnection()).thenReturn(connection);
// Create and startup an executor. Used by AM handling zk callbacks.
ExecutorService executor = startupMasterExecutor("mockedAMExecutor");
- AssignmentManagerWithExtrasForTesting am =
- new AssignmentManagerWithExtrasForTesting(server, manager, ct, executor);
+ LoadBalancer balancer = LoadBalancerFactory.getLoadBalancer(server
+ .getConfiguration());
+ AssignmentManagerWithExtrasForTesting am = new AssignmentManagerWithExtrasForTesting(
+ server, manager, ct, balancer, executor);
return am;
}
@@ -624,10 +632,10 @@ public class TestAssignmentManager {
AtomicBoolean gate = new AtomicBoolean(true);
public AssignmentManagerWithExtrasForTesting(final Server master,
- final ServerManager serverManager,
- final CatalogTracker catalogTracker, final ExecutorService service)
+ final ServerManager serverManager, final CatalogTracker catalogTracker,
+ final LoadBalancer balancer, final ExecutorService service)
throws KeeperException, IOException {
- super(master, serverManager, catalogTracker, service, null);
+ super(master, serverManager, catalogTracker, balancer, service, null);
this.es = service;
this.ct = catalogTracker;
}