Updated Branches: refs/heads/flume-1.4 8fa29e3ee -> 90322322b
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/90322322 Tree: http://git-wip-us.apache.org/repos/asf/flume/tree/90322322 Diff: http://git-wip-us.apache.org/repos/asf/flume/diff/90322322 Branch: refs/heads/flume-1.4 Commit: 90322322b15c45b2f650b18551c919241a69a8a5 Parents: 8fa29e3 Author: Mike Percy <[email protected]> Authored: Thu Jan 24 13:03:47 2013 -0800 Committer: Mike Percy <[email protected]> Committed: Thu Jan 24 13:22:11 2013 -0800 ---------------------------------------------------------------------- .../flume/instrumentation/GangliaServer.java | 28 ++++++++------ 1 files changed, 16 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flume/blob/90322322/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() {
