minchengbo created HADOOP-17333: ----------------------------------- Summary: MetricsRecordFiltered error Key: HADOOP-17333 URL: https://issues.apache.org/jira/browse/HADOOP-17333 Project: Hadoop Common Issue Type: Bug Components: common Affects Versions: 3.2.1 Environment: This case can show the exception public static void main(String[] args) { List<AbstractMetric> metricsd=new LinkedList<AbstractMetric>(); MetricsInfo info=MsInfo.ProcessName; long timestamp=System.currentTimeMillis(); List<MetricsTag> tags=new LinkedList<>(); org.apache.hadoop.metrics2.impl.MetricsRecordImpl recordimp = new MetricsRecordImpl(info, timestamp, tags, metricsd); MetricsFilter filter=new RegexFilter(); MetricsRecordFiltered recordfilter=new MetricsRecordFiltered(recordimp,filter); SubsetConfiguration conf=new SubsetConfiguration(new PropertyListConfiguration(),"test"); conf.addProperty(AbstractGangliaSink.SUPPORT_SPARSE_METRICS_PROPERTY, true); GangliaSink30 ganliasink=new GangliaSink30(); ganliasink.init(conf); ganliasink.putMetrics(recordfilter); }
/////////////////////////////////////////////////////////////// The root cause is: Gets a Iterable object in MetricsRecordFiltered.java: @Override public Iterable<AbstractMetric> metrics() { return new Iterable<AbstractMetric>() { final Iterator<AbstractMetric> it = delegate.metrics().iterator(); @Override public Iterator<AbstractMetric> iterator() { return new AbstractIterator<AbstractMetric>() { @Override public AbstractMetric computeNext() { while (it.hasNext()) { AbstractMetric next = it.next(); if (filter.accepts(next.name())) { return next; } } return (AbstractMetric)endOfData(); } }; } }; } but convert to Collection in GangliaSink30.java line 164 Collection<AbstractMetric> metrics = (Collection<AbstractMetric>) record .metrics(); Reporter: minchengbo Got sink exception,when set datanode.sink.ganglia.metric.filter.exclude=metricssystem in hadoop-metrics2.properties , java.lang.ClassCastException: org.apache.hadoop.metrics2.impl.MetricsRecordFiltered$1 cannot be cast to java.util.Collection at org.apache.hadoop.metrics2.sink.ganglia.GangliaSink30.putMetrics(GangliaSink30.java:165) at org.apache.hadoop.metrics2.impl.MetricsSinkAdapter.consume(MetricsSinkAdapter.java:184) at org.apache.hadoop.metrics2.impl.MetricsSinkAdapter.consume(MetricsSinkAdapter.java:43) at org.apache.hadoop.metrics2.impl.SinkQueue.consumeAll(SinkQueue.java:87) at org.apache.hadoop.metrics2.impl.MetricsSinkAdapter.publishMetricsFromQueue(MetricsSinkAdapter.java:135) at org.apache.hadoop.metrics2.impl.MetricsSinkAdapter$1.run(MetricsSinkAdapter.java:89) -- This message was sent by Atlassian Jira (v8.3.4#803005) --------------------------------------------------------------------- To unsubscribe, e-mail: common-dev-unsubscr...@hadoop.apache.org For additional commands, e-mail: common-dev-h...@hadoop.apache.org