saintstack commented on a change in pull request #3532:
URL: https://github.com/apache/hbase/pull/3532#discussion_r685673437



##########
File path: hbase-protocol/src/main/protobuf/Client.proto
##########
@@ -91,6 +91,8 @@ message Get {
   optional Consistency consistency = 12 [default = STRONG];
   repeated ColumnFamilyTimeRange cf_time_range = 13;
   optional bool load_column_families_on_demand = 14; /* DO NOT add defaults to 
load_column_families_on_demand. */
+
+  optional uint64 max_result_size = 15;

Review comment:
       FYI, these protos we want to let go of eventually. They are for use of 
downstreamers, not for internal hbase use.... internally we use the shaded 
stuff.  So, its fine adding this here but probably better not adding it.

##########
File path: hbase-client/src/main/java/org/apache/hadoop/hbase/client/Get.java
##########
@@ -339,6 +340,21 @@ public Get setFilter(Filter filter) {
     return this;
   }
 
+  /**
+   * Set the maximum result size. The default is -1; this means that no 
specific
+   * maximum result size will be set for this Get.
+   *
+   * If set to a value greater than zero, the server may respond with a Result 
where
+   * {@link Result#mayHaveMoreCellsInRow()} is true. The user is required to 
handle
+   * this case.

Review comment:
       What do you do when mayHaveMoreCellsInRow is true @bbeaudreault  ? How 
do you use this boolean in prod (if you don't mind me asking...)

##########
File path: 
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
##########
@@ -7518,11 +7516,35 @@ void prepareGet(final Get get) throws IOException {
 
   @Override
   public List<Cell> get(Get get, boolean withCoprocessor) throws IOException {
-    return get(get, withCoprocessor, HConstants.NO_NONCE, HConstants.NO_NONCE);
+    return getInternal(get, withCoprocessor, HConstants.NO_NONCE, 
HConstants.NO_NONCE).getFirst();
   }
 
-  private List<Cell> get(Get get, boolean withCoprocessor, long nonceGroup, 
long nonce)
-      throws IOException {
+  private Result get(Get get, boolean withCoprocessor, long nonceGroup, long 
nonce)
+    throws IOException {
+    Pair<List<Cell>, ScannerContext> result = getInternal(get, 
withCoprocessor, nonceGroup, nonce);
+    boolean stale = this.getRegionInfo().getReplicaId() != 0;
+
+    return Result.create(
+      result.getFirst(),
+      get.isCheckExistenceOnly() ? !result.getFirst().isEmpty() : null,
+      stale,
+      result.getSecond().mayHaveMoreCellsInRow());
+  }
+
+  private Pair<List<Cell>, ScannerContext> getInternal(Get get, boolean 
withCoprocessor, long nonceGroup, long nonce)
+    throws IOException {
+    ScannerContext scannerContext = ScannerContext.newBuilder()

Review comment:
       Every Get will now carry a ScannerContext where previous it was usually 
null? (IIRC)  Do you think this will cost Bryan? Will there be  other benefits 
having a ScannerContext on every Get?

##########
File path: 
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
##########
@@ -3864,8 +3865,7 @@ public void 
prepareMiniBatchOperations(MiniBatchOperationInProgress<Mutation> mi
             Result result;
             if (returnResults) {
               // convert duplicate increment/append to get
-              List<Cell> results = region.get(toGet(mutation), false, 
nonceGroup, nonce);
-              result = Result.create(results);
+              result = region.get(toGet(mutation), false, nonceGroup, nonce);

Review comment:
       I'm missing something here.... region.get returns  List<Cell> ? Not a 
Result?

##########
File path: 
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java
##########
@@ -3864,8 +3865,7 @@ public void 
prepareMiniBatchOperations(MiniBatchOperationInProgress<Mutation> mi
             Result result;
             if (returnResults) {
               // convert duplicate increment/append to get
-              List<Cell> results = region.get(toGet(mutation), false, 
nonceGroup, nonce);
-              result = Result.create(results);
+              result = region.get(toGet(mutation), false, nonceGroup, nonce);

Review comment:
       nvm.. I see.




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

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to