You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by rm...@apache.org on 2016/03/15 00:10:29 UTC
incubator-ranger git commit: RANGER-878:Improve error logging and
Ranger UI error message when test connection and lookup is done
Repository: incubator-ranger
Updated Branches:
refs/heads/master 1fe2d3ec6 -> 3a21f7449
RANGER-878:Improve error logging and Ranger UI error message when test connection and lookup is done
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/3a21f744
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/3a21f744
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/3a21f744
Branch: refs/heads/master
Commit: 3a21f74494ad253afb7919939491258a52a4d655
Parents: 1fe2d3e
Author: rmani <rm...@hortonworks.com>
Authored: Mon Mar 14 15:22:56 2016 -0700
Committer: rmani <rm...@hortonworks.com>
Committed: Mon Mar 14 15:22:56 2016 -0700
----------------------------------------------------------------------
.../apache/ranger/plugin/client/BaseClient.java | 6 +-
.../ranger/plugin/client/HadoopException.java | 25 ++
.../services/hbase/RangerServiceHBase.java | 3 +-
.../services/hbase/client/HBaseClient.java | 29 ++-
.../services/hbase/client/HBaseResourceMgr.java | 3 +-
.../ranger/services/hdfs/RangerServiceHdfs.java | 5 +-
.../ranger/services/hdfs/client/HdfsClient.java | 55 +++--
.../services/hdfs/client/HdfsConnectionMgr.java | 13 +-
.../services/hdfs/client/HdfsResourceMgr.java | 9 +-
.../ranger/services/hive/RangerServiceHive.java | 3 +-
.../ranger/services/hive/client/HiveClient.java | 226 +++++++++++++------
.../services/hive/client/HiveResourceMgr.java | 4 +-
.../ranger/services/knox/client/KnoxClient.java | 3 +-
.../ranger/services/yarn/client/YarnClient.java | 3 +-
.../java/org/apache/ranger/biz/ServiceMgr.java | 2 +-
.../org/apache/ranger/common/TimedExecutor.java | 15 +-
.../services/storm/client/StormClient.java | 3 +-
17 files changed, 284 insertions(+), 123 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/agents-common/src/main/java/org/apache/ranger/plugin/client/BaseClient.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/client/BaseClient.java b/agents-common/src/main/java/org/apache/ranger/plugin/client/BaseClient.java
index 0242caa..df69e2a 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/client/BaseClient.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/client/BaseClient.java
@@ -78,7 +78,7 @@ public abstract class BaseClient {
String msgDesc = "Unable to find login username for hadoop environment, ["
+ serviceName + "]";
HadoopException hdpException = new HadoopException(msgDesc);
- hdpException.generateResponseDataMap(false, msgDesc, msgDesc + errMsg,
+ hdpException.generateResponseDataMap(false, msgDesc + errMsg, msgDesc + errMsg,
null, null);
throw hdpException;
@@ -110,14 +110,14 @@ public abstract class BaseClient {
+ serviceName + "]";
HadoopException hdpException = new HadoopException(msgDesc, ioe);
- hdpException.generateResponseDataMap(false, getMessage(ioe),
+ hdpException.generateResponseDataMap(false, getMessage(ioe) + errMsg,
msgDesc + errMsg, null, null);
throw hdpException;
} catch (SecurityException se) {
String msgDesc = "Unable to login to Hadoop environment ["
+ serviceName + "]";
HadoopException hdpException = new HadoopException(msgDesc, se);
- hdpException.generateResponseDataMap(false, getMessage(se),
+ hdpException.generateResponseDataMap(false, getMessage(se) + errMsg,
msgDesc + errMsg, null, null);
throw hdpException;
} finally {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/agents-common/src/main/java/org/apache/ranger/plugin/client/HadoopException.java
----------------------------------------------------------------------
diff --git a/agents-common/src/main/java/org/apache/ranger/plugin/client/HadoopException.java b/agents-common/src/main/java/org/apache/ranger/plugin/client/HadoopException.java
index 1ab2d4b..0f561d0 100644
--- a/agents-common/src/main/java/org/apache/ranger/plugin/client/HadoopException.java
+++ b/agents-common/src/main/java/org/apache/ranger/plugin/client/HadoopException.java
@@ -19,7 +19,11 @@
package org.apache.ranger.plugin.client;
+import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
+
+import org.apache.commons.lang.StringUtils;
public class HadoopException extends RuntimeException {
@@ -57,4 +61,25 @@ public class HadoopException extends RuntimeException {
responseData.put("fieldName", fieldName);
}
+ public String getMessage(Throwable excp) {
+ List<String> errList = new ArrayList<String>();
+ while (excp != null) {
+ if (!errList.contains(excp.getMessage() + ". \n")) {
+ if (excp.getMessage() != null && !(excp.getMessage().equalsIgnoreCase(""))) {
+ errList.add(excp.getMessage() + ". \n");
+ }
+ }
+ excp = excp.getCause();
+ }
+ return StringUtils.join(errList, "");
+ }
+
+ public HashMap<String,Object> getResponseData() {
+ return responseData;
+ }
+
+ public void setReponseData(HashMap<String,Object> responseData) {
+ this.responseData = responseData;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hbase-agent/src/main/java/org/apache/ranger/services/hbase/RangerServiceHBase.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/main/java/org/apache/ranger/services/hbase/RangerServiceHBase.java b/hbase-agent/src/main/java/org/apache/ranger/services/hbase/RangerServiceHBase.java
index 9832991..e5031af 100644
--- a/hbase-agent/src/main/java/org/apache/ranger/services/hbase/RangerServiceHBase.java
+++ b/hbase-agent/src/main/java/org/apache/ranger/services/hbase/RangerServiceHBase.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.ranger.plugin.client.HadoopException;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.service.RangerBaseService;
@@ -56,7 +57,7 @@ public class RangerServiceHBase extends RangerBaseService {
if ( configs != null) {
try {
ret = HBaseResourceMgr.connectionTest(serviceName, configs);
- } catch (Exception e) {
+ } catch (HadoopException e) {
LOG.error("<== RangerServiceHBase.validateConfig() Error:" + e);
throw e;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseClient.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseClient.java b/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseClient.java
index f28a598..1979905 100644
--- a/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseClient.java
+++ b/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseClient.java
@@ -90,8 +90,8 @@ public class HBaseClient extends BaseClient {
return connectionProp;
}
- public static HashMap<String, Object> connectionTest(String dataSource,
- Map<String, String> configs) {
+ public static HashMap<String, Object> connectionTest (String dataSource,
+ Map<String, String> configs) throws Exception {
HashMap<String, Object> responseData = new HashMap<String, Object>();
final String errMsg = " You can still save the repository and start creating "
@@ -102,7 +102,12 @@ public class HBaseClient extends BaseClient {
HBaseClient connectionObj = new HBaseClient(dataSource,
configs);
if (connectionObj != null) {
- connectivityStatus = connectionObj.getHBaseStatus();
+ try {
+ connectivityStatus = connectionObj.getHBaseStatus();
+ } catch ( HadoopException e) {
+ LOG.error("<== HBaseClient.testConnection(): Unable to retrieve any databases using given parameters", e);
+ throw e;
+ }
}
if (connectivityStatus) {
@@ -117,7 +122,7 @@ public class HBaseClient extends BaseClient {
return responseData;
}
- public boolean getHBaseStatus() {
+ public boolean getHBaseStatus() throws HadoopException{
boolean hbaseStatus = false;
subj = getLoginSubject();
final String errMsg = " You can still save the repository and start creating "
@@ -219,7 +224,11 @@ public class HBaseClient extends BaseClient {
}
}
- public List<String> getTableList(final String tableNameMatching, final List<String> existingTableList ) {
+ public List<String> getTableList(final String tableNameMatching, final List<String> existingTableList ) throws HadoopException {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> HbaseClient.getTableList() tableNameMatching " + tableNameMatching + " ExisitingTableList " + existingTableList);
+ }
+
List<String> ret = null ;
final String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
@@ -310,11 +319,18 @@ public class HBaseClient extends BaseClient {
}) ;
}
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== HbaseClient.getTableList() " + ret);
+ }
return ret ;
}
public List<String> getColumnFamilyList(final String columnFamilyMatching, final List<String> tableList,final List<String> existingColumnFamilies) {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("==> HbaseClient.getColumnFamilyList() columnFamilyMatching " + columnFamilyMatching + " ExisitingTableList " + tableList + "existingColumnFamilies " + existingColumnFamilies);
+ }
+
List<String> ret = null ;
final String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
@@ -431,6 +447,9 @@ public class HBaseClient extends BaseClient {
throw hdpException;
}
}
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("<== HbaseClient.getColumnFamilyList() " + ret);
+ }
return ret ;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseResourceMgr.java
----------------------------------------------------------------------
diff --git a/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseResourceMgr.java b/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseResourceMgr.java
index 094385c..f32b8ee 100644
--- a/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseResourceMgr.java
+++ b/hbase-agent/src/main/java/org/apache/ranger/services/hbase/client/HBaseResourceMgr.java
@@ -26,6 +26,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
+import org.apache.ranger.plugin.client.HadoopException;
import org.apache.ranger.plugin.service.ResourceLookupContext;
import org.apache.ranger.plugin.util.TimedEventUtil;
@@ -45,7 +46,7 @@ public class HBaseResourceMgr {
try {
ret = HBaseClient.connectionTest(serviceName, configs);
- } catch (Exception e) {
+ } catch (HadoopException e) {
LOG.error("<== HBaseResourceMgr.connectionTest() Error: " + e) ;
throw e;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/RangerServiceHdfs.java
----------------------------------------------------------------------
diff --git a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/RangerServiceHdfs.java b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/RangerServiceHdfs.java
index 5f07740..bdf29f7 100644
--- a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/RangerServiceHdfs.java
+++ b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/RangerServiceHdfs.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.ranger.plugin.client.HadoopException;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.service.RangerBaseService;
@@ -55,8 +56,8 @@ public class RangerServiceHdfs extends RangerBaseService {
if ( configs != null) {
try {
ret = HdfsResourceMgr.connectionTest(serviceName, configs);
- } catch (Exception e) {
- LOG.error("<== RangerServiceHdfs.validateConfig Error:" + e);
+ } catch (HadoopException e) {
+ LOG.error("<== RangerServiceHdfs.validateConfig Error: " + e.getMessage(),e);
throw e;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsClient.java
----------------------------------------------------------------------
diff --git a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsClient.java b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsClient.java
index 57b260d..128927d 100644
--- a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsClient.java
+++ b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsClient.java
@@ -23,6 +23,7 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.UnknownHostException;
import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
import java.util.*;
import javax.security.auth.Subject;
@@ -61,7 +62,7 @@ public class HdfsClient extends BaseClient {
}
- private List<String> listFilesInternal(String baseDir, String fileMatching, final List<String> pathList) {
+ private List<String> listFilesInternal(String baseDir, String fileMatching, final List<String> pathList) throws HadoopException {
List<String> fileList = new ArrayList<String>() ;
String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
@@ -155,14 +156,13 @@ public class HdfsClient extends BaseClient {
}
- public List<String> listFiles(final String baseDir, final String fileMatching, final List<String> pathList) {
+ public List<String> listFiles(final String baseDir, final String fileMatching, final List<String> pathList) throws Exception {
- PrivilegedAction<List<String>> action = new PrivilegedAction<List<String>>() {
+ PrivilegedExceptionAction<List<String>> action = new PrivilegedExceptionAction<List<String>>() {
@Override
- public List<String> run() {
+ public List<String> run() throws Exception {
return listFilesInternal(baseDir, fileMatching, pathList) ;
}
-
};
return Subject.doAs(getLoginSubject(),action) ;
}
@@ -179,7 +179,12 @@ public class HdfsClient extends BaseClient {
String fileNameToMatch = (args.length == 2 ? null : args[2]) ;
HdfsClient fs = new HdfsClient(repositoryName, null) ;
- List<String> fsList = fs.listFiles(baseDir, fileNameToMatch,null) ;
+ List<String> fsList = null;
+ try {
+ fsList = fs.listFiles(baseDir, fileNameToMatch,null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
if (fsList != null && fsList.size() > 0) {
for(String s : fsList) {
System.out.println(s) ;
@@ -191,8 +196,9 @@ public class HdfsClient extends BaseClient {
}
public static HashMap<String, Object> connectionTest(String serviceName,
- Map<String, String> configs) {
+ Map<String, String> configs) throws Exception {
+ LOG.info("===> HdfsClient.testConnection()" );
HashMap<String, Object> responseData = new HashMap<String, Object>();
boolean connectivityStatus = false;
@@ -204,29 +210,38 @@ public class HdfsClient extends BaseClient {
}
if (validateConfigsMsg == null) {
+
HdfsClient connectionObj = new HdfsClient(serviceName, configs);
if (connectionObj != null) {
- List<String> testResult = connectionObj.listFiles("/", null,null);
- if (testResult != null && testResult.size() != 0) {
+ List<String> testResult = null;
+ try {
+ testResult = connectionObj.listFiles("/", null,null);
+ } catch (HadoopException e) {
+ LOG.error("<== HdfsClient.testConnection() error " + e.getMessage(),e );
+ throw e;
+ }
+
+ if (testResult != null && testResult.size() != 0) {
connectivityStatus = true;
- }
- }
+ }
+ }
}
-
+ String testconnMsg = null;
if (connectivityStatus) {
- String successMsg = "ConnectionTest Successful";
- generateResponseDataMap(connectivityStatus, successMsg, successMsg,
+ testconnMsg = "ConnectionTest Successful";
+ generateResponseDataMap(connectivityStatus, testconnMsg, testconnMsg,
null, null, responseData);
} else {
- String failureMsg = "Unable to retrieve any files using given parameters, "
- + "You can still save the repository and start creating policies, "
- + "but you would not be able to use autocomplete for resource names. "
- + "Check xa_portal.log for more info. ";
+ testconnMsg = "Unable to retrieve any files using given parameters, "
+ + "You can still save the repository and start creating policies, "
+ + "but you would not be able to use autocomplete for resource names. "
+ + "Check xa_portal.log for more info. ";
String additionalMsg = (validateConfigsMsg != null) ?
- validateConfigsMsg : failureMsg;
- generateResponseDataMap(connectivityStatus, failureMsg, additionalMsg,
+ validateConfigsMsg : testconnMsg;
+ generateResponseDataMap(connectivityStatus, testconnMsg, additionalMsg,
null, null, responseData);
}
+ LOG.info("<== HdfsClient.testConnection(): Status " + testconnMsg );
return responseData;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsConnectionMgr.java
----------------------------------------------------------------------
diff --git a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsConnectionMgr.java b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsConnectionMgr.java
index 998db9c..18cbc12 100644
--- a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsConnectionMgr.java
+++ b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsConnectionMgr.java
@@ -43,7 +43,7 @@ public class HdfsConnectionMgr {
}
- public HdfsClient getHadoopConnection(final String serviceName, final String serviceType, final Map<String,String> configs) {
+ public HdfsClient getHadoopConnection(final String serviceName, final String serviceType, final Map<String,String> configs) throws Exception{
HdfsClient hdfsClient = null;
if (serviceType != null) {
// get it from the cache
@@ -62,6 +62,7 @@ public class HdfsConnectionMgr {
} catch(Exception e){
LOG.error("Error establishing connection for HDFS repository : "
+ serviceName, e);
+ throw e;
}
} else {
@@ -78,6 +79,7 @@ public class HdfsConnectionMgr {
} catch(Exception e){
LOG.error("Error establishing connection for HDFS repository : "
+ serviceName + " using configuration : " + configs, e);
+ throw e;
}
}
HdfsClient oldClient = hdfsConnectionCache.putIfAbsent(serviceName, hdfsClient);
@@ -87,7 +89,14 @@ public class HdfsConnectionMgr {
}
repoConnectStatusMap.put(serviceName, true);
} else {
- List<String> testConnect = hdfsClient.listFiles("/", "*",null);
+ List<String> testConnect = null;
+ try {
+ testConnect = hdfsClient.listFiles("/", "*",null);
+ } catch ( Exception e) {
+ LOG.error("Error establishing connection for HDFS repository : "
+ + serviceName + " using configuration : " + configs, e);
+ throw e;
+ }
if(testConnect == null){
hdfsConnectionCache.put(serviceName, hdfsClient);
hdfsClient = getHadoopConnection(serviceName,serviceType,configs);
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsResourceMgr.java
----------------------------------------------------------------------
diff --git a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsResourceMgr.java b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsResourceMgr.java
index 5bce2cd..3afc1a9 100644
--- a/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsResourceMgr.java
+++ b/hdfs-agent/src/main/java/org/apache/ranger/services/hdfs/client/HdfsResourceMgr.java
@@ -27,6 +27,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
+import org.apache.ranger.plugin.client.HadoopException;
import org.apache.ranger.plugin.service.ResourceLookupContext;
import org.apache.ranger.plugin.util.TimedEventUtil;
@@ -44,9 +45,9 @@ public class HdfsResourceMgr {
try {
ret = HdfsClient.connectionTest(serviceName, configs);
- } catch (Exception e) {
- LOG.error("<== HdfsResourceMgr.connectionTest Error: " + e) ;
- throw e;
+ } catch (HadoopException e) {
+ LOG.error("<== HdfsResourceMgr.testConnection Error: " + e.getMessage(), e) ;
+ throw e;
}
if(LOG.isDebugEnabled()) {
@@ -116,7 +117,7 @@ public class HdfsResourceMgr {
+ "\n Matching resources : " + resultList);
}
}
- } catch (Exception e) {
+ } catch (HadoopException e) {
LOG.error("Unable to get hdfs resources.", e);
throw e;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hive-agent/src/main/java/org/apache/ranger/services/hive/RangerServiceHive.java
----------------------------------------------------------------------
diff --git a/hive-agent/src/main/java/org/apache/ranger/services/hive/RangerServiceHive.java b/hive-agent/src/main/java/org/apache/ranger/services/hive/RangerServiceHive.java
index fa006ef..32d212c 100644
--- a/hive-agent/src/main/java/org/apache/ranger/services/hive/RangerServiceHive.java
+++ b/hive-agent/src/main/java/org/apache/ranger/services/hive/RangerServiceHive.java
@@ -23,6 +23,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.ranger.plugin.client.HadoopException;
import org.apache.ranger.plugin.model.RangerService;
import org.apache.ranger.plugin.model.RangerServiceDef;
import org.apache.ranger.plugin.service.RangerBaseService;
@@ -54,7 +55,7 @@ public class RangerServiceHive extends RangerBaseService {
if ( configs != null) {
try {
ret = HiveResourceMgr.connectionTest(serviceName, configs);
- } catch (Exception e) {
+ } catch (HadoopException e) {
LOG.error("<== RangerServiceHive.validateConfig Error:" + e);
throw e;
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java
----------------------------------------------------------------------
diff --git a/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java b/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java
index 84f4d9b..fe05ddd 100644
--- a/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java
+++ b/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveClient.java
@@ -21,6 +21,7 @@
import java.io.Closeable;
import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
@@ -48,54 +49,62 @@ public class HiveClient extends BaseClient implements Closeable {
Connection con = null ;
boolean isKerberosAuth=false;
-
- public HiveClient(String serviceName) {
+ public HiveClient(String serviceName) throws Exception {
super(serviceName, null) ;
- initHive() ;
+ initHive() ;
}
-
- public HiveClient(String serviceName,Map<String,String> connectionProp) {
+
+ public HiveClient(String serviceName,Map<String,String> connectionProp) throws Exception{
super(serviceName,connectionProp) ;
- initHive() ;
+ initHive() ;
}
-
- public void initHive() {
+
+ public void initHive() throws Exception {
isKerberosAuth = getConfigHolder().isKerberosAuthentication();
if (isKerberosAuth) {
LOG.info("Secured Mode: JDBC Connection done with preAuthenticated Subject");
- Subject.doAs(getLoginSubject(), new PrivilegedAction<Object>() {
- public Object run() {
+ Subject.doAs(getLoginSubject(), new PrivilegedExceptionAction<Void>(){
+ public Void run() throws Exception {
initConnection();
return null;
- }
- }) ;
+ }});
}
else {
LOG.info("Since Password is NOT provided, Trying to use UnSecure client with username and password");
final String userName = getConfigHolder().getUserName() ;
final String password = getConfigHolder().getPassword() ;
- Subject.doAs(getLoginSubject(), new PrivilegedAction<Object>() {
- public Object run() {
+ Subject.doAs(getLoginSubject(), new PrivilegedExceptionAction<Void>() {
+ public Void run() throws Exception {
initConnection(userName,password);
return null;
- }
- }) ;
+ }}) ;
}
}
- public List<String> getDatabaseList(String databaseMatching, final List<String> databaseList){
+ public List<String> getDatabaseList(String databaseMatching, final List<String> databaseList) throws HadoopException{
final String dbMatching = databaseMatching;
final List<String> dbList = databaseList;
List<String> dblist = Subject.doAs(getLoginSubject(), new PrivilegedAction<List<String>>() {
public List<String> run() {
- return getDBList(dbMatching,dbList);
+ List<String> ret = null;
+ try {
+ ret = getDBList(dbMatching,dbList);
+ } catch ( HadoopException he) {
+ LOG.error("<== HiveClient getDatabaseList() :Unable to get the Database List", he);
+ throw he;
+ }
+ return ret;
}
}) ;
return dblist;
}
- private List<String> getDBList(String databaseMatching, List<String>dbList) {
+ private List<String> getDBList(String databaseMatching, List<String>dbList) throws HadoopException {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("==> HiveClient getDBList databaseMatching : " + databaseMatching + " ExcludedbList :" + dbList) ;
+ }
+
List<String> ret = new ArrayList<String>() ;
String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
@@ -108,9 +117,6 @@ public class HiveClient extends BaseClient implements Closeable {
sql = sql + " like \"" + databaseMatching + "\"" ;
}
try {
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient getDBList databaseMatching : " + databaseMatching + " ExcludedbList :" + dbList) ;
- }
stat = con.createStatement() ;
rs = stat.executeQuery(sql) ;
while (rs.next()) {
@@ -128,7 +134,7 @@ public class HiveClient extends BaseClient implements Closeable {
hdpException.generateResponseDataMap(false, getMessage(sqlt),
msgDesc + errMsg, null, null);
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getDBList() Error : " + sqlt) ;
+ LOG.debug("<== HiveClient.getDBList() Error : ", sqlt) ;
}
throw hdpException;
} catch (SQLException sqle) {
@@ -138,7 +144,7 @@ public class HiveClient extends BaseClient implements Closeable {
hdpException.generateResponseDataMap(false, getMessage(sqle),
msgDesc + errMsg, null, null);
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getDBList() Error : " + sqle) ;
+ LOG.debug("<== HiveClient.getDBList() Error : " , sqle) ;
}
throw hdpException;
} finally {
@@ -147,23 +153,40 @@ public class HiveClient extends BaseClient implements Closeable {
}
}
+
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("<== HiveClient.getDBList(): " + ret);
+ }
+
return ret ;
}
- public List<String> getTableList(String tableNameMatching, List<String> databaseList, List<String> tblNameList){
+ public List<String> getTableList(String tableNameMatching, List<String> databaseList, List<String> tblNameList) throws HadoopException {
final String tblNameMatching = tableNameMatching;
final List<String> dbList = databaseList;
final List<String> tblList = tblNameList;
-
+
List<String> tableList = Subject.doAs(getLoginSubject(), new PrivilegedAction<List<String>>() {
public List<String> run() {
- return getTblList(tblNameMatching,dbList,tblList);
+ List<String> ret = null;
+ try {
+ ret = getTblList(tblNameMatching,dbList,tblList);
+ } catch(HadoopException he) {
+ LOG.error("<== HiveClient getTblList() :Unable to get the Table List", he);
+ throw he;
+ }
+ return ret;
}
}) ;
+
return tableList;
}
- public List<String> getTblList(String tableNameMatching, List<String> dbList, List<String> tblList) {
+ public List<String> getTblList(String tableNameMatching, List<String> dbList, List<String> tblList) throws HadoopException {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("==> HiveClient getTableList() tableNameMatching : " + tableNameMatching + " ExcludedbList :" + dbList + "ExcludeTableList :" + tblList) ;
+ }
+
List<String> ret = new ArrayList<String>() ;
String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
@@ -171,14 +194,10 @@ public class HiveClient extends BaseClient implements Closeable {
if (con != null) {
Statement stat = null ;
ResultSet rs = null ;
-
+
String sql = null ;
-
+
try {
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient getTblList tableNameMatching: " + tableNameMatching + " dbList :" + dbList + " tblList: " + tblList) ;
- }
if (dbList != null && !dbList.isEmpty()) {
for ( String db: dbList) {
sql = "use " + db;
@@ -222,7 +241,7 @@ public class HiveClient extends BaseClient implements Closeable {
hdpException.generateResponseDataMap(false, getMessage(sqlt),
msgDesc + errMsg, null, null);
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getTblList() Error : " + sqlt) ;
+ LOG.debug("<== HiveClient.getTblList() Error : " , sqlt) ;
}
throw hdpException;
} catch (SQLException sqle) {
@@ -232,12 +251,17 @@ public class HiveClient extends BaseClient implements Closeable {
hdpException.generateResponseDataMap(false, getMessage(sqle),
msgDesc + errMsg, null, null);
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getTblList() Error : " + sqle) ;
+ LOG.debug("<== HiveClient.getTblList() Error : " , sqle) ;
}
throw hdpException;
}
}
+
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("<== HiveClient getTableList() " + ret) ;
+ }
+
return ret ;
}
@@ -251,20 +275,31 @@ public class HiveClient extends BaseClient implements Closeable {
return ret ;
}
- public List<String> getColumnList(String columnNameMatching, List<String> dbList, List<String> tblList, List<String> colList) {
+ public List<String> getColumnList(String columnNameMatching, List<String> dbList, List<String> tblList, List<String> colList) throws HadoopException {
final String clmNameMatching = columnNameMatching;
final List<String> databaseList = dbList;
final List<String> tableList = tblList;
final List<String> clmList = colList;
List<String> columnList = Subject.doAs(getLoginSubject(), new PrivilegedAction<List<String>>() {
public List<String> run() {
- return getClmList(clmNameMatching,databaseList,tableList,clmList);
+ List<String> ret = null;
+ try {
+ ret = getClmList(clmNameMatching,databaseList,tableList,clmList);
+ } catch ( HadoopException he) {
+ LOG.error("<== HiveClient getColumnList() :Unable to get the Column List", he);
+ throw he;
+ }
+ return ret;
}
}) ;
return columnList;
}
- public List<String> getClmList(String columnNameMatching,List<String> dbList, List<String> tblList, List<String> colList) {
+ public List<String> getClmList(String columnNameMatching,List<String> dbList, List<String> tblList, List<String> colList) throws HadoopException {
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("<== HiveClient.getClmList() columnNameMatching: " + columnNameMatching + " dbList :" + dbList + " tblList: " + tblList + " colList: " + colList) ;
+ }
+
List<String> ret = new ArrayList<String>() ;
String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
@@ -281,11 +316,7 @@ public class HiveClient extends BaseClient implements Closeable {
ResultSet rs = null ;
String sql = null ;
-
- if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getClmList() columnNameMatching: " + columnNameMatching + " dbList :" + dbList + " tblList: " + tblList + " colList: " + colList) ;
- }
-
+
if (dbList != null && !dbList.isEmpty() &&
tblList != null && !tblList.isEmpty()) {
for (String db: dbList) {
@@ -325,7 +356,7 @@ public class HiveClient extends BaseClient implements Closeable {
hdpException.generateResponseDataMap(false, getMessage(sqlt),
msgDesc + errMsg, null, null);
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getClmList() Error : " + sqlt) ;
+ LOG.debug("<== HiveClient.getClmList() Error : " ,sqlt) ;
}
throw hdpException;
} catch (SQLException sqle) {
@@ -335,7 +366,7 @@ public class HiveClient extends BaseClient implements Closeable {
hdpException.generateResponseDataMap(false, getMessage(sqle),
msgDesc + errMsg, null, null);
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HiveClient.getClmList() Error : " + sqle) ;
+ LOG.debug("<== HiveClient.getClmList() Error : " ,sqle) ;
}
throw hdpException;
} finally {
@@ -346,6 +377,11 @@ public class HiveClient extends BaseClient implements Closeable {
}
}
}
+
+ if(LOG.isDebugEnabled()) {
+ LOG.debug("<== HiveClient.getClmList() " + ret ) ;
+ }
+
return ret ;
}
@@ -389,12 +425,17 @@ public class HiveClient extends BaseClient implements Closeable {
}
}
- private void initConnection() {
- initConnection(null,null) ;
+ private void initConnection() throws HadoopException{
+ try {
+ initConnection(null,null) ;
+ } catch (HadoopException he) {
+ LOG.error("Unable to Connect to Hive", he);
+ throw he;
+ }
}
- private void initConnection(String userName, String password) {
+ private void initConnection(String userName, String password) throws HadoopException {
Properties prop = getConfigHolder().getRangerSection() ;
String driverClassName = prop.getProperty("jdbc.driverClassName") ;
@@ -413,6 +454,9 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, e);
hdpException.generateResponseDataMap(false, getMessage(e),
msgDesc + errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch (IllegalAccessException ilae) {
String msgDesc = "initConnection: Class or its nullary constructor might not accessible."
@@ -420,6 +464,9 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, ilae);
hdpException.generateResponseDataMap(false, getMessage(ilae),
msgDesc + errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch (InstantiationException ie) {
String msgDesc = "initConnection: Class may not have its nullary constructor or "
@@ -428,6 +475,9 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, ie);
hdpException.generateResponseDataMap(false, getMessage(ie),
msgDesc + errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch (ExceptionInInitializerError eie) {
@@ -437,6 +487,9 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, eie);
hdpException.generateResponseDataMap(false, getMessage(eie),
msgDesc + errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch (SecurityException se) {
String msgDesc = "initConnection: unable to initiate connection to hive thrift server instance,"
@@ -446,6 +499,9 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, se);
hdpException.generateResponseDataMap(false, getMessage(se),
msgDesc + errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch (Throwable t) {
String msgDesc = "initConnection: Unable to connect to Hive Thrift Server instance, "
@@ -453,6 +509,9 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, t);
hdpException.generateResponseDataMap(false, getMessage(t),
msgDesc + errMsg, null, "jdbc.driverClassName");
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
}
}
@@ -471,19 +530,28 @@ public class HiveClient extends BaseClient implements Closeable {
HadoopException hdpException = new HadoopException(msgDesc, e);
hdpException.generateResponseDataMap(false, getMessage(e), msgDesc
+ errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch (SecurityException se) {
String msgDesc = "Unable to connect to Hive Thrift Server instance.";
HadoopException hdpException = new HadoopException(msgDesc, se);
hdpException.generateResponseDataMap(false, getMessage(se), msgDesc
+ errMsg, null, null);
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
throw hdpException;
} catch ( Throwable t) {
String msgDesc = "Unable to connect to Hive Thrift Server instance";
HadoopException hdpException = new HadoopException(msgDesc, t);
hdpException.generateResponseDataMap(false, getMessage(t),
msgDesc + errMsg, null, url);
- throw hdpException;
+ if ( LOG.isDebugEnabled()) {
+ LOG.debug(msgDesc, hdpException);
+ }
+ throw hdpException;
}
}
@@ -501,8 +569,13 @@ public class HiveClient extends BaseClient implements Closeable {
hc = new HiveClient(args[0]) ;
if (args.length == 2) {
- List<String> dbList = hc.getDatabaseList(args[1],null) ;
- if (dbList.size() == 0) {
+ List<String> dbList = null;
+ try {
+ dbList = hc.getDatabaseList(args[1],null);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ if (dbList != null && dbList.size() == 0) {
System.out.println("No database found with db filter [" + args[1] + "]") ;
}
else {
@@ -534,6 +607,8 @@ public class HiveClient extends BaseClient implements Closeable {
}
}
+ } catch(Exception e) {
+ e.printStackTrace();
}
finally {
if (hc != null) {
@@ -543,35 +618,38 @@ public class HiveClient extends BaseClient implements Closeable {
}
public static HashMap<String, Object> connectionTest(String serviceName,
- Map<String, String> connectionProperties) {
-
+ Map<String, String> connectionProperties) throws Exception {
+ HiveClient connectionObj = null;
HashMap<String, Object> responseData = new HashMap<String, Object>();
boolean connectivityStatus = false;
String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
+ "resource names. Check xa_portal.log for more info.";
-
- HiveClient connectionObj = new HiveClient(serviceName,
- (HashMap<String, String>) connectionProperties);
- if (connectionObj != null) {
-
- List<String> testResult = connectionObj.getDatabaseList("*",null);
- if (testResult != null && testResult.size() != 0) {
- connectivityStatus = true;
+ List<String> testResult = null;
+ try {
+ connectionObj = new HiveClient(serviceName, connectionProperties);
+ if (connectionObj != null) {
+ testResult = connectionObj.getDatabaseList("*",null);
+ if (testResult != null && testResult.size() != 0) {
+ connectivityStatus = true;
+ }
+ if (connectivityStatus) {
+ String successMsg = "ConnectionTest Successful";
+ generateResponseDataMap(connectivityStatus, successMsg, successMsg,
+ null, null, responseData);
+ } else {
+ String failureMsg = "Unable to retrieve any databases using given parameters.";
+ generateResponseDataMap(connectivityStatus, failureMsg, failureMsg + errMsg,
+ null, null, responseData);
+ }
+ }
+ } catch ( Exception e) {
+ throw e;
+ } finally {
+ if ( connectionObj != null) {
+ connectionObj.close();
}
}
- if (connectivityStatus) {
- String successMsg = "ConnectionTest Successful";
- generateResponseDataMap(connectivityStatus, successMsg, successMsg,
- null, null, responseData);
- } else {
- String failureMsg = "Unable to retrieve any databases using given parameters.";
- generateResponseDataMap(connectivityStatus, failureMsg, failureMsg + errMsg,
- null, null, responseData);
- }
-
- connectionObj.close();
return responseData;
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveResourceMgr.java
----------------------------------------------------------------------
diff --git a/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveResourceMgr.java b/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveResourceMgr.java
index b51a0c1..69f31d8 100644
--- a/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveResourceMgr.java
+++ b/hive-agent/src/main/java/org/apache/ranger/services/hive/client/HiveResourceMgr.java
@@ -25,6 +25,7 @@ import java.util.concurrent.Callable;
import java.util.concurrent.TimeUnit;
import org.apache.log4j.Logger;
+import org.apache.ranger.plugin.client.HadoopException;
import org.apache.ranger.plugin.service.ResourceLookupContext;
import org.apache.ranger.plugin.util.TimedEventUtil;
@@ -47,7 +48,7 @@ public class HiveResourceMgr {
try {
ret = HiveClient.connectionTest(serviceName, configs);
- } catch (Exception e) {
+ } catch (HadoopException e) {
LOG.error("<== HiveResourceMgr.connectionTest Error: " + e) ;
throw e;
}
@@ -181,6 +182,7 @@ public class HiveResourceMgr {
}
} catch (Exception e) {
LOG.error("Unable to get hive resources.", e);
+ throw e;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/knox-agent/src/main/java/org/apache/ranger/services/knox/client/KnoxClient.java
----------------------------------------------------------------------
diff --git a/knox-agent/src/main/java/org/apache/ranger/services/knox/client/KnoxClient.java b/knox-agent/src/main/java/org/apache/ranger/services/knox/client/KnoxClient.java
index 094226d..8af77b2 100644
--- a/knox-agent/src/main/java/org/apache/ranger/services/knox/client/KnoxClient.java
+++ b/knox-agent/src/main/java/org/apache/ranger/services/knox/client/KnoxClient.java
@@ -278,7 +278,6 @@ public class KnoxClient {
public static HashMap<String, Object> connectionTest(String serviceName,
Map<String, String> configs) {
- List<String> strList = new ArrayList<String>();
String errMsg = " You can still save the repository and start creating "
+ "policies, but you would not be able to use autocomplete for "
+ "resource names. Check xa_portal.log for more info.";
@@ -286,7 +285,7 @@ public class KnoxClient {
HashMap<String, Object> responseData = new HashMap<String, Object>();
KnoxClient knoxClient = getKnoxClient(serviceName, configs);
- strList = getKnoxResources(knoxClient, "", null,null,null);
+ List<String> strList = getKnoxResources(knoxClient, "", null,null,null);
if (strList != null && (strList.size() != 0)) {
connectivityStatus = true;
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/plugin-yarn/src/main/java/org/apache/ranger/services/yarn/client/YarnClient.java
----------------------------------------------------------------------
diff --git a/plugin-yarn/src/main/java/org/apache/ranger/services/yarn/client/YarnClient.java b/plugin-yarn/src/main/java/org/apache/ranger/services/yarn/client/YarnClient.java
index eb47e0c..0c7bcad 100644
--- a/plugin-yarn/src/main/java/org/apache/ranger/services/yarn/client/YarnClient.java
+++ b/plugin-yarn/src/main/java/org/apache/ranger/services/yarn/client/YarnClient.java
@@ -225,14 +225,13 @@ public class YarnClient extends BaseClient {
public static HashMap<String, Object> connectionTest(String serviceName,
Map<String, String> configs) {
- List<String> strList = new ArrayList<String>();
String errMsg = errMessage;
boolean connectivityStatus = false;
HashMap<String, Object> responseData = new HashMap<String, Object>();
YarnClient yarnClient = getYarnClient(serviceName,
configs);
- strList = getYarnResource(yarnClient, "",null);
+ List<String> strList = getYarnResource(yarnClient, "",null);
if (strList != null && strList.size() > 0 ) {
if (LOG.isDebugEnabled()) {
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
index 7950439..16b00cd 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
@@ -123,7 +123,7 @@ public class ServiceMgr {
HashMap<String, Object> respData = new HashMap<String, Object>();
if (e instanceof HadoopException) {
- respData = ((HadoopException) e).responseData;
+ respData = ((HadoopException) e).getResponseData();
}
ret = generateResponseForTestConn(respData, msg);
LOG.error("==> ServiceMgr.validateConfig Error:" + e);
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/security-admin/src/main/java/org/apache/ranger/common/TimedExecutor.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/common/TimedExecutor.java b/security-admin/src/main/java/org/apache/ranger/common/TimedExecutor.java
index 643d882..ca2e2dc 100644
--- a/security-admin/src/main/java/org/apache/ranger/common/TimedExecutor.java
+++ b/security-admin/src/main/java/org/apache/ranger/common/TimedExecutor.java
@@ -36,6 +36,7 @@ import java.util.concurrent.TimeoutException;
import javax.annotation.PostConstruct;
import org.apache.log4j.Logger;
+import org.apache.ranger.plugin.client.HadoopException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Service;
@@ -91,14 +92,14 @@ public class TimedExecutor {
if (LOG.isDebugEnabled()) {
LOG.debug(String.format("TimedExecutor: Caught exception[%s] for callable[%s]: detail[%s]. Re-throwing...", e.getClass().getName(), callable, e.getMessage()));
}
- throw e;
+ HadoopException he = generateHadoopException(e);
+ throw he;
} catch (TimeoutException e) {
if (LOG.isDebugEnabled()) {
LOG.debug(String.format("TimedExecutor: Timed out waiting for callable[%s] to finish. Cancelling the task.", callable));
}
boolean interruptRunningTask = true;
future.cancel(interruptRunningTask);
- LOG.debug("TimedExecutor: Re-throwing timeout exception to caller");
throw e;
}
} catch (RejectedExecutionException e) {
@@ -116,6 +117,16 @@ public class TimedExecutor {
_executorService.shutdownNow();
}
+ private HadoopException generateHadoopException( Exception e) {
+ String msgDesc = "Unable to retrieve any files using given parameters, "
+ + "You can still save the repository and start creating policies, "
+ + "but you would not be able to use autocomplete for resource names. "
+ + "Check xa_portal.log for more info. ";
+ HadoopException hpe = new HadoopException(e.getMessage(), e);
+ hpe.generateResponseDataMap(false, hpe.getMessage(e), msgDesc, null, null);
+ return hpe;
+ }
+
static class LocalUncaughtExceptionHandler implements UncaughtExceptionHandler {
@Override
http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/3a21f744/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
----------------------------------------------------------------------
diff --git a/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java b/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
index 84c2ebf..74170fe 100644
--- a/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
+++ b/storm-agent/src/main/java/org/apache/ranger/services/storm/client/StormClient.java
@@ -300,14 +300,13 @@ public class StormClient {
public static HashMap<String, Object> connectionTest(String serviceName,
Map<String, String> configs) {
- List<String> strList = new ArrayList<String>();
String errMsg = errMessage;
boolean connectivityStatus = false;
HashMap<String, Object> responseData = new HashMap<String, Object>();
StormClient stormClient = getStormClient(serviceName,
configs);
- strList = getStormResources(stormClient, "",null);
+ List<String> strList = getStormResources(stormClient, "",null);
if (strList != null) {
connectivityStatus = true;