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

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


The following commit(s) were added to refs/heads/branch-2 by this push:
     new 17652a7  HBASE-23590 : Update maxStoreFileRefCount to 
maxCompactedStoreFileRefCount for auto region recovery based on old reader 
references
17652a7 is described below

commit 17652a7b323ea4266c047843ca3c5fed613a0d4a
Author: Viraj Jasani <[email protected]>
AuthorDate: Wed Jan 1 21:57:03 2020 +0530

    HBASE-23590 : Update maxStoreFileRefCount to maxCompactedStoreFileRefCount 
for auto region recovery based on old reader references
    
    Signed-off-by: Anoop Sam John <[email protected]>
---
 .../java/org/apache/hadoop/hbase/RegionLoad.java   |  4 +--
 .../org/apache/hadoop/hbase/RegionMetrics.java     |  4 +--
 .../apache/hadoop/hbase/RegionMetricsBuilder.java  | 26 +++++++++---------
 .../apache/hadoop/hbase/ServerMetricsBuilder.java  | 10 ++++---
 hbase-common/src/main/resources/hbase-default.xml  | 32 +++++++++++++---------
 .../regionserver/MetricsRegionServerSource.java    |  2 +-
 .../hbase/regionserver/MetricsRegionWrapper.java   |  4 +--
 .../regionserver/MetricsRegionSourceImpl.java      |  7 +++--
 .../regionserver/TestMetricsRegionSourceImpl.java  |  2 +-
 .../src/main/protobuf/ClusterStatus.proto          |  4 +--
 .../src/main/protobuf/ClusterStatus.proto          |  4 +--
 .../hadoop/hbase/master/RegionsRecoveryChore.java  | 19 +++++++------
 .../hadoop/hbase/regionserver/HRegionServer.java   |  9 +++---
 .../apache/hadoop/hbase/regionserver/HStore.java   | 11 ++++----
 .../regionserver/MetricsRegionWrapperImpl.java     | 16 +++++------
 .../hbase/master/TestRegionsRecoveryChore.java     | 12 ++++----
 .../regionserver/MetricsRegionWrapperStub.java     |  2 +-
 src/main/asciidoc/_chapters/hbase-default.adoc     | 32 +++++++++++++---------
 18 files changed, 109 insertions(+), 91 deletions(-)

diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java
index b48bbb8..fcaec60 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionLoad.java
@@ -366,8 +366,8 @@ public class RegionLoad implements RegionMetrics {
   }
 
   @Override
