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

brfrn169 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 043a9e8  HBASE-24529 hbase.rs.evictblocksonclose is not honored when 
removing compacted files and closing the storefiles (#1881)
043a9e8 is described below

commit 043a9e862f59db5e70d208aa51a9c680ea0c3993
Author: Toshihiro Suzuki <brfrn...@gmail.com>
AuthorDate: Fri Jun 12 18:59:03 2020 +0900

    HBASE-24529 hbase.rs.evictblocksonclose is not honored when removing 
compacted files and closing the storefiles (#1881)
    
    Signed-off-by: Anoop Sam John <anoop.hb...@gmail.com>
---
 .../java/org/apache/hadoop/hbase/regionserver/HStore.java  | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

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 8acd5e2..b94de5a 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
@@ -636,7 +636,8 @@ public class HStore implements Store, HeapSize, 
StoreConfigInformation,
       for (HStoreFile storeFile : results) {
         if (compactedStoreFiles.contains(storeFile.getPath().getName())) {
           LOG.warn("Clearing the compacted storefile {} from {}", storeFile, 
this);
-          storeFile.getReader().close(true);
+          storeFile.getReader().close(storeFile.getCacheConf() != null ?
+            storeFile.getCacheConf().shouldEvictOnClose() : true);
           filesToRemove.add(storeFile);
         }
       }
@@ -970,7 +971,8 @@ public class HStore implements Store, HeapSize, 
StoreConfigInformation,
           storeEngine.getStoreFileManager().clearCompactedFiles();
       // clear the compacted files
       if (CollectionUtils.isNotEmpty(compactedfiles)) {
-        removeCompactedfiles(compactedfiles);
+        removeCompactedfiles(compactedfiles, cacheConf != null ?
+          cacheConf.shouldEvictOnClose() : true);
       }
       if (!result.isEmpty()) {
         // initialize the thread pool for closing store files in parallel.
@@ -2719,7 +2721,7 @@ public class HStore implements Store, HeapSize, 
StoreConfigInformation,
         lock.readLock().unlock();
       }
       if (CollectionUtils.isNotEmpty(copyCompactedfiles)) {
-        removeCompactedfiles(copyCompactedfiles);
+        removeCompactedfiles(copyCompactedfiles, true);
       }
     } finally {
       archiveLock.unlock();
@@ -2729,8 +2731,10 @@ public class HStore implements Store, HeapSize, 
StoreConfigInformation,
   /**
    * Archives and removes the compacted files
    * @param compactedfiles The compacted files in this store that are not 
active in reads
+   * @param evictOnClose true if blocks should be evicted from the cache when 
an HFile reader is
+   *   closed, false if not
    */
-  private void removeCompactedfiles(Collection<HStoreFile> compactedfiles)
+  private void removeCompactedfiles(Collection<HStoreFile> compactedfiles, 
boolean evictOnClose)
       throws IOException {
     final List<HStoreFile> filesToRemove = new 
ArrayList<>(compactedfiles.size());
     final List<Long> storeFileSizes = new ArrayList<>(compactedfiles.size());
@@ -2755,7 +2759,7 @@ public class HStore implements Store, HeapSize, 
StoreConfigInformation,
             LOG.trace("Closing and archiving the file {}", file);
             // Copy the file size before closing the reader
             final long length = r.length();
-            r.close(true);
+            r.close(evictOnClose);
             // Just close and return
             filesToRemove.add(file);
             // Only add the length if we successfully added the file to 
`filesToRemove`

Reply via email to