You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by re...@apache.org on 2019/09/02 02:50:20 UTC

[hbase] branch branch-2.2 updated: HBASE-22928 ScanMetrics counter update may not happen in case of exception in TableRecordReaderImpl

This is an automated email from the ASF dual-hosted git repository.

reidchan pushed a commit to branch branch-2.2
in repository https://gitbox.apache.org/repos/asf/hbase.git


The following commit(s) were added to refs/heads/branch-2.2 by this push:
     new be41a76  HBASE-22928 ScanMetrics counter update may not happen in case of exception in TableRecordReaderImpl
be41a76 is described below

commit be41a767cf0169117d3530fb3723246a4023da33
Author: Pankaj <pa...@huawei.com>
AuthorDate: Mon Sep 2 08:17:44 2019 +0530

    HBASE-22928 ScanMetrics counter update may not happen in case of exception in TableRecordReaderImpl
    
    Signed-off-by: Reid Chan <re...@apache.org>
---
 .../org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java    | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java
index 28f4da1..1fa943b 100644
--- a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java
+++ b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/TableRecordReaderImpl.java
@@ -77,6 +77,10 @@ public class TableRecordReaderImpl {
    * @throws IOException When restarting fails.
    */
   public void restart(byte[] firstRow) throws IOException {
+    // Update counter metrics based on current scan before reinitializing it
+    if (currentScan != null) {
+      updateCounters();
+    }
     currentScan = new Scan(scan);
     currentScan.withStartRow(firstRow);
     currentScan.setScanMetricsEnabled(true);
@@ -219,6 +223,7 @@ public class TableRecordReaderImpl {
       } catch (IOException e) {
         // do not retry if the exception tells us not to do so
         if (e instanceof DoNotRetryIOException) {
+          updateCounters();
           throw e;
         }
         // try to handle all other IOExceptions by restarting
@@ -257,6 +262,7 @@ public class TableRecordReaderImpl {
       updateCounters();
       return false;
     } catch (IOException ioe) {
+      updateCounters();
       if (logScannerActivity) {
         long now = System.currentTimeMillis();
         LOG.info("Mapper took " + (now-timestamp)