RANGER-1124 : Good coding practices in Ranger recommended by static code analysis - medium impact
(cherry picked from commit 24a100081eb05276bca7aa07b3a8c2255646c21a)
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java b/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java
index 46f33a5..738c091 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/destination/SolrAuditDestination.java
@@ -54,7 +54,7 @@
public static final String DEFAULT_COLLECTION_NAME = "ranger_audits";
public static final String PROP_JAVA_SECURITY_AUTH_LOGIN_CONFIG = "java.security.auth.login.config";
- SolrClient solrClient = null;
+ private volatile SolrClient solrClient = null;
public SolrAuditDestination() {
}
@@ -74,77 +74,80 @@
}
synchronized void connect() {
- if (solrClient == null) {
- if (solrClient == null) {
- String urls = MiscUtil.getStringProperty(props, propPrefix
- + "." + PROP_SOLR_URLS);
- if (urls != null) {
- urls = urls.trim();
- }
- if (urls != null && urls.equalsIgnoreCase("NONE")) {
- urls = null;
- }
-
- List<String> solrURLs = new ArrayList<String>();
- String zkHosts = null;
- solrURLs = MiscUtil.toArray(urls, ",");
- zkHosts = MiscUtil.getStringProperty(props, propPrefix + "."
- + PROP_SOLR_ZK);
- if (zkHosts != null && zkHosts.equalsIgnoreCase("NONE")) {
- zkHosts = null;
- }
-
- String collectionName = MiscUtil.getStringProperty(props,
- propPrefix + "." + PROP_SOLR_COLLECTION);
- if (collectionName == null
- || collectionName.equalsIgnoreCase("none")) {
- collectionName = DEFAULT_COLLECTION_NAME;
- }
-
- LOG.info("Solr zkHosts=" + zkHosts + ", solrURLs=" + urls
- + ", collectionName=" + collectionName);
-
- if (zkHosts != null && !zkHosts.isEmpty()) {
- LOG.info("Connecting to solr cloud using zkHosts="
- + zkHosts);
- try {
- // Instantiate
- HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
- CloudSolrClient solrCloudClient = new CloudSolrClient(
- zkHosts);
- solrCloudClient.setDefaultCollection(collectionName);
- solrClient = solrCloudClient;
- } catch (Throwable t) {
- LOG.fatal("Can't connect to Solr server. ZooKeepers="
- + zkHosts, t);
+ SolrClient me = solrClient;
+ if (me == null) {
+ synchronized(SolrAuditDestination.class) {
+ me = solrClient;
+ if (solrClient == null) {
+ String urls = MiscUtil.getStringProperty(props, propPrefix
+ + "." + PROP_SOLR_URLS);
+ if (urls != null) {
+ urls = urls.trim();
}
- finally {
- resetInitializerInSOLR() ;
+ if (urls != null && urls.equalsIgnoreCase("NONE")) {
+ urls = null;
}
- } else if (solrURLs != null && !solrURLs.isEmpty()) {
- try {
- LOG.info("Connecting to Solr using URLs=" + solrURLs);
- HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
- LBHttpSolrClient lbSolrClient = new LBHttpSolrClient(
- solrURLs.get(0));
- lbSolrClient.setConnectionTimeout(1000);
+ List<String> solrURLs = new ArrayList<String>();
+ String zkHosts = null;
+ solrURLs = MiscUtil.toArray(urls, ",");
+ zkHosts = MiscUtil.getStringProperty(props, propPrefix + "."
+ + PROP_SOLR_ZK);
+ if (zkHosts != null && zkHosts.equalsIgnoreCase("NONE")) {
+ zkHosts = null;
+ }
+ String collectionName = MiscUtil.getStringProperty(props,
+ propPrefix + "." + PROP_SOLR_COLLECTION);
+ if (collectionName == null
+ || collectionName.equalsIgnoreCase("none")) {
+ collectionName = DEFAULT_COLLECTION_NAME;
+ }
- for (int i = 1; i < solrURLs.size(); i++) {
- lbSolrClient.addSolrServer(solrURLs.get(i));
+ LOG.info("Solr zkHosts=" + zkHosts + ", solrURLs=" + urls
+ + ", collectionName=" + collectionName);
+
+ if (zkHosts != null && !zkHosts.isEmpty()) {
+ LOG.info("Connecting to solr cloud using zkHosts="
+ + zkHosts);
+ try {
+ // Instantiate
+ HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
+ CloudSolrClient solrCloudClient = new CloudSolrClient(
+ zkHosts);
+ solrCloudClient.setDefaultCollection(collectionName);
+ me = solrClient = solrCloudClient;
+ } catch (Throwable t) {
+ LOG.fatal("Can't connect to Solr server. ZooKeepers="
+ + zkHosts, t);
}
- solrClient = lbSolrClient;
- } catch (Throwable t) {
- LOG.fatal("Can't connect to Solr server. URL="
- + solrURLs, t);
- }
- finally {
- resetInitializerInSOLR() ;
+ finally {
+ resetInitializerInSOLR() ;
+ }
+ } else if (solrURLs != null && !solrURLs.isEmpty()) {
+ try {
+ LOG.info("Connecting to Solr using URLs=" + solrURLs);
+ HttpClientUtil.setConfigurer(new Krb5HttpClientConfigurer());
+ LBHttpSolrClient lbSolrClient = new LBHttpSolrClient(
+ solrURLs.get(0));
+ lbSolrClient.setConnectionTimeout(1000);
+
+ for (int i = 1; i < solrURLs.size(); i++) {
+ lbSolrClient.addSolrServer(solrURLs.get(i));
+ }
+ me = solrClient = lbSolrClient;
+ } catch (Throwable t) {
+ LOG.fatal("Can't connect to Solr server. URL="
+ + solrURLs, t);
+ }
+ finally {
+ resetInitializerInSOLR() ;
+ }
}
}
}
}
}
+
private void resetInitializerInSOLR() {
javax.security.auth.login.Configuration solrConfig = javax.security.auth.login.Configuration.getConfiguration();
String solrConfigClassName = solrConfig.getClass().getName() ;
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java b/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
index 3ab390a..f5b2795 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/provider/MiscUtil.java
@@ -184,7 +184,9 @@
}
public static String getJvmInstanceId() {
- String ret = Integer.toString(Math.abs(sJvmID.toString().hashCode()));
+ Integer val = Integer.valueOf(sJvmID.toString().hashCode());
+ long longVal = val.longValue();
+ String ret = Long.toString(Math.abs(longVal));
return ret;
}
@@ -719,7 +721,7 @@
}
} catch (Throwable t) {
- logger.error("Failed to login as [" + spnegoPrincipals + "]", t);
+ logger.error("Failed to login with given keytab and principal", t);
}
}
diff --git a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java
index 17ddab9..8e3c992 100644
--- a/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java
+++ b/agents-audit/src/main/java/org/apache/ranger/audit/queue/AuditFileSpool.java
@@ -663,7 +663,7 @@
}
});
- if (logFiles.length > maxArchiveFiles) {
+ if (logFiles != null && logFiles.length > maxArchiveFiles) {
int filesToDelete = logFiles.length - maxArchiveFiles;
BufferedReader br = new BufferedReader(new FileReader(
indexDoneFile));
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 65e7be6..443eb01 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
@@ -251,10 +251,9 @@
HBaseAdmin.checkHBaseAvailable(conf);
LOG.info("getTableList: no exception: HbaseAvailability true");
admin = new HBaseAdmin(conf) ;
- for (HTableDescriptor htd : admin.listTables(tableNameMatching)) {
- if (htd == null) {
- LOG.error("getTableList: null HTableDescription received from HBaseAdmin.listTables");
- } else {
+ HTableDescriptor [] htds = admin.listTables(tableNameMatching);
+ if (htds != null) {
+ for (HTableDescriptor htd : admin.listTables(tableNameMatching)) {
String tableName = htd.getNameAsString();
if (existingTableList != null && existingTableList.contains(tableName)) {
continue;
@@ -262,7 +261,9 @@
tableList.add(htd.getNameAsString());
}
}
- }
+ } else {
+ LOG.error("getTableList: null HTableDescription received from HBaseAdmin.listTables");
+ }
} catch (ZooKeeperConnectionException zce) {
String msgDesc = "getTableList: Unable to connect to `ZooKeeper` "
+ "using given config parameters.";
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 bc98d24..bfc2628 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
@@ -87,7 +87,7 @@
FileStatus[] fileStats = fs.listStatus(basePath) ;
if(LOG.isDebugEnabled()) {
- LOG.debug("<== HdfsClient fileStatus : " + fileStats + " PathList :" + pathList) ;
+ LOG.debug("<== HdfsClient fileStatus : " + fileStats.length + " PathList :" + pathList) ;
}
if (fileStats != null) {
@@ -185,7 +185,7 @@
String baseDir = args[1] ;
String fileNameToMatch = (args.length == 2 ? null : args[2]) ;
- HdfsClient fs = new HdfsClient(repositoryName, null) ;
+ HdfsClient fs = new HdfsClient(repositoryName, new HashMap<String,String>()) ;
List<String> fsList = null;
try {
fsList = fs.listFiles(baseDir, fileNameToMatch,null);
diff --git a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java
index 69fa293..0fcf13f 100644
--- a/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java
+++ b/hive-agent/src/main/java/org/apache/ranger/authorization/hive/authorizer/RangerHiveAuthorizer.java
@@ -672,7 +672,10 @@
if(isDataMaskEnabled(result)) {
String maskType = result.getMaskType();
RangerDataMaskTypeDef maskTypeDef = result.getMaskTypeDef();
- String transformer = maskTypeDef.getTransformer();
+ String transformer = null;
+ if (maskTypeDef != null) {
+ transformer = maskTypeDef.getTransformer();
+ }
if(StringUtils.equalsIgnoreCase(maskType, MASK_TYPE_NULL)) {
ret = "NULL";
diff --git a/plugin-kafka/src/main/java/org/apache/ranger/authorization/kafka/authorizer/RangerKafkaAuthorizer.java b/plugin-kafka/src/main/java/org/apache/ranger/authorization/kafka/authorizer/RangerKafkaAuthorizer.java
index 1afedd5..452698b 100644
--- a/plugin-kafka/src/main/java/org/apache/ranger/authorization/kafka/authorizer/RangerKafkaAuthorizer.java
+++ b/plugin-kafka/src/main/java/org/apache/ranger/authorization/kafka/authorizer/RangerKafkaAuthorizer.java
@@ -75,27 +75,31 @@
*/
@Override
public void configure(Map<String, ?> configs) {
- if (rangerPlugin == null) {
- try {
- LoginManager loginManager = LoginManager.acquireLoginManager(LoginType.SERVER, true, configs);
- Subject subject = loginManager.subject();
- UserGroupInformation ugi = MiscUtil
- .createUGIFromSubject(subject);
- if (ugi != null) {
- MiscUtil.setUGILoginUser(ugi, subject);
+ RangerBasePlugin me = rangerPlugin;
+ if (me == null) {
+ synchronized(RangerKafkaAuthorizer.class) {
+ me = rangerPlugin;
+ if (me == null) {
+ try {
+ LoginManager loginManager = LoginManager.acquireLoginManager(LoginType.SERVER, true, configs);
+ Subject subject = loginManager.subject();
+ UserGroupInformation ugi = MiscUtil
+ .createUGIFromSubject(subject);
+ if (ugi != null) {
+ MiscUtil.setUGILoginUser(ugi, subject);
+ }
+ logger.info("LoginUser=" + MiscUtil.getUGILoginUser());
+ } catch (Throwable t) {
+ logger.error("Error getting principal.", t);
+ }
+ me = rangerPlugin = new RangerBasePlugin("kafka", "kafka");
}
- logger.info("LoginUser=" + MiscUtil.getUGILoginUser());
- } catch (Throwable t) {
- logger.error("Error getting principal.", t);
}
-
- rangerPlugin = new RangerBasePlugin("kafka", "kafka");
- logger.info("Calling plugin.init()");
- rangerPlugin.init();
-
- RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
- rangerPlugin.setResultProcessor(auditHandler);
}
+ logger.info("Calling plugin.init()");
+ rangerPlugin.init();
+ RangerDefaultAuditHandler auditHandler = new RangerDefaultAuditHandler();
+ rangerPlugin.setResultProcessor(auditHandler);
}
@Override
diff --git a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java
index d8e24ba..c994b02 100644
--- a/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java
+++ b/plugin-solr/src/main/java/org/apache/ranger/authorization/solr/authorizer/RangerSolrAuthorizer.java
@@ -105,11 +105,17 @@
}
try {
- if (solrPlugin == null) {
- logger.info("RangerSolrAuthorizer(): init called");
- solrPlugin = new RangerBasePlugin("solr", "solr");
- solrPlugin.init();
+ RangerBasePlugin me = solrPlugin;
+ if (me == null) {
+ synchronized(RangerSolrAuthorizer.class) {
+ me = solrPlugin;
+ logger.info("RangerSolrAuthorizer(): init called");
+ if (me == null) {
+ me = solrPlugin = new RangerBasePlugin("solr", "solr");
+ }
+ }
}
+ solrPlugin.init();
} catch (Throwable t) {
logger.fatal("Error creating and initializing RangerBasePlugin()");
}
diff --git a/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoaderUtil.java b/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoaderUtil.java
index ea18883..fb33dcb 100644
--- a/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoaderUtil.java
+++ b/ranger-plugin-classloader/src/main/java/org/apache/ranger/plugin/classloader/RangerPluginClassLoaderUtil.java
@@ -38,7 +38,7 @@
private static final Logger LOG = LoggerFactory.getLogger(RangerPluginClassLoaderUtil.class) ;
- private static RangerPluginClassLoaderUtil config = null;
+ private static volatile RangerPluginClassLoaderUtil config = null;
private static String rangerPluginLibDir = "ranger-%-plugin-impl";
public static RangerPluginClassLoaderUtil getInstance() {