You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by GitBox <gi...@apache.org> on 2019/08/29 01:36:00 UTC

[GitHub] [hbase] Apache-HBase commented on a change in pull request #556: HBASE-22941 merge operation returns parent regions in random order

Apache-HBase commented on a change in pull request #556: HBASE-22941 merge operation returns parent regions in random order
URL: https://github.com/apache/hbase/pull/556#discussion_r318855531
 
 

 ##########
 File path: hbase-server/src/test/java/org/apache/hadoop/hbase/TestSplitMerge.java
 ##########
 @@ -104,4 +106,50 @@ public String explainFailure() throws Exception {
         .getRegionLocation(Bytes.toBytes(1), true).get().getServerName());
     }
   }
+
+  @Test
+  public void testMergeRegionOrder() throws Exception {
+
+    int regionCount= 20;
+
+    TableName tableName = TableName.valueOf("MergeRegionOrder");
+    byte[] family = Bytes.toBytes("CF");
+    TableDescriptor td = TableDescriptorBuilder.newBuilder(tableName)
+        .setColumnFamily(ColumnFamilyDescriptorBuilder.of(family)).build();
+
+    byte[][] splitKeys = new byte[regionCount-1][];
+
+    for (int c = 0; c < regionCount-1; c++) {
+      splitKeys[c] = Bytes.toBytes(c+1 * 1000);
+    }
+
+    UTIL.getAdmin().createTable(td, splitKeys);
+    UTIL.waitTableAvailable(tableName);
+
+    List<RegionInfo> regions = UTIL.getAdmin().getRegions(tableName);
+
+    byte[][] regionNames = new byte[20][];
+    for (int c = 0; c < regionCount; c++) {
+      regionNames[c] = regions.get(c).getRegionName();
+    }
+
+    UTIL.getAdmin().mergeRegionsAsync(regionNames, false).get(60, TimeUnit.SECONDS);
+
+    List<RegionInfo> mergedRegions =
+        MetaTableAccessor.getTableRegions(UTIL.getConnection(), tableName);
+
+    assertEquals(1, mergedRegions.size());
+
+    RegionInfo mergedRegion = mergedRegions.get(0);
+
+    List<RegionInfo> mergeParentRegions = MetaTableAccessor.getMergeRegions(UTIL.getConnection(),
+      mergedRegion.getEncodedNameAsBytes());
+
+    assertEquals(mergeParentRegions.size(), 20);
+
+    for (int c = 0; c < 19; c++) {
+      assertTrue(Bytes.compareTo(mergeParentRegions.get(c).getStartKey(), mergeParentRegions.get(c+1).getStartKey())<0);
+    }
+    
 
 Review comment:
   whitespace:end of line
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services