Index: hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java (revision 1421051) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java (working copy) @@ -42,6 +42,7 @@ import org.apache.hadoop.hbase.master.AssignmentManager; import org.apache.hadoop.hbase.master.HMaster; import org.apache.hadoop.hbase.master.MasterCoprocessorHost; +import org.apache.hadoop.hbase.master.RegionPlan; import org.apache.hadoop.hbase.master.RegionState; import org.apache.hadoop.hbase.protobuf.RequestConverter; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; @@ -434,8 +435,8 @@ } @Override - public void postBalance(ObserverContext env) - throws IOException { + public void postBalance(ObserverContext env, + List plans) throws IOException { postBalanceCalled = true; } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java (revision 1421051) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/security/access/AccessController.java (working copy) @@ -50,6 +50,7 @@ import org.apache.hadoop.hbase.ipc.HBaseRPC; import org.apache.hadoop.hbase.ipc.ProtocolSignature; import org.apache.hadoop.hbase.ipc.RequestContext; +import org.apache.hadoop.hbase.master.RegionPlan; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.ResponseConverter; import org.apache.hadoop.hbase.protobuf.generated.AccessControlProtos; @@ -727,7 +728,7 @@ requirePermission(Permission.Action.ADMIN); } @Override - public void postBalance(ObserverContext c) + public void postBalance(ObserverContext c, List plans) throws IOException {} @Override Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1421051) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -1332,7 +1332,7 @@ } } if (this.cpHost != null) { - this.cpHost.postBalance(); + this.cpHost.postBalance(rpCount < plans.size() ? plans.subList(0, rpCount) : plans); } } return balancerRan; Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java (revision 1421051) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java (working copy) @@ -27,6 +27,7 @@ import org.apache.hadoop.hbase.coprocessor.*; import java.io.IOException; +import java.util.List; /** * Provides the coprocessor framework and environment for master oriented @@ -827,13 +828,13 @@ return bypass; } - void postBalance() throws IOException { + void postBalance(List plans) throws IOException { ObserverContext ctx = null; for (MasterEnvironment env: coprocessors) { if (env.getInstance() instanceof MasterObserver) { ctx = ObserverContext.createAndPrepare(env, ctx); try { - ((MasterObserver)env.getInstance()).postBalance(ctx); + ((MasterObserver)env.getInstance()).postBalance(ctx, plans); } catch (Throwable e) { handleCoprocessorThrowable(env, e); } Index: hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java (revision 1421051) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionPlan.java (working copy) @@ -21,6 +21,7 @@ import java.util.Comparator; import org.apache.hadoop.classification.InterfaceAudience; +import org.apache.hadoop.classification.InterfaceStability; import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.ServerName; @@ -34,7 +35,8 @@ * The comparable implementation of this class compares only the region * information and not the source/dest server info. */ -@InterfaceAudience.Private +@InterfaceAudience.Public +@InterfaceStability.Evolving public class RegionPlan implements Comparable { private final HRegionInfo hri; private final ServerName source; Index: hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java (revision 1421051) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java (working copy) @@ -19,12 +19,18 @@ package org.apache.hadoop.hbase.coprocessor; +import java.io.IOException; +import java.util.List; + import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; -import org.apache.hadoop.hbase.*; +import org.apache.hadoop.hbase.Coprocessor; +import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HRegionInfo; +import org.apache.hadoop.hbase.HTableDescriptor; +import org.apache.hadoop.hbase.ServerName; +import org.apache.hadoop.hbase.master.RegionPlan; -import java.io.IOException; - /** * Defines coprocessor hooks for interacting with operations on the * {@link org.apache.hadoop.hbase.master.HMaster} process. @@ -444,8 +450,10 @@ /** * Called after the balancing plan has been submitted. * @param ctx the environment to interact with the framework and master + * @param plans the RegionPlans which master has executed. RegionPlan serves as hint + * as for the final destination for the underlying region */ - void postBalance(final ObserverContext ctx) + void postBalance(final ObserverContext ctx, List plans) throws IOException; /** Index: hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java =================================================================== --- hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java (revision 1421051) +++ hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java (working copy) @@ -27,8 +27,10 @@ import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.UnknownRegionException; +import org.apache.hadoop.hbase.master.RegionPlan; import java.io.IOException; +import java.util.List; @InterfaceAudience.Public @InterfaceStability.Evolving @@ -236,7 +238,7 @@ } @Override - public void postBalance(ObserverContext ctx) + public void postBalance(ObserverContext ctx, List plans) throws IOException { }