shahrs87 commented on a change in pull request #2322:
URL: https://github.com/apache/hbase/pull/2322#discussion_r482175115



##########
File path: 
hbase-client/src/main/java/org/apache/hadoop/hbase/client/ConnectionImplementation.java
##########
@@ -968,6 +968,19 @@ private RegionLocations locateRegionInMeta(TableName 
tableName, byte[] row, bool
     }
   }
 
+  private void takeUserRegionLock() throws IOException {
+    try {
+      long waitTime = connectionConfig.getScannerTimeoutPeriod();
+      if (!userRegionLock.tryLock(waitTime, TimeUnit.MILLISECONDS)) {

Review comment:
       Let me explain my POV with one of our client example.
    We have an internal customer who wants a strict 15 seconds SLA for every 
operation. Since operation timeout is end to end timeout which includes all the 
retries, sleep within retries so we suggested them to use operation timeout as 
15 seconds.
   Also we recommended them to set scanner timeout period to 7 seconds with  
retries config (hbase.client.retries.number)  set to 2 .  There is some sleep 
interval between each attempt and we expect the call to complete within 15 
seconds and if it doesn't then operation timeout will kick in and fail the call.
   But we found out that getRegionLocations call is not bounded by operation 
timeout.
   Now if we set the lock timeout to same as operation timeout, then in worst 
case scenario call will fail in 15 (lock timeout) + 15 (lock timeout 2nd try) + 
1 (assuming sleep of 1 second) = 31 seconds
   If we set the lock timeout to same as scanner timeout, then in worst case 
scenario the call will fail in 7 (scanner timeout) + 7 (scanner timeout) + 1 
(sleep between tries) = 16 seconds which is closer to SLA that we promised.
   Hope this makes sense. If still the community wants to go forward with 
operation timeout, I will change it to operation timeout.
   @infraio  @bharathv  @virajjasani  @saintstack  @apurtell 




----------------------------------------------------------------
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:
us...@infra.apache.org


Reply via email to