You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by va...@apache.org on 2017/06/14 00:56:53 UTC

[15/52] [abbrv] sentry git commit: SENTRY-1759: UpdatableCache leaks connections (Alex Kolbasov, reviewed by: Vamsee Yarlagadda, Na Li, Sergio Pena and Kalyan Kalvagadda)

SENTRY-1759: UpdatableCache leaks connections (Alex Kolbasov, reviewed by: Vamsee Yarlagadda, Na Li, Sergio Pena and Kalyan Kalvagadda)

Change-Id: Ifc8462e9a9f57cc906a46de33c29b5235f70631a
Reviewed-on: http://gerrit.sjc.cloudera.com:8080/22476
Tested-by: Jenkins User
Reviewed-by: Alexander Kolbasov <ak...@cloudera.com>


Project: http://git-wip-us.apache.org/repos/asf/sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/d8e22821
Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/d8e22821
Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/d8e22821

Branch: refs/for/cdh5-1.5.1_ha
Commit: d8e228212fa2d87c8850a4814c5b9b6f6aca8565
Parents: a32f977
Author: Alexander Kolbasov <ak...@cloudera.com>
Authored: Wed May 10 13:50:59 2017 -0700
Committer: Alexander Kolbasov <ak...@cloudera.com>
Committed: Wed May 10 16:43:56 2017 -0700

----------------------------------------------------------------------
 .../provider/db/generic/UpdatableCache.java     | 35 ++++++++++++--------
 1 file changed, 21 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/sentry/blob/d8e22821/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/UpdatableCache.java
----------------------------------------------------------------------
diff --git a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/UpdatableCache.java b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/UpdatableCache.java
index f272630..a126f35 100644
--- a/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/UpdatableCache.java
+++ b/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/generic/UpdatableCache.java
@@ -94,22 +94,29 @@ class UpdatableCache implements TableCache {
     String requestor;
     requestor = UserGroupInformation.getLoginUser().getShortUserName();
 
-    final SentryGenericServiceClient client = getClient();
-    final Set<TSentryRole> tSentryRoles = client.listAllRoles(requestor, componentType);
-
-    for (TSentryRole tSentryRole : tSentryRoles) {
-      final String roleName = tSentryRole.getRoleName();
-      final Set<TSentryPrivilege> tSentryPrivileges = client.listPrivilegesByRoleName(requestor, roleName, componentType, serviceName);
-      for (String group : tSentryRole.getGroups()) {
-        Set<String> currentPrivileges = tempCache.get(group, roleName);
-        if (currentPrivileges == null) {
-          currentPrivileges = new HashSet<>();
-          tempCache.put(group, roleName, currentPrivileges);
-        }
-        for (TSentryPrivilege tSentryPrivilege : tSentryPrivileges) {
-          currentPrivileges.add(tSentryPrivilegeConverter.toString(tSentryPrivilege));
+    SentryGenericServiceClient client = null;
+    try {
+      client = getClient(); // will be closed in finaly clause
+      final Set<TSentryRole> tSentryRoles = client.listAllRoles(requestor, componentType);
+
+      for (TSentryRole tSentryRole : tSentryRoles) {
+        final String roleName = tSentryRole.getRoleName();
+        final Set<TSentryPrivilege> tSentryPrivileges = client.listPrivilegesByRoleName(requestor, roleName, componentType, serviceName);
+        for (String group : tSentryRole.getGroups()) {
+          Set<String> currentPrivileges = tempCache.get(group, roleName);
+          if (currentPrivileges == null) {
+            currentPrivileges = new HashSet<>();
+            tempCache.put(group, roleName, currentPrivileges);
+          }
+          for (TSentryPrivilege tSentryPrivilege : tSentryPrivileges) {
+            currentPrivileges.add(tSentryPrivilegeConverter.toString(tSentryPrivilege));
+          }
         }
       }
+    } finally {
+      if (client != null) {
+        client.close();
+      }
     }
     return tempCache;
   }