You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zh...@apache.org on 2021/12/23 04:04:50 UTC

[hbase] branch branch-2.4 updated (647184e -> 7ac7d01)

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

zhangduo pushed a change to branch branch-2.4
in repository https://gitbox.apache.org/repos/asf/hbase.git.


    from 647184e  HBASE-26613 The logic of the method incrementIV in Encryption class has problem (#3968)
     new 8e56696  HBASE-26598 Fix excessive connections in MajorCompactor (#3961)
     new 7ac7d01  HBASE-26609 Round the size to MB or KB at the end of calculation in HRegionServer.createRegionLoad (#3967)

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../hadoop/hbase/regionserver/HRegionServer.java   | 59 +++++++++++++++-------
 .../util/compaction/MajorCompactionRequest.java    | 53 +++++++++----------
 .../util/compaction/MajorCompactionTTLRequest.java | 33 ++++++------
 .../hbase/util/compaction/MajorCompactor.java      |  6 +--
 .../hbase/util/compaction/MajorCompactorTTL.java   |  4 +-
 .../compaction/TestMajorCompactionRequest.java     | 20 +++-----
 .../compaction/TestMajorCompactionTTLRequest.java  | 18 +++----
 7 files changed, 97 insertions(+), 96 deletions(-)

[hbase] 02/02: HBASE-26609 Round the size to MB or KB at the end of calculation in HRegionServer.createRegionLoad (#3967)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 7ac7d014e221a1b4a08b37e7888c74650b9c85c9
Author: Duo Zhang <zh...@apache.org>
AuthorDate: Thu Dec 23 10:37:17 2021 +0800

    HBASE-26609 Round the size to MB or KB at the end of calculation in HRegionServer.createRegionLoad (#3967)
    
    Signed-off-by: Peter Somogyi <ps...@apache.org>
---
 .../hadoop/hbase/regionserver/HRegionServer.java   | 59 +++++++++++++++-------
 1 file changed, 40 insertions(+), 19 deletions(-)

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 97f56bd..8a38135 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
@@ -1708,6 +1708,20 @@ public class HRegionServer extends Thread implements
     return regionServerAccounting;
   }
 
+  // Round the size with KB or MB.
+  // A trick here is that if the sizeInBytes is less than sizeUnit, we will round the size to 1
+  // instead of 0 if it is not 0, to avoid some schedulers think the region has no data. See
+  // HBASE-26340 for more details on why this is important.
+  private static int roundSize(long sizeInByte, int sizeUnit) {
+    if (sizeInByte == 0) {
+      return 0;
+    } else if (sizeInByte < sizeUnit) {
+      return 1;
+    } else {
+      return (int) Math.min(sizeInByte / sizeUnit, Integer.MAX_VALUE);
+    }
+  }
+
   /**
    * @param r Region to get RegionLoad for.
    * @param regionLoadBldr the RegionLoad.Builder, can be null
@@ -1721,16 +1735,14 @@ public class HRegionServer extends Thread implements
     int storefiles = 0;
     int storeRefCount = 0;
     int maxCompactedStoreFileRefCount = 0;
-    int storeUncompressedSizeMB = 0;
-    int storefileSizeMB = 0;
-    long storefileSizeByte = 0L;
-    int memstoreSizeMB = (int) (r.getMemStoreDataSize() / 1024 / 1024);
-    long storefileIndexSizeKB = 0;
-    int rootLevelIndexSizeKB = 0;
-    int totalStaticIndexSizeKB = 0;
-    int totalStaticBloomSizeKB = 0;
-    long totalCompactingKVs = 0;
-    long currentCompactedKVs = 0;
+    long storeUncompressedSize = 0L;
+    long storefileSize = 0L;
+    long storefileIndexSize = 0L;
+    long rootLevelIndexSize = 0L;
+    long totalStaticIndexSize = 0L;
+    long totalStaticBloomSize = 0L;
+    long totalCompactingKVs = 0L;
+    long currentCompactedKVs = 0L;
     List<HStore> storeList = r.getStores();
     stores += storeList.size();
     for (HStore store : storeList) {
@@ -1740,22 +1752,30 @@ public class HRegionServer extends Thread implements
       int currentMaxCompactedStoreFileRefCount = store.getMaxCompactedStoreFileRefCount();
       maxCompactedStoreFileRefCount = Math.max(maxCompactedStoreFileRefCount,
         currentMaxCompactedStoreFileRefCount);
-      storeUncompressedSizeMB += (int) (store.getStoreSizeUncompressed() / 1024 / 1024);
-      storefileSizeByte += store.getStorefilesSize();
+      storeUncompressedSize += store.getStoreSizeUncompressed();
+      storefileSize += store.getStorefilesSize();
       //TODO: storefileIndexSizeKB is same with rootLevelIndexSizeKB?
-      storefileIndexSizeKB += store.getStorefilesRootLevelIndexSize() / 1024;
+      storefileIndexSize += store.getStorefilesRootLevelIndexSize();
       CompactionProgress progress = store.getCompactionProgress();
       if (progress != null) {
         totalCompactingKVs += progress.getTotalCompactingKVs();
         currentCompactedKVs += progress.currentCompactedKVs;
       }
-      rootLevelIndexSizeKB += (int) (store.getStorefilesRootLevelIndexSize() / 1024);
-      totalStaticIndexSizeKB += (int) (store.getTotalStaticIndexSize() / 1024);
-      totalStaticBloomSizeKB += (int) (store.getTotalStaticBloomSize() / 1024);
+      rootLevelIndexSize += store.getStorefilesRootLevelIndexSize();
+      totalStaticIndexSize += store.getTotalStaticIndexSize();
+      totalStaticBloomSize += store.getTotalStaticBloomSize();
     }
-    //HBASE-26340 Fix false "0" size under 1MB
-    storefileSizeMB = storefileSizeByte > 0 && storefileSizeByte <= 1024 * 1024
-       ? 1 : (int) storefileSizeByte / 1024 / 1024;
+
+    int unitMB = 1024 * 1024;
+    int unitKB = 1024;
+
+    int memstoreSizeMB = roundSize(r.getMemStoreDataSize(), unitMB);
+    int storeUncompressedSizeMB = roundSize(storeUncompressedSize, unitMB);
+    int storefileSizeMB = roundSize(storefileSize, unitMB);
+    int storefileIndexSizeKB = roundSize(storefileIndexSize, unitKB);
+    int rootLevelIndexSizeKB = roundSize(rootLevelIndexSize, unitKB);
+    int totalStaticIndexSizeKB = roundSize(totalStaticIndexSize, unitKB);
+    int totalStaticBloomSizeKB = roundSize(totalStaticBloomSize, unitKB);
 
     HDFSBlocksDistribution hdfsBd = r.getHDFSBlocksDistribution();
     float dataLocality = hdfsBd.getBlockLocalityIndex(serverName.getHostname());
@@ -1769,6 +1789,7 @@ public class HRegionServer extends Thread implements
     if (regionSpecifier == null) {
       regionSpecifier = RegionSpecifier.newBuilder();
     }
+
     regionSpecifier.setType(RegionSpecifierType.REGION_NAME);
     regionSpecifier.setValue(UnsafeByteOperations.unsafeWrap(name));
     regionLoadBldr.setRegionSpecifier(regionSpecifier.build())

[hbase] 01/02: HBASE-26598 Fix excessive connections in MajorCompactor (#3961)

Posted by zh...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 8e56696748ac9c818c5500e4d3704124fee8f3cb
Author: Samir Khan <mu...@gmail.com>
AuthorDate: Wed Dec 22 20:29:48 2021 -0600

    HBASE-26598 Fix excessive connections in MajorCompactor (#3961)
    
    Signed-off-by: Duo Zhang <zh...@apache.org>
---
 .../util/compaction/MajorCompactionRequest.java    | 53 ++++++++++------------
 .../util/compaction/MajorCompactionTTLRequest.java | 33 ++++++--------
 .../hbase/util/compaction/MajorCompactor.java      |  6 +--
 .../hbase/util/compaction/MajorCompactorTTL.java   |  4 +-
 .../compaction/TestMajorCompactionRequest.java     | 20 ++++----
 .../compaction/TestMajorCompactionTTLRequest.java  | 18 +++-----
 6 files changed, 57 insertions(+), 77 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionRequest.java
index 22ec6cb..f765b35 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionRequest.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionRequest.java
@@ -22,13 +22,11 @@ import java.util.Collection;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.client.Admin;
 import org.apache.hadoop.hbase.client.Connection;
-import org.apache.hadoop.hbase.client.ConnectionFactory;
 import org.apache.hadoop.hbase.client.RegionInfo;
 import org.apache.hadoop.hbase.regionserver.HRegionFileSystem;
 import org.apache.hadoop.hbase.regionserver.StoreFileInfo;
@@ -45,26 +43,26 @@ class MajorCompactionRequest {
 
   private static final Logger LOG = LoggerFactory.getLogger(MajorCompactionRequest.class);
 
-  protected final Configuration configuration;
+  protected final Connection connection;
   protected final RegionInfo region;
   private Set<String> stores;
 
-  MajorCompactionRequest(Configuration configuration, RegionInfo region) {
-    this.configuration = configuration;
+  MajorCompactionRequest(Connection connection, RegionInfo region) {
+    this.connection = connection;
     this.region = region;
   }
 
-  MajorCompactionRequest(Configuration configuration, RegionInfo region,
+  MajorCompactionRequest(Connection connection, RegionInfo region,
       Set<String> stores) {
-    this(configuration, region);
+    this(connection, region);
     this.stores = stores;
   }
 
-  static Optional<MajorCompactionRequest> newRequest(Configuration configuration, RegionInfo info,
+  static Optional<MajorCompactionRequest> newRequest(Connection connection, RegionInfo info,
       Set<String> stores, long timestamp) throws IOException {
     MajorCompactionRequest request =
-        new MajorCompactionRequest(configuration, info, stores);
-    return request.createRequest(configuration, stores, timestamp);
+        new MajorCompactionRequest(connection, info, stores);
+    return request.createRequest(connection, stores, timestamp);
   }
 
   RegionInfo getRegion() {
@@ -79,28 +77,26 @@ class MajorCompactionRequest {
     this.stores = stores;
   }
 
-  Optional<MajorCompactionRequest> createRequest(Configuration configuration,
+  Optional<MajorCompactionRequest> createRequest(Connection connection,
       Set<String> stores, long timestamp) throws IOException {
     Set<String> familiesToCompact = getStoresRequiringCompaction(stores, timestamp);
     MajorCompactionRequest request = null;
     if (!familiesToCompact.isEmpty()) {
-      request = new MajorCompactionRequest(configuration, region, familiesToCompact);
+      request = new MajorCompactionRequest(connection, region, familiesToCompact);
     }
     return Optional.ofNullable(request);
   }
 
   Set<String> getStoresRequiringCompaction(Set<String> requestedStores, long timestamp)
       throws IOException {
-    try(Connection connection = getConnection(configuration)) {
-      HRegionFileSystem fileSystem = getFileSystem(connection);
-      Set<String> familiesToCompact = Sets.newHashSet();
-      for (String family : requestedStores) {
-        if (shouldCFBeCompacted(fileSystem, family, timestamp)) {
-          familiesToCompact.add(family);
-        }
+    HRegionFileSystem fileSystem = getFileSystem();
+    Set<String> familiesToCompact = Sets.newHashSet();
+    for (String family : requestedStores) {
+      if (shouldCFBeCompacted(fileSystem, family, timestamp)) {
+        familiesToCompact.add(family);
       }
-      return familiesToCompact;
     }
+    return familiesToCompact;
   }
 
   boolean shouldCFBeCompacted(HRegionFileSystem fileSystem, String family, long ts)
@@ -142,10 +138,6 @@ class MajorCompactionRequest {
     return false;
   }
 
-  Connection getConnection(Configuration configuration) throws IOException {
-    return ConnectionFactory.createConnection(configuration);
-  }
-
   protected boolean familyHasReferenceFile(HRegionFileSystem fileSystem, String family, long ts)
       throws IOException {
     List<Path> referenceFiles =
@@ -167,12 +159,13 @@ class MajorCompactionRequest {
     return FSUtils.getReferenceFilePaths(fileSystem, familyDir);
   }
 
-  HRegionFileSystem getFileSystem(Connection connection) throws IOException {
-    Admin admin = connection.getAdmin();
-    return HRegionFileSystem.openRegionFromFileSystem(admin.getConfiguration(),
-      CommonFSUtils.getCurrentFileSystem(admin.getConfiguration()), CommonFSUtils.getTableDir(
-        CommonFSUtils.getRootDir(admin.getConfiguration()), region.getTable()),
-      region, true);
+  HRegionFileSystem getFileSystem() throws IOException {
+    try (Admin admin = connection.getAdmin()) {
+      return HRegionFileSystem.openRegionFromFileSystem(admin.getConfiguration(),
+        CommonFSUtils.getCurrentFileSystem(admin.getConfiguration()),
+        CommonFSUtils.getTableDir(CommonFSUtils.getRootDir(admin.getConfiguration()),
+          region.getTable()), region, true);
+    }
   }
 
   @Override
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionTTLRequest.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionTTLRequest.java
index 0eda459..ecedebe 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionTTLRequest.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactionTTLRequest.java
@@ -22,7 +22,6 @@ import java.io.IOException;
 import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;
 import org.apache.hadoop.hbase.client.Connection;
@@ -44,40 +43,38 @@ public class MajorCompactionTTLRequest extends MajorCompactionRequest {
 
   private static final Logger LOG = LoggerFactory.getLogger(MajorCompactionTTLRequest.class);
 
-  MajorCompactionTTLRequest(Configuration conf, RegionInfo region) {
-    super(conf, region);
+  MajorCompactionTTLRequest(Connection connection, RegionInfo region) {
+    super(connection, region);
   }
 
-  static Optional<MajorCompactionRequest> newRequest(Configuration conf, RegionInfo info,
+  static Optional<MajorCompactionRequest> newRequest(Connection connection, RegionInfo info,
       TableDescriptor htd) throws IOException {
-    MajorCompactionTTLRequest request = new MajorCompactionTTLRequest(conf, info);
-    return request.createRequest(conf, htd);
+    MajorCompactionTTLRequest request = new MajorCompactionTTLRequest(connection, info);
+    return request.createRequest(connection, htd);
   }
 
-  private Optional<MajorCompactionRequest> createRequest(Configuration conf, TableDescriptor htd)
+  private Optional<MajorCompactionRequest> createRequest(Connection connection, TableDescriptor htd)
       throws IOException {
     Map<String, Long> familiesToCompact = getStoresRequiringCompaction(htd);
     MajorCompactionRequest request = null;
     if (!familiesToCompact.isEmpty()) {
       LOG.debug("Compaction families for region: " + region + " CF: " + familiesToCompact.keySet());
-      request = new MajorCompactionTTLRequest(conf, region);
+      request = new MajorCompactionTTLRequest(connection, region);
     }
     return Optional.ofNullable(request);
   }
 
   Map<String, Long> getStoresRequiringCompaction(TableDescriptor htd) throws IOException {
-    try(Connection connection = getConnection(configuration)) {
-      HRegionFileSystem fileSystem = getFileSystem(connection);
-      Map<String, Long> familyTTLMap = Maps.newHashMap();
-      for (ColumnFamilyDescriptor descriptor : htd.getColumnFamilies()) {
-        long ts = getColFamilyCutoffTime(descriptor);
-        // If the table's TTL is forever, lets not compact any of the regions.
-        if (ts > 0 && shouldCFBeCompacted(fileSystem, descriptor.getNameAsString(), ts)) {
-          familyTTLMap.put(descriptor.getNameAsString(), ts);
-        }
+    HRegionFileSystem fileSystem = getFileSystem();
+    Map<String, Long> familyTTLMap = Maps.newHashMap();
+    for (ColumnFamilyDescriptor descriptor : htd.getColumnFamilies()) {
+      long ts = getColFamilyCutoffTime(descriptor);
+      // If the table's TTL is forever, lets not compact any of the regions.
+      if (ts > 0 && shouldCFBeCompacted(fileSystem, descriptor.getNameAsString(), ts)) {
+        familyTTLMap.put(descriptor.getNameAsString(), ts);
       }
-      return familyTTLMap;
     }
+    return familyTTLMap;
   }
 
   // If the CF has no TTL, return -1, else return the current time - TTL.
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactor.java
index 370a3e8..d4dc419 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactor.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactor.java
@@ -201,8 +201,7 @@ public class MajorCompactor extends Configured implements Tool {
 
   protected Optional<MajorCompactionRequest> getMajorCompactionRequest(RegionInfo hri)
       throws IOException {
-    return MajorCompactionRequest.newRequest(connection.getConfiguration(), hri, storesToCompact,
-            timestamp);
+    return MajorCompactionRequest.newRequest(connection, hri, storesToCompact, timestamp);
   }
 
   private Collection<ServerName> getServersToCompact(Set<ServerName> snSet) {
@@ -351,8 +350,7 @@ public class MajorCompactor extends Configured implements Tool {
       for (HRegionLocation location : locations) {
         if (location.getRegion().getRegionId() > timestamp) {
           Optional<MajorCompactionRequest> compactionRequest = MajorCompactionRequest
-              .newRequest(connection.getConfiguration(), location.getRegion(), storesToCompact,
-                  timestamp);
+              .newRequest(connection, location.getRegion(), storesToCompact, timestamp);
           compactionRequest.ifPresent(request -> clusterCompactionQueues
               .addToCompactionQueue(location.getServerName(), request));
         }
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactorTTL.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactorTTL.java
index 7c92c53..c6ea5af 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactorTTL.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/util/compaction/MajorCompactorTTL.java
@@ -76,7 +76,7 @@ public class MajorCompactorTTL extends MajorCompactor {
   @Override
   protected Optional<MajorCompactionRequest> getMajorCompactionRequest(RegionInfo hri)
       throws IOException {
-    return MajorCompactionTTLRequest.newRequest(connection.getConfiguration(), hri, htd);
+    return MajorCompactionTTLRequest.newRequest(connection, hri, htd);
   }
 
   @Override
@@ -171,4 +171,4 @@ public class MajorCompactorTTL extends MajorCompactor {
   public static void main(String[] args) throws Exception {
     ToolRunner.run(HBaseConfiguration.create(), new MajorCompactorTTL(), args);
   }
-}
\ No newline at end of file
+}
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.java
index c125c6e..54f00f9 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionRequest.java
@@ -21,7 +21,6 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.isA;
 import static org.mockito.Matchers.anyString;
 import static org.mockito.Mockito.doReturn;
@@ -36,7 +35,6 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.apache.commons.lang3.RandomStringUtils;
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileStatus;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -81,13 +79,13 @@ public class TestMajorCompactionRequest {
     List<StoreFileInfo> storeFiles = mockStoreFiles(regionStoreDir, 5, 10);
     MajorCompactionRequest request = makeMockRequest(storeFiles, false);
     Optional<MajorCompactionRequest> result =
-        request.createRequest(mock(Configuration.class), Sets.newHashSet(FAMILY), 100);
+        request.createRequest(mock(Connection.class), Sets.newHashSet(FAMILY), 100);
     assertTrue(result.isPresent());
 
     // store files newer than timestamp
     storeFiles = mockStoreFiles(regionStoreDir, 5, 101);
     request = makeMockRequest(storeFiles, false);
-    result = request.createRequest(mock(Configuration.class), Sets.newHashSet(FAMILY), 100);
+    result = request.createRequest(mock(Connection.class), Sets.newHashSet(FAMILY), 100);
     assertFalse(result.isPresent());
   }
 
@@ -100,19 +98,18 @@ public class TestMajorCompactionRequest {
     HRegion region =
         HBaseTestingUtility.createRegionAndWAL(hri, rootRegionDir, UTILITY.getConfiguration(), htd);
 
-    Configuration configuration = mock(Configuration.class);
+    Connection connection = mock(Connection.class);
     // the reference file timestamp is newer
     List<StoreFileInfo> storeFiles = mockStoreFiles(regionStoreDir, 4, 101);
     List<Path> paths = storeFiles.stream().map(StoreFileInfo::getPath).collect(Collectors.toList());
     // the files that are referenced are older, thus we still compact.
     HRegionFileSystem fileSystem =
         mockFileSystem(region.getRegionInfo(), true, storeFiles, 50);
-    MajorCompactionRequest majorCompactionRequest = spy(new MajorCompactionRequest(configuration,
+    MajorCompactionRequest majorCompactionRequest = spy(new MajorCompactionRequest(connection,
         region.getRegionInfo(), Sets.newHashSet(FAMILY)));
-    doReturn(mock(Connection.class)).when(majorCompactionRequest).getConnection(eq(configuration));
     doReturn(paths).when(majorCompactionRequest).getReferenceFilePaths(any(FileSystem.class),
         any(Path.class));
-    doReturn(fileSystem).when(majorCompactionRequest).getFileSystem(any(Connection.class));
+    doReturn(fileSystem).when(majorCompactionRequest).getFileSystem();
     Set<String> result =
         majorCompactionRequest.getStoresRequiringCompaction(Sets.newHashSet("a"), 100);
     assertEquals(FAMILY, Iterables.getOnlyElement(result));
@@ -158,16 +155,15 @@ public class TestMajorCompactionRequest {
 
   private MajorCompactionRequest makeMockRequest(List<StoreFileInfo> storeFiles,
       boolean references) throws IOException {
-    Configuration configuration = mock(Configuration.class);
+    Connection connection = mock(Connection.class);
     RegionInfo regionInfo = mock(RegionInfo.class);
     when(regionInfo.getEncodedName()).thenReturn("HBase");
     when(regionInfo.getTable()).thenReturn(TableName.valueOf("foo"));
     MajorCompactionRequest request =
-        new MajorCompactionRequest(configuration, regionInfo, Sets.newHashSet("a"));
+        new MajorCompactionRequest(connection, regionInfo, Sets.newHashSet("a"));
     MajorCompactionRequest spy = spy(request);
     HRegionFileSystem fileSystem = mockFileSystem(regionInfo, references, storeFiles);
-    doReturn(fileSystem).when(spy).getFileSystem(isA(Connection.class));
-    doReturn(mock(Connection.class)).when(spy).getConnection(eq(configuration));
+    doReturn(fileSystem).when(spy).getFileSystem();
     return spy;
   }
 }
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionTTLRequest.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionTTLRequest.java
index f15b887..c9dc6f5 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionTTLRequest.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/util/compaction/TestMajorCompactionTTLRequest.java
@@ -20,8 +20,6 @@ package org.apache.hadoop.hbase.util.compaction;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Matchers.isA;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -31,7 +29,6 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Optional;
 
-import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HBaseClassTestRule;
 import org.apache.hadoop.hbase.TableName;
@@ -72,29 +69,28 @@ public class TestMajorCompactionTTLRequest extends TestMajorCompactionRequest {
     MajorCompactionTTLRequest request = makeMockRequest(storeFiles);
     // All files are <= 100, so region should not be compacted.
     Optional<MajorCompactionRequest> result =
-        request.createRequest(mock(Configuration.class), Sets.newHashSet(FAMILY), 10);
+        request.createRequest(mock(Connection.class), Sets.newHashSet(FAMILY), 10);
     assertFalse(result.isPresent());
 
     // All files are <= 100, so region should not be compacted yet.
-    result = request.createRequest(mock(Configuration.class), Sets.newHashSet(FAMILY), 100);
+    result = request.createRequest(mock(Connection.class), Sets.newHashSet(FAMILY), 100);
     assertFalse(result.isPresent());
 
     // All files are <= 100, so they should be considered for compaction
-    result = request.createRequest(mock(Configuration.class), Sets.newHashSet(FAMILY), 101);
+    result = request.createRequest(mock(Connection.class), Sets.newHashSet(FAMILY), 101);
     assertTrue(result.isPresent());
   }
 
   private MajorCompactionTTLRequest makeMockRequest(List<StoreFileInfo> storeFiles)
       throws IOException {
-    Configuration configuration = mock(Configuration.class);
+    Connection connection = mock(Connection.class);
     RegionInfo regionInfo = mock(RegionInfo.class);
     when(regionInfo.getEncodedName()).thenReturn("HBase");
     when(regionInfo.getTable()).thenReturn(TableName.valueOf("foo"));
-    MajorCompactionTTLRequest request = new MajorCompactionTTLRequest(configuration, regionInfo);
+    MajorCompactionTTLRequest request = new MajorCompactionTTLRequest(connection, regionInfo);
     MajorCompactionTTLRequest spy = spy(request);
     HRegionFileSystem fileSystem = mockFileSystem(regionInfo, false, storeFiles);
-    doReturn(fileSystem).when(spy).getFileSystem(isA(Connection.class));
-    doReturn(mock(Connection.class)).when(spy).getConnection(eq(configuration));
+    doReturn(fileSystem).when(spy).getFileSystem();
     return spy;
   }
-}
\ No newline at end of file
+}