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/20 19:36:03 UTC

svn commit: r1328458 - in /hbase/trunk/src: main/java/org/apache/hadoop/hbase/master/HMaster.java test/java/org/apache/hadoop/hbase/client/TestAdmin.java

Author: ramkrishna
Date: Fri Apr 20 17:36:02 2012
New Revision: 1328458

URL: http://svn.apache.org/viewvc?rev=1328458&view=rev
Log:
HBASE-5809 Avoid move api to take the destination server same as the source server. (Rajesh)

Modified:
    hbase/trunk/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
    hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java

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=1328458&r1=1328457&r2=1328458&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 Fri Apr 20 17:36:02 2012
@@ -1174,6 +1174,11 @@ Server {
       this.assignmentManager.unassign(hri);
     } else {
       dest = new ServerName(Bytes.toString(destServerName));
+      if (dest.equals(p.getSecond())) {
+        LOG.debug("Skipping move of region " + hri.getRegionNameAsString()
+            + " because region already assigned to the same server " + dest +".");
+        return;
+      }
       try {
         if (this.cpHost != null) {
           if (this.cpHost.preMove(p.getFirst(), p.getSecond(), dest)) {

Modified: hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java
URL: http://svn.apache.org/viewvc/hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java?rev=1328458&r1=1328457&r2=1328458&view=diff
==============================================================================
--- hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java (original)
+++ hbase/trunk/src/test/java/org/apache/hadoop/hbase/client/TestAdmin.java Fri Apr 20 17:36:02 2012
@@ -43,6 +43,8 @@ import org.apache.hadoop.hbase.*;
 import org.apache.hadoop.hbase.executor.EventHandler;
 import org.apache.hadoop.hbase.executor.EventHandler.EventType;
 import org.apache.hadoop.hbase.executor.ExecutorService;
+import org.apache.hadoop.hbase.master.AssignmentManager;
+import org.apache.hadoop.hbase.master.HMaster;
 import org.apache.hadoop.hbase.master.MasterServices;
 import org.apache.hadoop.hbase.regionserver.HRegion;
 import org.apache.hadoop.hbase.regionserver.HRegionServer;
@@ -1404,6 +1406,22 @@ public class TestAdmin {
     assertTrue(("actual count: " + count), count <= 2);
   }
 
+  @Test
+  public void testMoveToPreviouslyAssignedRS() throws IOException {
+    byte[] tableName = Bytes.toBytes("testMoveToPreviouslyAssignedRS");
+    MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();
+    HMaster master = cluster.getMaster();
+    HBaseAdmin localAdmin = createTable(tableName);
+    List<HRegionInfo> tableRegions = localAdmin.getTableRegions(tableName);
+    HRegionInfo hri = tableRegions.get(0);
+    AssignmentManager am = master.getAssignmentManager();
+    ServerName server = am.getRegionServerOfRegion(hri);
+    localAdmin.move(hri.getEncodedNameAsBytes(), Bytes.toBytes(server.getServerName()));
+    assertEquals("Current region server and region server before move should be same.", server,
+        am.getRegionServerOfRegion(hri));
+  }
+
+
   private void setUpforLogRolling() {
     // Force a region split after every 768KB
     TEST_UTIL.getConfiguration().setLong(HConstants.HREGION_MAX_FILESIZE,