You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bh...@apache.org on 2020/07/30 17:35:24 UTC

[hbase] branch branch-1 updated: HBASE-24788: Fix the connection leaks on getting hbase admin from unclosed connection (#2170)

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

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


The following commit(s) were added to refs/heads/branch-1 by this push:
     new ac576d2  HBASE-24788: Fix the connection leaks on getting hbase admin from unclosed connection (#2170)
ac576d2 is described below

commit ac576d23e5cd628b396ae4cd4011ce9a1d80a8f2
Author: Bharath Vissapragada <bh...@apache.org>
AuthorDate: Thu Jul 30 10:35:11 2020 -0700

    HBASE-24788: Fix the connection leaks on getting hbase admin from unclosed connection (#2170)
    
    Rewrote the patch for branch-1 since master has significanly diverged.
    
    (cherry picked from commit dc5ef7af1f8b9e386495a73924c9442203f65a77)
    
    Co-authored-by: Bharath Vissapragada <bh...@apache.org>
    
     Signed-off-by: Bharath Vissapragada <bh...@apache.org>
     Signed-off-by: Sandeep Pal <50...@users.noreply.github.com>
    
    Co-authored-by: Sandeep Pal <50...@users.noreply.github.com>
---
 .../org/apache/hadoop/hbase/mapreduce/TableOutputFormat.java     | 4 ++--
 .../org/apache/hadoop/hbase/replication/TestReplicationBase.java | 8 +++-----
 .../hadoop/hbase/replication/TestReplicationSmallTests.java      | 6 ++----
 .../hadoop/hbase/security/access/TestNamespaceCommands.java      | 9 ++-------
 4 files changed, 9 insertions(+), 18 deletions(-)

diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.java
index 443d4b2..2109e05 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/mapreduce/TableOutputFormat.java
@@ -173,8 +173,8 @@ implements Configurable {
   @Override
   public void checkOutputSpecs(JobContext context) throws IOException,
       InterruptedException {
-
-    try (Admin admin = ConnectionFactory.createConnection(getConf()).getAdmin()) {
+    try (Connection conn = ConnectionFactory.createConnection(getConf());
+         Admin admin = conn.getAdmin()) {
       TableName tableName = TableName.valueOf(this.conf.get(OUTPUT_TABLE));
       if (!admin.tableExists(tableName)) {
         throw new TableNotFoundException("Can't write, table does not exist:" +
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java
index ddd3195..b0f3f34 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationBase.java
@@ -145,12 +145,10 @@ public class TestReplicationBase {
     table.addFamily(fam);
     fam = new HColumnDescriptor(noRepfamName);
     table.addFamily(fam);
-    Connection connection1 = ConnectionFactory.createConnection(conf1);
-    Connection connection2 = ConnectionFactory.createConnection(conf2);
-    try (Admin admin1 = connection1.getAdmin()) {
+    Connection connection1 = utility1.getConnection();
+    Connection connection2 = utility2.getConnection();
+    try (Admin admin1 = connection1.getAdmin(); Admin admin2 = connection2.getAdmin()) {
       admin1.createTable(table, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);
-    }
-    try (Admin admin2 = connection2.getAdmin()) {
       admin2.createTable(table, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);
     }
     utility1.waitUntilAllRegionsAssigned(tableName);
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java
index f94ad5a..0bd339a 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/replication/TestReplicationSmallTests.java
@@ -518,12 +518,10 @@ public class TestReplicationSmallTests extends TestReplicationBase {
       fam.setScope(HConstants.REPLICATION_SCOPE_GLOBAL);
       table.addFamily(fam);
 
-      Connection connection1 = ConnectionFactory.createConnection(conf1);
-      Connection connection2 = ConnectionFactory.createConnection(conf2);
-      try (Admin admin1 = connection1.getAdmin()) {
+      try (Admin admin1 =  utility1.getConnection().getAdmin()) {
         admin1.createTable(table, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);
       }
-      try (Admin admin2 = connection2.getAdmin()) {
+      try (Admin admin2 = utility2.getConnection().getAdmin()) {
         admin2.createTable(table, HBaseTestingUtility.KEYS_FOR_HBA_CREATE_TABLE);
       }
       utility1.waitUntilAllRegionsAssigned(tablename);
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java
index a20ceeb..72cc7e6 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/security/access/TestNamespaceCommands.java
@@ -303,14 +303,9 @@ public class TestNamespaceCommands extends SecureTestUtil {
     AccessTestAction listAction = new AccessTestAction() {
       @Override
       public Object run() throws Exception {
-        Connection unmanagedConnection =
-            ConnectionFactory.createConnection(UTIL.getConfiguration());
-        Admin admin = unmanagedConnection.getAdmin();
-        try {
+        try (Connection conn = ConnectionFactory.createConnection(UTIL.getConfiguration());
+            Admin admin = conn.getAdmin()) {
           return Arrays.asList(admin.listNamespaceDescriptors());
-        } finally {
-          admin.close();
-          unmanagedConnection.close();
         }
       }
     };