This is an automated email from the ASF dual-hosted git repository.
pradeep pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git
The following commit(s) were added to refs/heads/master by this push:
new e986ea6 RANGER-2377 : Make solr bootstrapping configurable
e986ea6 is described below
commit e986ea6c799b365bf2122d48a894cc7e4aa1c45a
Author: Bhavik Patel <[email protected]>
AuthorDate: Mon Apr 8 11:24:22 2019 +0530
RANGER-2377 : Make solr bootstrapping configurable
Signed-off-by: Pradeep <[email protected]>
---
.../ranger/server/tomcat/EmbeddedServer.java | 26 +++++++++++++---------
.../server/tomcat/SolrCollectionBoostrapper.java | 24 +++++++++++++++-----
.../conf.dist/ranger-admin-default-site.xml | 9 ++++++++
.../main/resources/conf.dist/ranger-admin-site.xml | 9 ++++++++
4 files changed, 52 insertions(+), 16 deletions(-)
diff --git
a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
index 8633e00..3963df1 100644
---
a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
+++
b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/EmbeddedServer.java
@@ -57,6 +57,7 @@ public class EmbeddedServer {
private static final String AUTH_TYPE_KERBEROS = "kerberos";
private static final String AUTHENTICATION_TYPE =
"hadoop.security.authentication";
private static final String ADMIN_USER_PRINCIPAL =
"ranger.admin.kerberos.principal";
+ private static final String SOLR_BOOTSTRAP_ENABLED =
"ranger.audit.solr.bootstrap.enabled";
private static final String ADMIN_USER_KEYTAB =
"ranger.admin.kerberos.keytab";
private static final String ADMIN_NAME_RULES =
"hadoop.security.auth_to_local";
@@ -269,16 +270,21 @@ public class EmbeddedServer {
private void startServer(final Tomcat server) {
try {
- try {
- String servername = getConfig("servername");
- LOG.info("Server Name : " + servername);
- if
(servername.equalsIgnoreCase(ADMIN_SERVER_NAME)) {
- SolrCollectionBoostrapper solrSetup =
new SolrCollectionBoostrapper();
- solrSetup.start();
- }
- } catch (Exception e) {
- LOG.severe("Error while setting solr " + e);
- }
+ try {
+ boolean solrBootstrapEnabled =
Boolean.valueOf(getConfig(
+ SOLR_BOOTSTRAP_ENABLED,
"true"));
+ if (solrBootstrapEnabled) {
+ String servername =
getConfig("servername");
+ LOG.info("Server Name : " + servername);
+ if
(servername.equalsIgnoreCase(ADMIN_SERVER_NAME)) {
+ SolrCollectionBoostrapper
solrSetup = new SolrCollectionBoostrapper();
+ solrSetup.start();
+ }
+ }
+ } catch (Exception e) {
+ LOG.severe("Error while setting solr " + e);
+ }
+
server.start();
server.getServer().await();
shutdownServer();
diff --git
a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBoostrapper.java
b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBoostrapper.java
index 0d85e91..8a417a0 100644
---
a/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBoostrapper.java
+++
b/embeddedwebserver/src/main/java/org/apache/ranger/server/tomcat/SolrCollectionBoostrapper.java
@@ -68,12 +68,14 @@ public class SolrCollectionBoostrapper extends Thread {
final static String SOLR_MAX_SHARD_PER_NODE =
"ranger.audit.solr.max.shards.per.node";
final static String SOLR_NO_REPLICA = "ranger.audit.solr.no.replica";
final static String SOLR_TIME_INTERVAL =
"ranger.audit.solr.time.interval";
+ final static String SOLR_BOOTSTRP_MAX_RETRY =
"ranger.audit.solr.max.retry";
final static String SOLR_ACL_USER_LIST_SASL =
"ranger.audit.solr.acl.user.list.sasl";
final static String PROP_JAVA_SECURITY_AUTH_LOGIN_CONFIG =
"java.security.auth.login.config";
public static final String DEFAULT_COLLECTION_NAME = "ranger_audits";
public static final String DEFAULT_CONFIG_NAME = "ranger_audits";
public static final String DEFAULT_SERVICE_NAME = "rangeradmin";
public static final long DEFAULT_SOLR_TIME_INTERVAL_MS = 60000L;
+ public static final int DEFAULT_SOLR_BOOTSTRP_MAX_RETRY = 30;
private static final String CONFIG_FILE = "ranger-admin-site.xml";
private static final String CORE_SITE_CONFIG_FILENAME = "core-site.xml";
private static final String DEFAULT_CONFIG_FILENAME =
"ranger-admin-default-site.xml";
@@ -101,6 +103,8 @@ public class SolrCollectionBoostrapper extends Thread {
int no_of_replicas;
int no_of_shards;
int max_node_per_shards;
+ int max_retry;
+ int retry_counter = 0;
Long time_interval;
SolrClient solrClient = null;
CloudSolrClient solrCloudClient = null;
@@ -148,6 +152,8 @@ public class SolrCollectionBoostrapper extends Thread {
time_interval = getLongConfig(SOLR_TIME_INTERVAL,
DEFAULT_SOLR_TIME_INTERVAL_MS);
logger.info("Solr time interval provided is : " +
time_interval);
+
+ max_retry = getIntConfig(SOLR_BOOTSTRP_MAX_RETRY,
DEFAULT_SOLR_BOOTSTRP_MAX_RETRY);
if (System.getProperty(PROP_JAVA_SECURITY_AUTH_LOGIN_CONFIG) ==
null) {
System.setProperty(PROP_JAVA_SECURITY_AUTH_LOGIN_CONFIG,
"/dev/null");
@@ -178,7 +184,7 @@ public class SolrCollectionBoostrapper extends Thread {
h ->
h.equalsIgnoreCase("none"))) {
logger.info("Solr zkHosts=" + zkHosts + ",
collectionName="
+ solr_collection_name);
- while (!is_completed) {
+ while (!is_completed && retry_counter < max_retry) {
try {
if (connect(zookeeperHosts)) {
if (solr_cloud_mode) {
@@ -356,13 +362,19 @@ public class SolrCollectionBoostrapper extends Thread {
}
private void logErrorMessageAndWait(String msg, Exception exception) {
+ retry_counter++;
+ String attempMessage = (retry_counter == max_retry) ? ("Maximum
attempts reached for setting up Solr.")
+ : ("[retrying after " + time_interval
+ + " ms]. No. of attempts left :
"
+ + (max_retry - retry_counter)
+ + " . Maximum attempts : " +
max_retry);
+ StringBuilder errorBuilder = new StringBuilder();
+ errorBuilder.append(msg);
if (exception != null) {
- logger.severe(msg + " [retrying after " + time_interval
- + " ms]. Error : " + exception);
- } else {
- logger.severe(msg + " [retrying after " + time_interval
+ " ms]");
+ errorBuilder.append("Error :
".concat(exception.getMessage() + ". "));
}
-
+ errorBuilder.append(attempMessage);
+ logger.severe(errorBuilder.toString());
try {
Thread.sleep(time_interval);
} catch (InterruptedException ex) {
diff --git
a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
index 189f7b8..8ebeeb5 100644
--- a/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-default-site.xml
@@ -441,6 +441,15 @@
<description>Time in milliseconds</description>
</property>
<property>
+ <name>ranger.audit.solr.bootstrap.enabled</name>
+ <value>true</value>
+ </property>
+ <property>
+ <name>ranger.audit.solr.max.retry</name>
+ <value>30</value>
+ <description>Maximum no. of retry to setup solr</description>
+ </property>
+ <property>
<name>ranger.sha256Password.update.disable</name>
<value>true</value>
<description></description>
diff --git a/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
b/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
index 26a9d64..2e584a7 100644
--- a/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
+++ b/security-admin/src/main/resources/conf.dist/ranger-admin-site.xml
@@ -319,4 +319,13 @@
<name>ranger.audit.solr.acl.user.list.sasl</name>
<value></value>
</property>
+ <property>
+ <name>ranger.audit.solr.bootstrap.enabled</name>
+ <value></value>
+ </property>
+ <property>
+ <name>ranger.audit.solr.max.retry</name>
+ <value></value>
+ <description>Maximum no. of retry to setup
solr</description>
+ </property>
</configuration>