You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flume.apache.org by mp...@apache.org on 2013/01/24 22:22:20 UTC

git commit: FLUME-1870. Flume sends non-numeric values with type as float to Ganglia causing ganglia to crash.

Updated Branches:
  refs/heads/trunk 380588d0e -> 59c30364d


FLUME-1870. Flume sends non-numeric values with type as float to Ganglia causing ganglia to crash.

(Hari Shreedharan via Mike Percy)


Project: http://git-wip-us.apache.org/repos/asf/flume/repo
Commit: http://git-wip-us.apache.org/repos/asf/flume/commit/59c30364
Tree: http://git-wip-us.apache.org/repos/asf/flume/tree/59c30364
Diff: http://git-wip-us.apache.org/repos/asf/flume/diff/59c30364

Branch: refs/heads/trunk
Commit: 59c30364d8796a3806c8c2760682391d4eda1bae
Parents: 380588d
Author: Mike Percy <mp...@apache.org>
Authored: Thu Jan 24 13:03:47 2013 -0800
Committer: Mike Percy <mp...@apache.org>
Committed: Thu Jan 24 13:03:47 2013 -0800

----------------------------------------------------------------------
 .../flume/instrumentation/GangliaServer.java       |   28 ++++++++------
 1 files changed, 16 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flume/blob/59c30364/flume-ng-core/src/main/java/org/apache/flume/instrumentation/GangliaServer.java
----------------------------------------------------------------------
diff --git a/flume-ng-core/src/main/java/org/apache/flume/instrumentation/GangliaServer.java b/flume-ng-core/src/main/java/org/apache/flume/instrumentation/GangliaServer.java
index 8d34fee..7d4be55 100644
--- a/flume-ng-core/src/main/java/org/apache/flume/instrumentation/GangliaServer.java
+++ b/flume-ng-core/src/main/java/org/apache/flume/instrumentation/GangliaServer.java
@@ -18,8 +18,6 @@
  */
 package org.apache.flume.instrumentation;
 
-import com.google.common.base.Throwables;
-import java.lang.management.ManagementFactory;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.InetAddress;
@@ -29,15 +27,9 @@ import java.net.SocketException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import javax.management.Attribute;
-import javax.management.AttributeList;
-import javax.management.MBeanAttributeInfo;
-import javax.management.MBeanServer;
-import javax.management.ObjectInstance;
 import org.apache.flume.Context;
 import org.apache.flume.FlumeException;
 import org.apache.flume.api.HostInfo;
@@ -239,7 +231,14 @@ public class GangliaServer implements MonitorService {
             + name + ": " + value);
     name = hostname + "." + name;
     xdr_int(0);
-    xdr_string("float");
+    String type = "string";
+    try {
+      Float.parseFloat(value);
+      type = "float";
+    } catch (NumberFormatException ex) {
+      // The param is a string, and so leave the type as is.
+    }
+    xdr_string(type); // metric type
     xdr_string(name);
     xdr_string(value);
     xdr_string(DEFAULT_UNITS);
@@ -255,7 +254,14 @@ public class GangliaServer implements MonitorService {
     xdr_string(hostname); // hostname
     xdr_string(name); // metric name
     xdr_int(0); // spoof = False
-    xdr_string("float"); // metric type
+    String type = "string";
+    try {
+      Float.parseFloat(value);
+      type = "float";
+    } catch (NumberFormatException ex) {
+      // The param is a string, and so leave the type as is.
+    }
+    xdr_string(type); // metric type
     xdr_string(name); // metric name
     xdr_string(DEFAULT_UNITS); // units
     xdr_int(DEFAULT_SLOPE); // slope
@@ -325,8 +331,6 @@ public class GangliaServer implements MonitorService {
   protected class GangliaCollector implements Runnable {
 
     private GangliaServer server;
-    private final MBeanServer mbeanServer = ManagementFactory.
-            getPlatformMBeanServer();
 
     @Override
     public void run() {