Sfoglia il codice sorgente

AMBARI-20515 APPENDUM Link Log Feeder not working with Kerberos (mgergely)

Change-Id: Ibc6957404fc7dc97067f8615db4d378571387c34
Miklos Gergely 8 anni fa
parent
commit
578e1e8f26

+ 27 - 3
ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/logconfig/LogConfigHandler.java

@@ -40,7 +40,8 @@ public class LogConfigHandler extends Thread {
   private static final int DEFAULT_SOLR_CONFIG_INTERVAL = 5;
   private static final String DATE_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS";
   private static final String TIMEZONE = "GMT";
-  
+  private static final int RETRY_INTERVAL = 30;
+
   static {
     TimeZone.setDefault(TimeZone.getTimeZone(TIMEZONE));
   }
@@ -53,13 +54,14 @@ public class LogConfigHandler extends Thread {
     }
   };
   
+  private static boolean filterEnabled;
   private static LogFeederFilterWrapper logFeederFilterWrapper;
 
   private static boolean running = false;
 
   public static void handleConfig() {
-    boolean filterEnable = LogFeederUtil.getBooleanProperty("logfeeder.log.filter.enable", false);
-    if (!filterEnable) {
+    filterEnabled = LogFeederUtil.getBooleanProperty("logfeeder.log.filter.enable", false);
+    if (!filterEnabled) {
       LOG.info("Logfeeder filter Scheduler is disabled.");
       return;
     }
@@ -174,6 +176,8 @@ public class LogConfigHandler extends Thread {
   }
   
   public static LogFeederFilter findComponentFilter(String componentName) {
+    waitForFilter();
+    
     if (logFeederFilterWrapper != null) {
       HashMap<String, LogFeederFilter> filter = logFeederFilterWrapper.getFilter();
       if (filter != null) {
@@ -186,4 +190,24 @@ public class LogConfigHandler extends Thread {
     LOG.trace("Filter is not there for component :" + componentName);
     return null;
   }
+
+  private static void waitForFilter() {
+    if (!filterEnabled || logFeederFilterWrapper != null) {
+      return;
+    }
+    
+    while (true) {
+      try {
+        Thread.sleep(RETRY_INTERVAL * 1000);
+      } catch (InterruptedException e) {
+        LOG.error(e);
+      }
+      
+      LOG.info("Checking if config is available");
+      if (logFeederFilterWrapper != null) {
+        LOG.info("Config is available");
+        return;
+      }
+    }
+  }
 }

+ 0 - 23
ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/output/OutputSolr.java

@@ -34,7 +34,6 @@ import java.util.concurrent.LinkedBlockingQueue;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.ambari.logfeeder.input.InputMarker;
-import org.apache.ambari.logfeeder.logconfig.LogConfigHandler;
 import org.apache.ambari.logfeeder.util.DateUtil;
 import org.apache.ambari.logfeeder.util.LogFeederUtil;
 import org.apache.commons.lang3.StringUtils;
@@ -326,8 +325,6 @@ public class OutputSolr extends Output {
       LOG.info("SolrWorker thread started");
       long lastDispatchTime = System.currentTimeMillis();
 
-      waitForConfig();
-      
       while (true) {
         long currTimeMS = System.currentTimeMillis();
         OutputData outputData = null;
@@ -371,26 +368,6 @@ public class OutputSolr extends Output {
       LOG.info("Exiting Solr worker thread. output=" + getShortDescription());
     }
     
-
-    private void waitForConfig() {
-      if (!LogFeederUtil.getBooleanProperty("logfeeder.log.filter.enable", false)) {
-        return;
-      }
-      
-      while (true) {
-        LOG.info("Checking if config is available");
-        if (LogConfigHandler.isFilterAvailable()) {
-          LOG.info("Config is available");
-          return;
-        }
-        try {
-          Thread.sleep(RETRY_INTERVAL * 1000);
-        } catch (InterruptedException e) {
-          LOG.error(e);
-        }
-      }
-    }
-
     /**
      * This will loop till Solr is available and LogFeeder is
      * successfully able to write to the collection or shard. It will block till