Index: src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/client/HBaseAdmin.java (working copy) @@ -54,6 +54,7 @@ import org.apache.hadoop.hbase.catalog.CatalogTracker; import org.apache.hadoop.hbase.catalog.MetaReader; import org.apache.hadoop.hbase.client.MetaScanner.MetaScannerVisitor; +import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.ipc.HMasterInterface; import org.apache.hadoop.hbase.ipc.HRegionInterface; import org.apache.hadoop.hbase.regionserver.wal.FailedLogCloseException; @@ -1303,16 +1304,32 @@ } /** - * @param regionName Region name to assign. - * @param force True to force assign. + * @param regionName + * Region name to assign. + * @param force + * True to force assign. * @throws MasterNotRunningException * @throws ZooKeeperConnectionException * @throws IOException + * @deprecated The force is unused.Use {@link #assign(byte[])} */ - public void assign(final byte [] regionName, final boolean force) - throws MasterNotRunningException, ZooKeeperConnectionException, IOException { + public void assign(final byte[] regionName, final boolean force) + throws MasterNotRunningException, ZooKeeperConnectionException, + IOException { getMaster().assign(regionName, force); } + + /** + * @param regionName + * Region name to assign. + * @throws MasterNotRunningException + * @throws ZooKeeperConnectionException + * @throws IOException + */ + public void assign(final byte[] regionName) throws MasterNotRunningException, + ZooKeeperConnectionException, IOException { + getMaster().assign(regionName); + } /** * Unassign a region from current hosting regionserver. Region will then be Index: src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/coprocessor/BaseMasterObserver.java (working copy) @@ -112,12 +112,12 @@ @Override public void preAssign(ObserverContext ctx, - HRegionInfo regionInfo, boolean force) throws IOException { + HRegionInfo regionInfo) throws IOException { } - + @Override public void postAssign(ObserverContext ctx, - HRegionInfo regionInfo, boolean force) throws IOException { + HRegionInfo regionInfo) throws IOException { } @Override Index: src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/coprocessor/MasterObserver.java (working copy) @@ -205,21 +205,18 @@ * Called prior to assigning a specific region. * @param ctx the environment to interact with the framework and master * @param regionInfo the regionInfo of the region - * @param force whether to force assignment or not */ void preAssign(final ObserverContext ctx, - final HRegionInfo regionInfo, final boolean force) - throws IOException; - + final HRegionInfo regionInfo) throws IOException; + /** * Called after the region assignment has been requested. * @param ctx the environment to interact with the framework and master * @param regionInfo the regionInfo of the region - * @param force whether to force assignment or not */ void postAssign(final ObserverContext ctx, - final HRegionInfo regionInfo, final boolean force) throws IOException; - + final HRegionInfo regionInfo) throws IOException; + /** * Called prior to unassigning a given region. * @param ctx the environment to interact with the framework and master Index: src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/ipc/HMasterInterface.java (working copy) @@ -24,11 +24,15 @@ import org.apache.hadoop.hbase.ClusterStatus; import org.apache.hadoop.hbase.HColumnDescriptor; +import org.apache.hadoop.hbase.HRegionInfo; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.UnknownRegionException; import org.apache.hadoop.hbase.util.Pair; +import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.ipc.VersionedProtocol; + + /** * Clients interact with the HMasterInterface to gain access to meta-level * HBase functionality, like finding an HRegionServer and creating/destroying @@ -180,11 +184,21 @@ * found. * @param force If true, will force the assignment. * @throws IOException + * @deprecated The force is unused.Use {@link #assign(byte[])} */ public void assign(final byte [] regionName, final boolean force) throws IOException; /** + * Assign a region to a server chosen at random. + * + * @param regionName + * Region to assign. Will use existing RegionPlan if one found. + * @throws IOException + */ + public void assign(final byte[] regionName) throws IOException; + + /** * Unassign a region from current hosting regionserver. Region will then be * assigned to a regionserver chosen at random. Region could be reassigned * back to the same server. Use {@link #move(byte[], byte[])} if you want Index: src/main/java/org/apache/hadoop/hbase/master/HMaster.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/HMaster.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/master/HMaster.java (working copy) @@ -1330,23 +1330,31 @@ public boolean isInitialized() { return initialized; } + + @Override + @Deprecated + public void assign(final byte[] regionName, final boolean force) + throws IOException { + assign(regionName); + } @Override - public void assign(final byte [] regionName, final boolean force) - throws IOException { + public void assign(final byte [] regionName)throws IOException { Pair pair = MetaReader.getRegion(this.catalogTracker, regionName); if (pair == null) throw new UnknownRegionException(Bytes.toString(regionName)); if (cpHost != null) { - if (cpHost.preAssign(pair.getFirst(), force)) { + if (cpHost.preAssign(pair.getFirst())) { return; } } assignRegion(pair.getFirst()); if (cpHost != null) { - cpHost.postAssign(pair.getFirst(), force); + cpHost.postAssign(pair.getFirst()); } } + + public void assignRegion(HRegionInfo hri) { assignmentManager.assign(hri, true); Index: src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/master/MasterCoprocessorHost.java (working copy) @@ -332,14 +332,13 @@ } } - boolean preAssign(final HRegionInfo regionInfo, final boolean force) - throws IOException { + boolean preAssign(final HRegionInfo regionInfo) throws IOException { boolean bypass = false; ObserverContext ctx = null; for (MasterEnvironment env: coprocessors) { if (env.getInstance() instanceof MasterObserver) { ctx = ObserverContext.createAndPrepare(env, ctx); - ((MasterObserver)env.getInstance()).preAssign(ctx, regionInfo, force); + ((MasterObserver) env.getInstance()).preAssign(ctx, regionInfo); bypass |= ctx.shouldBypass(); if (ctx.shouldComplete()) { break; @@ -349,12 +348,12 @@ return bypass; } - void postAssign(final HRegionInfo regionInfo, final boolean force) throws IOException { + void postAssign(final HRegionInfo regionInfo) throws IOException { ObserverContext ctx = null; for (MasterEnvironment env: coprocessors) { if (env.getInstance() instanceof MasterObserver) { ctx = ObserverContext.createAndPrepare(env, ctx); - ((MasterObserver)env.getInstance()).postAssign(ctx, regionInfo, force); + ((MasterObserver) env.getInstance()).postAssign(ctx, regionInfo); if (ctx.shouldComplete()) { break; } Index: src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java =================================================================== --- src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java (revision 1170946) +++ src/main/java/org/apache/hadoop/hbase/util/HBaseFsckRepair.java (working copy) @@ -80,7 +80,7 @@ private static void forceOfflineInZK(HBaseAdmin admin, final HRegionInfo region) throws ZooKeeperConnectionException, KeeperException, IOException { - admin.assign(region.getRegionName(), true); + admin.assign(region.getRegionName()); } private static void closeRegionSilentlyAndWait(Configuration conf, Index: src/main/ruby/hbase/admin.rb =================================================================== --- src/main/ruby/hbase/admin.rb (revision 1170946) +++ src/main/ruby/hbase/admin.rb (working copy) @@ -230,8 +230,8 @@ #---------------------------------------------------------------------------------------------- #---------------------------------------------------------------------------------------------- # Assign a region - def assign(region_name, force) - @admin.assign(region_name.to_java_bytes, java.lang.Boolean::valueOf(force)) + def assign(region_name) + @admin.assign(region_name.to_java_bytes) end #---------------------------------------------------------------------------------------------- Index: src/main/ruby/shell/commands/assign.rb =================================================================== --- src/main/ruby/shell/commands/assign.rb (revision 1170946) +++ src/main/ruby/shell/commands/assign.rb (working copy) @@ -23,15 +23,15 @@ class Assign < Command def help return <<-EOF -Assign a region. Add 'true' to force assign of a region. Use with caution. -If region already assigned, this command will just go ahead and reassign +Assign a region.Use with caution.If region already assigned, +this command will just go ahead and reassign the region anyways. For experts only. EOF end - def command(region_name, force = 'false') + def command(region_name) format_simple_command do - admin.assign(region_name, force) + admin.assign(region_name) end end end Index: src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java =================================================================== --- src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java (revision 1170946) +++ src/test/java/org/apache/hadoop/hbase/coprocessor/TestMasterObserver.java (working copy) @@ -333,10 +333,10 @@ public boolean preMoveCalledOnly() { return preMoveCalled && !postMoveCalled; } - + @Override public void preAssign(ObserverContext env, - final HRegionInfo regionInfo, final boolean force) throws IOException { + final HRegionInfo regionInfo) throws IOException { if (bypass) { env.bypass(); } @@ -345,10 +345,10 @@ @Override public void postAssign(ObserverContext env, - final HRegionInfo regionInfo, final boolean force) throws IOException { + final HRegionInfo regionInfo) throws IOException { postAssignCalled = true; } - + public boolean wasAssignCalled() { return preAssignCalled && postAssignCalled; }