From d6f603a4929d9309269fd9f88340caf41b5d5c81 Mon Sep 17 00:00:00 2001 From: Devaraj Das Date: Fri, 14 Feb 2014 07:34:39 +0000 Subject: [PATCH 05/45] HBASE-10354. Addendum commit. 10354.add.patch committed git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/hbase-10070@1568205 13f79535-47bb-0310-9956-ffa450edef68 --- .../java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java | 12 ++++++++---- .../java/org/apache/hadoop/hbase/regionserver/HRegion.java | 3 ++- .../org/apache/hadoop/hbase/regionserver/HRegionServer.java | 2 +- .../org/apache/hadoop/hbase/regionserver/RSRpcServices.java | 3 ++- 4 files changed, 13 insertions(+), 7 deletions(-) diff --git hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java index 5ec2a3a..3b5e4f3 100644 --- hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java +++ hbase-client/src/main/java/org/apache/hadoop/hbase/protobuf/ProtobufUtil.java @@ -1232,7 +1232,7 @@ public final class ProtobufUtil { */ public static ClientProtos.Result toResult(final Result result) { if (result.getExists() != null) { - return toResult(result.getExists()); + return toResult(result.getExists(), result.isStale()); } Cell[] cells = result.rawCells(); @@ -1256,8 +1256,12 @@ public final class ProtobufUtil { * @param existence the client existence to send * @return the converted protocol buffer Result */ - public static ClientProtos.Result toResult(final boolean existence) { - return existence ? EMPTY_RESULT_PB_EXISTS_TRUE : EMPTY_RESULT_PB_EXISTS_FALSE; + public static ClientProtos.Result toResult(final boolean existence, boolean stale) { + if (stale){ + return existence ? EMPTY_RESULT_PB_EXISTS_TRUE_STALE : EMPTY_RESULT_PB_EXISTS_FALSE_STALE; + } else { + return existence ? EMPTY_RESULT_PB_EXISTS_TRUE : EMPTY_RESULT_PB_EXISTS_FALSE; + } } /** @@ -1268,7 +1272,7 @@ public final class ProtobufUtil { * @return the converted protocol buffer Result */ public static ClientProtos.Result toResultNoData(final Result result) { - if (result.getExists() != null) return toResult(result.getExists()); + if (result.getExists() != null) return toResult(result.getExists(), result.isStale()); int size = result.size(); if (size == 0) return result.isStale() ? EMPTY_RESULT_PB_STALE : EMPTY_RESULT_PB; ClientProtos.Result.Builder builder = ClientProtos.Result.newBuilder(); diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index aef95d8..b89d886 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -4725,7 +4725,8 @@ public class HRegion implements HeapSize { // , Writable{ } } List results = get(get, true); - return Result.create(results, get.isCheckExistenceOnly() ? !results.isEmpty() : null); + boolean stale = this.getRegionInfo().getReplicaId() != 0; + return Result.create(results, get.isCheckExistenceOnly() ? !results.isEmpty() : null, stale); } /* diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java index 84f986b..d8f1696 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java @@ -2531,7 +2531,7 @@ public class HRegionServer extends HasThread implements return getRegionByEncodedName(regionName, encodedRegionName); } - protected HRegion getRegionByEncodedName(String encodedRegionName) + public HRegion getRegionByEncodedName(String encodedRegionName) throws NotServingRegionException { return getRegionByEncodedName(null, encodedRegionName); } diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index e94c506..599fd1c 100644 --- hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -1606,7 +1606,8 @@ public class RSRpcServices implements HBaseRPCErrorHandler, } } if (existence != null){ - ClientProtos.Result pbr = ProtobufUtil.toResult(existence); + ClientProtos.Result pbr = + ProtobufUtil.toResult(existence, region.getRegionInfo().getReplicaId() != 0); builder.setResult(pbr); } else if (r != null) { ClientProtos.Result pbr = ProtobufUtil.toResult(r); -- 2.0.0