-  public int getMaxStoreFileRefCount() {
-    return metrics.getMaxStoreFileRefCount();
+  public int getMaxCompactedStoreFileRefCount() {
+    return metrics.getMaxCompactedStoreFileRefCount();
   }
 
   /**
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetrics.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetrics.java
index 8ce61c7..eab57dc 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetrics.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetrics.java
@@ -150,8 +150,8 @@ public interface RegionMetrics {
   int getStoreRefCount();
 
   /**
-   * @return the max reference count for any store file among all stores files
+   * @return the max reference count for any store file among all compacted 
stores files
    *   of this region
    */
-  int getMaxStoreFileRefCount();
+  int getMaxCompactedStoreFileRefCount();
 }
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java
index a43350d..da0f4bf 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/RegionMetricsBuilder.java
@@ -65,7 +65,7 @@ public final class RegionMetricsBuilder {
         .setStoreCount(regionLoadPB.getStores())
         .setStoreFileCount(regionLoadPB.getStorefiles())
         .setStoreRefCount(regionLoadPB.getStoreRefCount())
-        .setMaxStoreFileRefCount(regionLoadPB.getMaxStoreFileRefCount())
+        
.setMaxCompactedStoreFileRefCount(regionLoadPB.getMaxCompactedStoreFileRefCount())
         .setStoreFileSize(new Size(regionLoadPB.getStorefileSizeMB(), 
Size.Unit.MEGABYTE))
         
.setStoreSequenceIds(regionLoadPB.getStoreCompleteSequenceIdList().stream()
           .collect(Collectors.toMap(
@@ -112,7 +112,7 @@ public final class RegionMetricsBuilder {
         .setStores(regionMetrics.getStoreCount())
         .setStorefiles(regionMetrics.getStoreFileCount())
         .setStoreRefCount(regionMetrics.getStoreRefCount())
-        .setMaxStoreFileRefCount(regionMetrics.getMaxStoreFileRefCount())
+        
.setMaxCompactedStoreFileRefCount(regionMetrics.getMaxCompactedStoreFileRefCount())
         .setStorefileSizeMB((int) 
regionMetrics.getStoreFileSize().get(Size.Unit.MEGABYTE))
         
.addAllStoreCompleteSequenceId(toStoreSequenceId(regionMetrics.getStoreSequenceId()))
         .setStoreUncompressedSizeMB(
@@ -128,7 +128,7 @@ public final class RegionMetricsBuilder {
   private int storeCount;
   private int storeFileCount;
   private int storeRefCount;
-  private int maxStoreFileRefCount;
+  private int maxCompactedStoreFileRefCount;
   private long compactingCellCount;
   private long compactedCellCount;
   private Size storeFileSize = Size.ZERO;
@@ -161,8 +161,8 @@ public final class RegionMetricsBuilder {
     this.storeRefCount = value;
     return this;
   }
-  public RegionMetricsBuilder setMaxStoreFileRefCount(int value) {
-    this.maxStoreFileRefCount = value;
+  public RegionMetricsBuilder setMaxCompactedStoreFileRefCount(int value) {
+    this.maxCompactedStoreFileRefCount = value;
     return this;
   }
   public RegionMetricsBuilder setCompactingCellCount(long value) {
@@ -235,7 +235,7 @@ public final class RegionMetricsBuilder {
         storeCount,
         storeFileCount,
         storeRefCount,
-        maxStoreFileRefCount,
+        maxCompactedStoreFileRefCount,
         compactingCellCount,
         compactedCellCount,
         storeFileSize,
@@ -259,7 +259,7 @@ public final class RegionMetricsBuilder {
     private final int storeCount;
     private final int storeFileCount;
     private final int storeRefCount;
-    private final int maxStoreFileRefCount;
+    private final int maxCompactedStoreFileRefCount;
     private final long compactingCellCount;
     private final long compactedCellCount;
     private final Size storeFileSize;
@@ -280,7 +280,7 @@ public final class RegionMetricsBuilder {
         int storeCount,
         int storeFileCount,
         int storeRefCount,
-        int maxStoreFileRefCount,
+        int maxCompactedStoreFileRefCount,
         final long compactingCellCount,
         long compactedCellCount,
         Size storeFileSize,
@@ -301,7 +301,7 @@ public final class RegionMetricsBuilder {
       this.storeCount = storeCount;
       this.storeFileCount = storeFileCount;
       this.storeRefCount = storeRefCount;
-      this.maxStoreFileRefCount = maxStoreFileRefCount;
+      this.maxCompactedStoreFileRefCount = maxCompactedStoreFileRefCount;
       this.compactingCellCount = compactingCellCount;
       this.compactedCellCount = compactedCellCount;
       this.storeFileSize = Preconditions.checkNotNull(storeFileSize);
@@ -341,8 +341,8 @@ public final class RegionMetricsBuilder {
     }
 
     @Override
-    public int getMaxStoreFileRefCount() {
-      return maxStoreFileRefCount;
+    public int getMaxCompactedStoreFileRefCount() {
+      return maxCompactedStoreFileRefCount;
     }
 
     @Override
@@ -433,8 +433,8 @@ public final class RegionMetricsBuilder {
           this.getStoreFileCount());
       Strings.appendKeyValue(sb, "storeRefCount",
         this.getStoreRefCount());
-      Strings.appendKeyValue(sb, "maxStoreFileRefCount",
-        this.getMaxStoreFileRefCount());
+      Strings.appendKeyValue(sb, "maxCompactedStoreFileRefCount",
+        this.getMaxCompactedStoreFileRefCount());
       Strings.appendKeyValue(sb, "uncompressedStoreFileSize",
           this.getUncompressedStoreFileSize());
       Strings.appendKeyValue(sb, "lastMajorCompactionTimestamp",
diff --git 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java
index e5cd7b2..ddb279c 100644
--- 
a/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java
+++ 
b/hbase-client/src/main/java/org/apache/hadoop/hbase/ServerMetricsBuilder.java
@@ -360,7 +360,7 @@ public final class ServerMetricsBuilder {
       int storeCount = 0;
       int storeFileCount = 0;
       int storeRefCount = 0;
-      int maxStoreFileRefCount = 0;
+      int maxCompactedStoreFileRefCount = 0;
       long uncompressedStoreFileSizeMB = 0;
       long storeFileSizeMB = 0;
       long memStoreSizeMB = 0;
@@ -376,8 +376,9 @@ public final class ServerMetricsBuilder {
         storeCount += r.getStoreCount();
         storeFileCount += r.getStoreFileCount();
         storeRefCount += r.getStoreRefCount();
-        int currentMaxStoreFileRefCount = r.getMaxStoreFileRefCount();
-        maxStoreFileRefCount = Math.max(maxStoreFileRefCount, 
currentMaxStoreFileRefCount);
+        int currentMaxCompactedStoreFileRefCount = 
r.getMaxCompactedStoreFileRefCount();
+        maxCompactedStoreFileRefCount = Math.max(maxCompactedStoreFileRefCount,
+          currentMaxCompactedStoreFileRefCount);
         uncompressedStoreFileSizeMB += 
r.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE);
         storeFileSizeMB += r.getStoreFileSize().get(Size.Unit.MEGABYTE);
         memStoreSizeMB += r.getMemStoreSize().get(Size.Unit.MEGABYTE);
@@ -399,7 +400,8 @@ public final class ServerMetricsBuilder {
       Strings.appendKeyValue(sb, "numberOfStores", storeCount);
       Strings.appendKeyValue(sb, "numberOfStorefiles", storeFileCount);
       Strings.appendKeyValue(sb, "storeRefCount", storeRefCount);
-      Strings.appendKeyValue(sb, "maxStoreFileRefCount", maxStoreFileRefCount);
+      Strings.appendKeyValue(sb, "maxCompactedStoreFileRefCount",
+        maxCompactedStoreFileRefCount);
       Strings.appendKeyValue(sb, "storefileUncompressedSizeMB", 
uncompressedStoreFileSizeMB);
       Strings.appendKeyValue(sb, "storefileSizeMB", storeFileSizeMB);
       if (uncompressedStoreFileSizeMB != 0) {
diff --git a/hbase-common/src/main/resources/hbase-default.xml 
b/hbase-common/src/main/resources/hbase-default.xml
index cc1b728..7b07793 100644
--- a/hbase-common/src/main/resources/hbase-default.xml
+++ b/hbase-common/src/main/resources/hbase-default.xml
@@ -1891,19 +1891,25 @@ possible configurations would overwhelm and obscure the 
important.
     <name>hbase.regions.recovery.store.file.ref.count</name>
     <value>-1</value>
     <description>
-      Very large ref count on a file indicates
-      that it is a ref leak on that object. Such files
-      can not be removed even after it is invalidated
-      via compaction. Only way to recover in such
-      scenario is to reopen the region which can
-      release all resources, like the refcount, leases, etc.
-      This config represents Store files Ref Count threshold
-      value considered for reopening regions.
-      Any region with store files ref count > this value
-      would be eligible for reopening by master.
-      Default value -1 indicates this feature is turned off.
-      Only positive integer value should be provided to enable
-      this feature.
+      Very large number of ref count on a compacted
+      store file indicates that it is a ref leak
+      on that object(compacted store file).
+      Such files can not be removed after
+      it is invalidated via compaction.
+      Only way to recover in such scenario is to
+      reopen the region which can release
+      all resources, like the refcount,
+      leases, etc. This config represents Store files Ref
+      Count threshold value considered for reopening
+      regions. Any region with compacted store files
+      ref count > this value would be eligible for
+      reopening by master. Here, we get the max
+      refCount among all refCounts on all
+      compacted away store files that belong to a
+      particular region. Default value -1 indicates
+      this feature is turned off. Only positive
+      integer value should be provided to
+      enable this feature.
     </description>
   </property>
 </configuration>
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
index 5923b13..8f8a12d 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionServerSource.java
@@ -233,7 +233,7 @@ public interface MetricsRegionServerSource extends 
BaseSource, JvmPauseMonitorSo
   String STOREFILE_COUNT_DESC = "Number of Store Files";
   String STORE_REF_COUNT = "storeRefCount";
   String STORE_REF_COUNT_DESC = "Store reference count";
-  String MAX_STORE_FILE_REF_COUNT = "maxStoreFileRefCount";
+  String MAX_COMPACTED_STORE_FILE_REF_COUNT = "maxCompactedStoreFileRefCount";
   String MEMSTORE_SIZE = "memStoreSize";
   String MEMSTORE_SIZE_DESC = "Size of the memstore";
   String STOREFILE_SIZE = "storeFileSize";
diff --git 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java
 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java
index b7212f0..34552ed 100644
--- 
a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java
+++ 
b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapper.java
@@ -160,7 +160,7 @@ public interface MetricsRegionWrapper {
 
   /**
    * @return the max number of references active on any store file among
-   *   all store files that belong to this region
+   *   all compacted store files that belong to this region
    */
-  long getMaxStoreFileRefCount();
+  long getMaxCompactedStoreFileRefCount();
 }
diff --git 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java
 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java
index 32e3125..6198717 100644
--- 
a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java
+++ 
b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionSourceImpl.java
@@ -218,9 +218,10 @@ public class MetricsRegionSourceImpl implements 
MetricsRegionSource {
               MetricsRegionServerSource.STORE_REF_COUNT),
           this.regionWrapper.getStoreRefCount());
       mrb.addGauge(Interns.info(
-        regionNamePrefix + MetricsRegionServerSource.MAX_STORE_FILE_REF_COUNT,
-        MetricsRegionServerSource.MAX_STORE_FILE_REF_COUNT),
-        this.regionWrapper.getMaxStoreFileRefCount());
+        regionNamePrefix + 
MetricsRegionServerSource.MAX_COMPACTED_STORE_FILE_REF_COUNT,
+        MetricsRegionServerSource.MAX_COMPACTED_STORE_FILE_REF_COUNT),
+        this.regionWrapper.getMaxCompactedStoreFileRefCount()
+      );
       mrb.addGauge(Interns.info(
               regionNamePrefix + MetricsRegionServerSource.MEMSTORE_SIZE,
               MetricsRegionServerSource.MEMSTORE_SIZE_DESC),
diff --git 
a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java
 
b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java
index ceb7dbb..837e7da 100644
--- 
a/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java
+++ 
b/hbase-hadoop2-compat/src/test/java/org/apache/hadoop/hbase/regionserver/TestMetricsRegionSourceImpl.java
@@ -100,7 +100,7 @@ public class TestMetricsRegionSourceImpl {
     }
 
     @Override
-    public long getMaxStoreFileRefCount() {
+    public long getMaxCompactedStoreFileRefCount() {
       return 0;
     }
 
diff --git a/hbase-protocol-shaded/src/main/protobuf/ClusterStatus.proto 
b/hbase-protocol-shaded/src/main/protobuf/ClusterStatus.proto
index 77b9887..65c2268 100644
--- a/hbase-protocol-shaded/src/main/protobuf/ClusterStatus.proto
+++ b/hbase-protocol-shaded/src/main/protobuf/ClusterStatus.proto
@@ -151,10 +151,10 @@ message RegionLoad {
   optional int32 store_ref_count = 21 [default = 0];
 
   /**
-   *  The max number of references active on single store file among all store 
files
+   *  The max number of references active on single store file among all 
compacted store files
    *  that belong to given region
    */
-  optional int32 max_store_file_ref_count = 22 [default = 0];
+  optional int32 max_compacted_store_file_ref_count = 22 [default = 0];
 }
 
 message UserLoad {
diff --git a/hbase-protocol/src/main/protobuf/ClusterStatus.proto 
b/hbase-protocol/src/main/protobuf/ClusterStatus.proto
index 0234738..13ec5b7 100644
--- a/hbase-protocol/src/main/protobuf/ClusterStatus.proto
+++ b/hbase-protocol/src/main/protobuf/ClusterStatus.proto
@@ -147,10 +147,10 @@ message RegionLoad {
   optional int32 store_ref_count = 21 [default = 0];
 
   /**
-   *  The max number of references active on single store file among all store 
files
+   *  The max number of references active on single store file among all 
compacted store files
    *  that belong to given region
    */
-  optional int32 max_store_file_ref_count = 22 [default = 0];
+  optional int32 max_compacted_store_file_ref_count = 22 [default = 0];
 }
 
 message UserLoad {
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionsRecoveryChore.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionsRecoveryChore.java
index c5ad867..0ee5a1b 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionsRecoveryChore.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/master/RegionsRecoveryChore.java
@@ -130,17 +130,18 @@ public class RegionsRecoveryChore extends ScheduledChore {
     for (ServerMetrics serverMetrics : serverMetricsMap.values()) {
       Map<byte[], RegionMetrics> regionMetricsMap = 
serverMetrics.getRegionMetrics();
       for (RegionMetrics regionMetrics : regionMetricsMap.values()) {
-        // For each region, each store file can have different ref counts
-        // We need to find maximum of all such ref counts and if that max count
-        // is beyond a threshold value, we should reopen the region.
-        // Here, we take max ref count of all store files and not the 
cumulative
-        // count of all store files
-        final int maxStoreFileRefCount = 
regionMetrics.getMaxStoreFileRefCount();
-
-        if (maxStoreFileRefCount > storeFileRefCountThreshold) {
+        // For each region, each compacted store file can have different ref 
counts
+        // We need to find maximum of all such ref counts and if that max 
count of compacted
+        // store files is beyond a threshold value, we should reopen the 
region.
+        // Here, we take max ref count of all compacted store files and not 
the cumulative
+        // count of all compacted store files
+        final int maxCompactedStoreFileRefCount = regionMetrics
+          .getMaxCompactedStoreFileRefCount();
+
+        if (maxCompactedStoreFileRefCount > storeFileRefCountThreshold) {
           final byte[] regionName = regionMetrics.getRegionName();
           prepareTableToReopenRegionsMap(tableToReopenRegionsMap, regionName,
-            maxStoreFileRefCount);
+            maxCompactedStoreFileRefCount);
         }
       }
     }
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
index 1c1f0b0..d8a0538 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionServer.java
@@ -1660,7 +1660,7 @@ public class HRegionServer extends HasThread implements
     int stores = 0;
     int storefiles = 0;
     int storeRefCount = 0;
-    int maxStoreFileRefCount = 0;
+    int maxCompactedStoreFileRefCount = 0;
     int storeUncompressedSizeMB = 0;
     int storefileSizeMB = 0;
     int memstoreSizeMB = (int) (r.getMemStoreDataSize() / 1024 / 1024);
@@ -1676,8 +1676,9 @@ public class HRegionServer extends HasThread implements
       storefiles += store.getStorefilesCount();
       int currentStoreRefCount = store.getStoreRefCount();
       storeRefCount += currentStoreRefCount;
-      int currentMaxStoreFileRefCount = store.getMaxStoreFileRefCount();
-      maxStoreFileRefCount = Math.max(maxStoreFileRefCount, 
currentMaxStoreFileRefCount);
+      int currentMaxCompactedStoreFileRefCount = 
store.getMaxCompactedStoreFileRefCount();
+      maxCompactedStoreFileRefCount = Math.max(maxCompactedStoreFileRefCount,
+        currentMaxCompactedStoreFileRefCount);
       storeUncompressedSizeMB += (int) (store.getStoreSizeUncompressed() / 
1024 / 1024);
       storefileSizeMB += (int) (store.getStorefilesSize() / 1024 / 1024);
       //TODO: storefileIndexSizeKB is same with rootLevelIndexSizeKB?
@@ -1706,7 +1707,7 @@ public class HRegionServer extends HasThread implements
       .setStores(stores)
       .setStorefiles(storefiles)
       .setStoreRefCount(storeRefCount)
-      .setMaxStoreFileRefCount(maxStoreFileRefCount)
+      .setMaxCompactedStoreFileRefCount(maxCompactedStoreFileRefCount)
       .setStoreUncompressedSizeMB(storeUncompressedSizeMB)
       .setStorefileSizeMB(storefileSizeMB)
       .setMemStoreSizeMB(memstoreSizeMB)
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
index bc0d694..252371d 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HStore.java
@@ -2779,18 +2779,19 @@ public class HStore implements Store, HeapSize, 
StoreConfigInformation, Propagat
   }
 
   /**
-   * @return get maximum ref count of storeFile among all HStore Files
+   * @return get maximum ref count of storeFile among all compacted HStore 
Files
    *   for the HStore
    */
-  public int getMaxStoreFileRefCount() {
-    OptionalInt maxStoreFileRefCount = this.storeEngine.getStoreFileManager()
-      .getStorefiles()
+  public int getMaxCompactedStoreFileRefCount() {
+    OptionalInt maxCompactedStoreFileRefCount = 
this.storeEngine.getStoreFileManager()
+      .getCompactedfiles()
       .stream()
       .filter(sf -> sf.getReader() != null)
       .filter(HStoreFile::isHFile)
       .mapToInt(HStoreFile::getRefCount)
       .max();
-    return maxStoreFileRefCount.isPresent() ? maxStoreFileRefCount.getAsInt() 
: 0;
+    return maxCompactedStoreFileRefCount.isPresent()
+      ? maxCompactedStoreFileRefCount.getAsInt() : 0;
   }
 
   void reportArchivedFilesForQuota(List<? extends StoreFile> archivedFiles, 
List<Long> fileSizes) {
diff --git 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java
 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java
index d2b06d0..41b515a 100644
--- 
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java
+++ 
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperImpl.java
@@ -49,7 +49,7 @@ public class MetricsRegionWrapperImpl implements 
MetricsRegionWrapper, Closeable
   private Runnable runnable;
   private long numStoreFiles;
   private long storeRefCount;
-  private long maxStoreFileRefCount;
+  private long maxCompactedStoreFileRefCount;
   private long memstoreSize;
   private long storeFileSize;
   private long maxStoreFileAge;
@@ -127,8 +127,8 @@ public class MetricsRegionWrapperImpl implements 
MetricsRegionWrapper, Closeable
   }
 
   @Override
-  public long getMaxStoreFileRefCount() {
-    return maxStoreFileRefCount;
+  public long getMaxCompactedStoreFileRefCount() {
+    return maxCompactedStoreFileRefCount;
   }
 
   @Override
@@ -234,7 +234,7 @@ public class MetricsRegionWrapperImpl implements 
MetricsRegionWrapper, Closeable
     public void run() {
       long tempNumStoreFiles = 0;
       int tempStoreRefCount = 0;
-      int tempMaxStoreFileRefCount = 0;
+      int tempMaxCompactedStoreFileRefCount = 0;
       long tempMemstoreSize = 0;
       long tempStoreFileSize = 0;
       long tempMaxStoreFileAge = 0;
@@ -249,9 +249,9 @@ public class MetricsRegionWrapperImpl implements 
MetricsRegionWrapper, Closeable
           tempNumStoreFiles += store.getStorefilesCount();
           int currentStoreRefCount = store.getStoreRefCount();
           tempStoreRefCount += currentStoreRefCount;
-          int currentMaxStoreFileRefCount = store.getMaxStoreFileRefCount();
-          tempMaxStoreFileRefCount = Math.max(tempMaxStoreFileRefCount,
-            currentMaxStoreFileRefCount);
+          int currentMaxCompactedStoreFileRefCount = 
store.getMaxCompactedStoreFileRefCount();
+          tempMaxCompactedStoreFileRefCount = 
Math.max(tempMaxCompactedStoreFileRefCount,
+            currentMaxCompactedStoreFileRefCount);
           tempMemstoreSize += store.getMemStoreSize().getDataSize();
           tempStoreFileSize += store.getStorefilesSize();
           OptionalLong storeMaxStoreFileAge = store.getMaxStoreFileAge();
@@ -279,7 +279,7 @@ public class MetricsRegionWrapperImpl implements 
MetricsRegionWrapper, Closeable
 
       numStoreFiles = tempNumStoreFiles;
       storeRefCount = tempStoreRefCount;
-      maxStoreFileRefCount = tempMaxStoreFileRefCount;
+      maxCompactedStoreFileRefCount = tempMaxCompactedStoreFileRefCount;
       memstoreSize = tempMemstoreSize;
       storeFileSize = tempStoreFileSize;
       maxStoreFileAge = tempMaxStoreFileAge;
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java
index 58cb549..f170d79 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/TestRegionsRecoveryChore.java
@@ -214,7 +214,7 @@ public class TestRegionsRecoveryChore {
     Mockito.verify(hMaster, Mockito.times(0)).reopenRegions(Mockito.any(), 
Mockito.anyList(),
       Mockito.anyLong(), Mockito.anyLong());
 
-    // default maxStoreFileRefCount is -1 (no regions to be reopened using AM)
+    // default maxCompactedStoreFileRefCount is -1 (no regions to be reopened 
using AM)
     Mockito.verify(hMaster, Mockito.times(0)).getAssignmentManager();
     Mockito.verify(assignmentManager, Mockito.times(0))
       .getRegionInfo(Mockito.any());
@@ -380,7 +380,7 @@ public class TestRegionsRecoveryChore {
     return serverMetrics;
   }
 
-  private static RegionMetrics getRegionMetrics(byte[] regionName, int 
storeRefCount) {
+  private static RegionMetrics getRegionMetrics(byte[] regionName, int 
compactedStoreRefCount) {
     RegionMetrics regionMetrics = new RegionMetrics() {
 
       @Override
@@ -480,12 +480,12 @@ public class TestRegionsRecoveryChore {
 
       @Override
       public int getStoreRefCount() {
-        return storeRefCount;
+        return compactedStoreRefCount;
       }
 
       @Override
-      public int getMaxStoreFileRefCount() {
-        return storeRefCount;
+      public int getMaxCompactedStoreFileRefCount() {
+        return compactedStoreRefCount;
       }
 
     };
@@ -610,4 +610,4 @@ public class TestRegionsRecoveryChore {
 
   }
 
-}
\ No newline at end of file
+}
diff --git 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java
 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java
index e330f4a..b6d714d 100644
--- 
a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java
+++ 
b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/MetricsRegionWrapperStub.java
@@ -66,7 +66,7 @@ public class MetricsRegionWrapperStub implements 
MetricsRegionWrapper {
   }
 
   @Override
-  public long getMaxStoreFileRefCount() {
+  public long getMaxCompactedStoreFileRefCount() {
     return 0;
   }
 
diff --git a/src/main/asciidoc/_chapters/hbase-default.adoc 
b/src/main/asciidoc/_chapters/hbase-default.adoc
index b18cd43..ebed2f2 100644
--- a/src/main/asciidoc/_chapters/hbase-default.adoc
+++ b/src/main/asciidoc/_chapters/hbase-default.adoc
@@ -2047,19 +2047,25 @@ A comma-separated list of
 +
 .Description
 
-      Very large ref count on a file indicates
-      that it is a ref leak on that object. Such files
-      can not be removed even after it is invalidated
-      via compaction. Only way to recover in such
-      scenario is to reopen the region which can
-      release all resources, like the refcount, leases, etc.
-      This config represents Store files Ref Count threshold
-      value considered for reopening regions.
-      Any region with store files ref count > this value
-      would be eligible for reopening by master.
-      Default value -1 indicates this feature is turned off.
-      Only positive integer value should be provided to enable
-      this feature.
+      Very large number of ref count on a compacted
+      store file indicates that it is a ref leak
+      on that object(compacted store file).
+      Such files can not be removed after
+      it is invalidated via compaction.
+      Only way to recover in such scenario is to
+      reopen the region which can release
+      all resources, like the refcount,
+      leases, etc. This config represents Store files Ref
+      Count threshold value considered for reopening
+      regions. Any region with compacted store files
+      ref count > this value would be eligible for
+      reopening by master. Here, we get the max
+      refCount among all refCounts on all
+      compacted away store files that belong to a
+      particular region. Default value -1 indicates
+      this feature is turned off. Only positive
+      integer value should be provided to
+      enable this feature.
 
 +
 .Default

Reply via email to