You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chukwa.apache.org by ey...@apache.org on 2011/01/02 06:36:32 UTC

svn commit: r1054355 - in /incubator/chukwa/trunk: CHANGES.txt src/java/org/apache/hadoop/chukwa/inputtools/log4j/Log4JMetricsContext.java

Author: eyang
Date: Sun Jan  2 05:36:32 2011
New Revision: 1054355

URL: http://svn.apache.org/viewvc?rev=1054355&view=rev
Log:
CHUKWA-574. Added locking for recording metrics through log4j. (Eric Yang)

Modified:
    incubator/chukwa/trunk/CHANGES.txt
    incubator/chukwa/trunk/src/java/org/apache/hadoop/chukwa/inputtools/log4j/Log4JMetricsContext.java

Modified: incubator/chukwa/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/incubator/chukwa/trunk/CHANGES.txt?rev=1054355&r1=1054354&r2=1054355&view=diff
==============================================================================
--- incubator/chukwa/trunk/CHANGES.txt (original)
+++ incubator/chukwa/trunk/CHANGES.txt Sun Jan  2 05:36:32 2011
@@ -82,6 +82,8 @@ Trunk (unreleased changes)
 
   BUG FIXES
 
+    CHUKWA-574. Added locking for recording metrics through log4j. (Eric Yang)
+
     CHUKWA-568.  Moved from json.jar library to JSON Simple library for SystemMetrics demux parser and add tags column family. (Eric Yang)
 
     CHUKWA-231. Update default view to show graph explorer and remove deprecated widgets. (Eric Yang)

Modified: incubator/chukwa/trunk/src/java/org/apache/hadoop/chukwa/inputtools/log4j/Log4JMetricsContext.java
URL: http://svn.apache.org/viewvc/incubator/chukwa/trunk/src/java/org/apache/hadoop/chukwa/inputtools/log4j/Log4JMetricsContext.java?rev=1054355&r1=1054354&r2=1054355&view=diff
==============================================================================
--- incubator/chukwa/trunk/src/java/org/apache/hadoop/chukwa/inputtools/log4j/Log4JMetricsContext.java (original)
+++ incubator/chukwa/trunk/src/java/org/apache/hadoop/chukwa/inputtools/log4j/Log4JMetricsContext.java Sun Jan  2 05:36:32 2011
@@ -84,41 +84,37 @@ public class Log4JMetricsContext extends
   @Override
   protected void emitRecord(String contextName, String recordName,
       OutputRecord outRec) throws IOException {
-    if (out == null) {
-      synchronized (lock) {
-        if (out == null) {
-          PatternLayout layout = new PatternLayout("%d{ISO8601} %p %c: %m%n");
+    synchronized (lock) {
+      if (out == null) {
+        PatternLayout layout = new PatternLayout("%d{ISO8601} %p %c: %m%n");
           
-          org.apache.log4j.net.SocketAppender appender = new org.apache.log4j.net.SocketAppender(host, port);
+        org.apache.log4j.net.SocketAppender appender = new org.apache.log4j.net.SocketAppender(host, port);
           
-          appender.setName("chukwa.metrics." + contextName);
-          appender.setLayout(layout);
+        appender.setName("chukwa.metrics." + contextName);
+        appender.setLayout(layout);
           
-          Logger logger = Logger.getLogger("chukwa.metrics." + contextName);
-          logger.setAdditivity(false);
-          logger.addAppender(appender);
-          appender.activateOptions();
-          out = logger;
-        }
-      }
-    }
-
-    JSONObject json = new JSONObject();
-    try {
-      json.put("contextName", contextName);
-      json.put("recordName", recordName);
-      json.put("chukwa_timestamp", System.currentTimeMillis());
-      json.put("period", period);
-      for (String tagName : outRec.getTagNames()) {
-        json.put(tagName, outRec.getTag(tagName));
+        Logger logger = Logger.getLogger("chukwa.metrics." + contextName);
+        logger.setAdditivity(false);
+        logger.addAppender(appender);
+        appender.activateOptions();
+        out = logger;
       }
-      for (String metricName : outRec.getMetricNames()) {
-        json.put(metricName, outRec.getMetric(metricName));
+      JSONObject json = new JSONObject();
+      try {
+        json.put("contextName", contextName);
+        json.put("recordName", recordName);
+        json.put("chukwa_timestamp", System.currentTimeMillis());
+        json.put("period", period);
+        for (String tagName : outRec.getTagNames()) {
+          json.put(tagName, outRec.getTag(tagName));
+        }
+        for (String metricName : outRec.getMetricNames()) {
+          json.put(metricName, outRec.getMetric(metricName));
+        }
+      } catch (Exception e) {
+        log.warn("exception in Log4jMetricsContext:" , e);
       }
-    } catch (Exception e) {
-      log.warn("exception in Log4jMetricsContext:" , e);
+      out.info(json.toString());
     }
-    out.info(json.toString());
   }
-
 }