You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/12/03 00:19:27 UTC

[11/26] incubator-ranger git commit: RANGER-602: Solr client in SolrCloud mode should work with zookeeper settings also

RANGER-602: Solr client in SolrCloud mode should work with zookeeper
settings also

Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/428afbce
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/428afbce
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/428afbce

Branch: refs/heads/tag-policy
Commit: 428afbce3b80d0bbcdb079ee7b0f9ed072fe8919
Parents: ad45c55
Author: Don Bosco Durai <bo...@apache.org>
Authored: Tue Nov 24 05:20:14 2015 -0800
Committer: Don Bosco Durai <bo...@apache.org>
Committed: Tue Nov 24 05:20:14 2015 -0800

----------------------------------------------------------------------
 .../java/org/apache/ranger/solr/SolrMgr.java    | 100 ++++++++++++++-----
 1 file changed, 74 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/428afbce/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java b/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java
index 2a57fa1..603e46a 100644
--- a/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/solr/SolrMgr.java
@@ -26,6 +26,7 @@ import org.apache.ranger.biz.RangerBizUtil;
 import org.apache.ranger.common.PropertiesUtil;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.impl.BinaryRequestWriter;
+import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -49,6 +50,9 @@ public class SolrMgr {
 	volatile boolean initDone = false;
 
 	final static String SOLR_URLS_PROP = "ranger.audit.solr.urls";
+	final static String SOLR_ZK_HOSTS = "ranger.audit.solr.zookeepers";
+	final static String SOLR_COLLECTION_NAME = "ranger.audit.solr.collection.name";
+	public static final String DEFAULT_COLLECTION_NAME = "ranger_audits";
 
 	public SolrMgr() {
 
@@ -59,6 +63,17 @@ public class SolrMgr {
 			synchronized (lock) {
 				if (!initDone) {
 					if (rangerBizUtil.getAuditDBType().equalsIgnoreCase("solr")) {
+						String zkHosts = PropertiesUtil
+								.getProperty(SOLR_ZK_HOSTS);
+						if (zkHosts == null) {
+							zkHosts = PropertiesUtil
+									.getProperty("ranger.audit.solr.zookeeper");
+						}
+						if (zkHosts == null) {
+							zkHosts = PropertiesUtil
+									.getProperty("ranger.solr.zookeeper");
+						}
+
 						String solrURL = PropertiesUtil
 								.getProperty(SOLR_URLS_PROP);
 
@@ -72,38 +87,71 @@ public class SolrMgr {
 							solrURL = PropertiesUtil
 									.getProperty("ranger.solr.url");
 						}
-						if (solrURL == null || solrURL.isEmpty()
-								|| solrURL.equalsIgnoreCase("none")) {
-							logger.fatal("Solr URL for Audit is empty. Please set property "
-									+ SOLR_URLS_PROP);
-						} else {
-							try {
-								solrClient = new HttpSolrClient(solrURL);
-								if (solrClient == null) {
-									logger.fatal("Can't connect to Solr. URL="
-											+ solrURL);
-								} else {
-									if (solrClient instanceof HttpSolrClient) {
-										HttpSolrClient httpSolrClient = (HttpSolrClient) solrClient;
-										httpSolrClient
-												.setAllowCompression(true);
-										httpSolrClient
-												.setConnectionTimeout(1000);
-										// httpSolrClient.setSoTimeout(10000);
-										httpSolrClient.setMaxRetries(1);
-										httpSolrClient
-												.setRequestWriter(new BinaryRequestWriter());
-									}
-									initDone = true;
-								}
 
+						if (zkHosts != null && !zkHosts.trim().equals("")
+								&& !zkHosts.trim().equals("none")) {
+							zkHosts = zkHosts.trim();
+							String collectionName = PropertiesUtil
+									.getProperty(SOLR_COLLECTION_NAME);
+							if (collectionName == null
+									|| collectionName.equalsIgnoreCase("none")) {
+								collectionName = DEFAULT_COLLECTION_NAME;
+							}
+
+							logger.info("Solr zkHosts=" + zkHosts
+									+ ", collectionName=" + collectionName);
+
+							try {
+								// Instantiate
+								CloudSolrClient solrCloudClient = new CloudSolrClient(
+										zkHosts);
+								solrCloudClient
+										.setDefaultCollection(collectionName);
+								solrClient = solrCloudClient;
 							} catch (Throwable t) {
 								logger.fatal(
-										"Can't connect to Solr server. URL="
-												+ solrURL, t);
+										"Can't connect to Solr server. ZooKeepers="
+												+ zkHosts + ", collection="
+												+ collectionName, t);
+							}
+
+						} else {
+							if (solrURL == null || solrURL.isEmpty()
+									|| solrURL.equalsIgnoreCase("none")) {
+								logger.fatal("Solr ZKHosts and URL for Audit are empty. Please set property "
+										+ SOLR_ZK_HOSTS
+										+ " or "
+										+ SOLR_URLS_PROP);
+							} else {
+								try {
+									solrClient = new HttpSolrClient(solrURL);
+									if (solrClient == null) {
+										logger.fatal("Can't connect to Solr. URL="
+												+ solrURL);
+									} else {
+										if (solrClient instanceof HttpSolrClient) {
+											HttpSolrClient httpSolrClient = (HttpSolrClient) solrClient;
+											httpSolrClient
+													.setAllowCompression(true);
+											httpSolrClient
+													.setConnectionTimeout(1000);
+											// httpSolrClient.setSoTimeout(10000);
+											httpSolrClient.setMaxRetries(1);
+											httpSolrClient
+													.setRequestWriter(new BinaryRequestWriter());
+										}
+										initDone = true;
+									}
+
+								} catch (Throwable t) {
+									logger.fatal(
+											"Can't connect to Solr server. URL="
+													+ solrURL, t);
+								}
 							}
 						}
 					}
+
 				}
 			}
 		}