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 <iamnota...@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