You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by st...@apache.org on 2017/08/18 04:55:03 UTC

hbase git commit: Finish merge

Repository: hbase
Updated Branches:
  refs/heads/HBASE-14070.HLC 675b63d50 -> c9cc17dd7


Finish merge

Changes
- In TestClockWithCluster, Expected logical time after assigning is 1 greater than before
- In TestClockWithCluster, check other RS for meta table since master won't always carry it


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/c9cc17dd
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/c9cc17dd
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/c9cc17dd

Branch: refs/heads/HBASE-14070.HLC
Commit: c9cc17dd7c44b30e2d5bcc053eca14d1ff561abf
Parents: 675b63d
Author: Amit Patel <ia...@gmail.com>
Authored: Thu Aug 17 16:14:49 2017 -0700
Committer: Michael Stack <st...@apache.org>
Committed: Thu Aug 17 21:54:09 2017 -0700

----------------------------------------------------------------------
 .../hbase/shaded/protobuf/ProtobufUtil.java     | 28 ++++++++++++
 .../IncludeAllCompactionQueryMatcher.java       |  3 +-
 .../hadoop/hbase/TestClockWithCluster.java      | 45 +++++++++++++-------
 3 files changed, 60 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/c9cc17dd/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
index e020c63..405c438 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/shaded/protobuf/ProtobufUtil.java
@@ -3365,6 +3365,34 @@ public final class ProtobufUtil {
     return builder.build();
   }
 
+  /**
+   * Create a CloseRegionRequest for a given encoded region name
+   *
+   * @param encodedRegionName the name of the region to close
+   * @param nodeTimes list of clock types and timestamps generated by each clock on master
+   * @return a CloseRegionRequest
+   */
+  public static CloseRegionRequest
+      buildCloseRegionRequest(ServerName server, final String encodedRegionName,
+      List<Pair<ClockType, Long>> nodeTimes) {
+    CloseRegionRequest.Builder builder = CloseRegionRequest.newBuilder();
+    RegionSpecifier region = RequestConverter.buildRegionSpecifier(
+        RegionSpecifierType.ENCODED_REGION_NAME,
+        Bytes.toBytes(encodedRegionName));
+    builder.setRegion(region);
+    if (server != null) {
+      builder.setServerStartCode(server.getStartcode());
+    }
+    if (nodeTimes != null) {
+      for (Pair<ClockType, Long> nodeTime : nodeTimes) {
+        builder.addNodeTimesBuilder()
+            .setClockType(ProtobufUtil.toClockType(nodeTime.getFirst()))
+            .setTimestamp(nodeTime.getSecond());
+      }
+    }
+    return builder.build();
+  }
+
   public static ProcedureDescription buildProcedureDescription(String signature, String instance,
       Map<String, String> props) {
     ProcedureDescription.Builder builder =

http://git-wip-us.apache.org/repos/asf/hbase/blob/c9cc17dd/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/IncludeAllCompactionQueryMatcher.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/IncludeAllCompactionQueryMatcher.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/IncludeAllCompactionQueryMatcher.java
index 6937626..2782769 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/IncludeAllCompactionQueryMatcher.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/querymatcher/IncludeAllCompactionQueryMatcher.java
@@ -20,6 +20,7 @@ package org.apache.hadoop.hbase.regionserver.querymatcher;
 import java.io.IOException;
 
 import org.apache.hadoop.hbase.Cell;
+import org.apache.hadoop.hbase.TimestampType;
 import org.apache.hadoop.hbase.classification.InterfaceAudience;
 import org.apache.hadoop.hbase.regionserver.ScanInfo;
 
@@ -35,7 +36,7 @@ public class IncludeAllCompactionQueryMatcher extends MinorCompactionScanQueryMa
   }
 
   @Override
-  public MatchCode match(Cell cell) throws IOException {
+  public MatchCode match(Cell cell, TimestampType timestampType) throws IOException {
     return MatchCode.INCLUDE;
   }
 

http://git-wip-us.apache.org/repos/asf/hbase/blob/c9cc17dd/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClockWithCluster.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClockWithCluster.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClockWithCluster.java
index 0ad3735..c1cca09 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClockWithCluster.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/TestClockWithCluster.java
@@ -39,6 +39,7 @@ import org.apache.hadoop.hbase.client.Scan;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.client.TableDescriptorBuilder;
 import org.apache.hadoop.hbase.master.HMaster;
+import org.apache.hadoop.hbase.master.LoadBalancer;
 import org.apache.hadoop.hbase.master.RegionState;
 import org.apache.hadoop.hbase.master.assignment.RegionStates;
 import org.apache.hadoop.hbase.regionserver.HRegion;
@@ -190,8 +191,16 @@ public class TestClockWithCluster {
       hriOnline = locator.getRegionLocation(HConstants.EMPTY_START_ROW).getRegionInfo();
     }
 
+    boolean tablesOnMaster = true;
+    String confValue = HBTU.getConfiguration().get(LoadBalancer.TABLES_ON_MASTER);
+    if (confValue != null && confValue.equalsIgnoreCase("none")) {
+      tablesOnMaster = false;
+    }
+    List<Region> regionsContainingMeta = tablesOnMaster ?
+        rs.getOnlineRegions() : master.getOnlineRegions();
+
     HRegion regionMeta = null;
-    for (Region r : master.getOnlineRegions()) {
+    for (Region r : regionsContainingMeta) {
       if (r.getRegionInfo().isMetaRegion()) {
         regionMeta = ((HRegion) r);
       }
@@ -249,20 +258,18 @@ public class TestClockWithCluster {
 
       assertEquals(expectedLogicalTime, masterHLC.getLogicalTime());
       timestamps.add(masterHLC.getLogicalTime());
-
       admin.assign(hriOnline.getRegionName());
       // clock.now() is called 7 times and clock.update() is called 2 times, each call increments
       // the logical time by one.
-      // 0   [now]    Get region info from hbase:meta in HBaseAdmin#unassign
-      // 1,2 [now]    Update hbase:meta
-      // 3   [now]    Send unassign region request to region server
-      // 4   [update] Update region region server clock upon receiving unassign region request
-      // 5   [now]    Send region server response back to master
-      // 6   [update] Update master clock upon close region response form region server
-      // 7,8 [now]    Update hbase:meta
-      // Assignment has one less call to clock.now() because MasterRpcServices#assignRegion instead
-      // gets the region info from assignment manager rather than meta table accessor
-      expectedLogicalTime += 9;
+      // 0   [now]    Get region info from hbase:meta in HBaseAdmin#assign
+      // 1   [now]    Get table state in AssignProcedure#startTransition
+      // 2,3 [now]    Update hbase:meta
+      // 4   [now]    Send assign region request to region server
+      // 5   [update] Update region region server clock upon receiving assign region request
+      // 6   [now]    Send region server response back to master
+      // 7   [update] Update master clock upon close region response from region server
+      // 8,9 [now]    Update hbase:meta
+      expectedLogicalTime += 10;
       assertEquals(RegionState.State.OPEN, regionStates.getRegionState(hriOnline).getState());
       assertEquals(expectedLogicalTime, masterHLC.getLogicalTime());
       timestamps.add(masterHLC.getLogicalTime());
@@ -299,8 +306,16 @@ public class TestClockWithCluster {
       hriOnline = locator.getRegionLocation(HConstants.EMPTY_START_ROW).getRegionInfo();
     }
 
+    boolean tablesOnMaster = true;
+    String confValue = HBTU.getConfiguration().get(LoadBalancer.TABLES_ON_MASTER);
+    if (confValue != null && confValue.equalsIgnoreCase("none")) {
+      tablesOnMaster = false;
+    }
+    List<Region> regionsContainingMeta = tablesOnMaster ?
+        rs.getOnlineRegions() : master.getOnlineRegions();
+
     HRegion regionMeta = null;
-    for (Region r : master.getOnlineRegions()) {
+    for (Region r : regionsContainingMeta) {
       if (r.getRegionInfo().isMetaRegion()) {
         regionMeta = ((HRegion) r);
       }
@@ -367,7 +382,7 @@ public class TestClockWithCluster {
     admin.assign(hriOnline.getRegionName());
     assertEquals(RegionState.State.OPEN, regionStates.getRegionState(hriOnline).getState());
     // Verify that region server clock time increased
-    assertHLCTime(masterHLC, expectedPhysicalTime, 8);
-    assertHLCTime(rsHLC, expectedPhysicalTime, 5);
+    assertHLCTime(masterHLC, expectedPhysicalTime, 9);
+    assertHLCTime(rsHLC, expectedPhysicalTime, 6);
   }
 }
\ No newline at end of file