@@ -89,41 +89,11 @@ public List<Record> parse(final HttpRequest request) throws ParsingException {
89
89
final List <CollectdRecord > records = OBJECT_MAPPER .readValue (request .getBody ().toArray (), COLLECTD_RECORD_LIST );
90
90
final List <Record > parsedRecords = Lists .newArrayList ();
91
91
for (final CollectdRecord record : records ) {
92
- final Multimap <String , Metric > metrics = HashMultimap .create ();
93
92
94
93
metricTags .put (Key .HOST_DIMENSION_KEY , record .getHost ());
95
-
96
- final String plugin = record .getPlugin ();
97
- final String pluginInstance = record .getPluginInstance ();
98
- final String type = record .getType ();
99
- final String typeInstance = record .getTypeInstance ();
100
-
101
- final List <String > dsTypes = record .getDsTypes ();
102
- final List <String > dsNames = record .getDsNames ();
103
- final List <Double > values = record .getValues ();
104
-
105
- if (values != null && dsTypes != null && dsNames != null ) {
106
- if (values .size () == 1 && values .get (0 ) == null ) {
107
- // Ignore null values
108
- continue ;
109
- }
110
- final Iterator <Double > valuesIterator = values .iterator ();
111
- final Iterator <String > typesIterator = dsTypes .iterator ();
112
- final Iterator <String > namesIterator = dsNames .iterator ();
113
-
114
- while (valuesIterator .hasNext () && typesIterator .hasNext () && namesIterator .hasNext ()) {
115
- final String metricName = computeMetricName (plugin , pluginInstance , type , typeInstance , namesIterator .next ());
116
- final MetricType metricType = mapDsType (typesIterator .next ());
117
- // TODO(ville): Support units and normalize
118
- final Metric metric = ThreadLocalBuilder .build (
119
- DefaultMetric .Builder .class ,
120
- b1 -> b1 .setType (metricType )
121
- .setValues (ImmutableList .of (
122
- ThreadLocalBuilder .build (
123
- DefaultQuantity .Builder .class ,
124
- b2 -> b2 .setValue (valuesIterator .next ())))));
125
- metrics .put (metricName , metric );
126
- }
94
+ final Multimap <String , Metric > metrics = buildMetrics (record );
95
+ if (metrics .isEmpty ()) {
96
+ continue ;
127
97
}
128
98
final Map <String , Metric > collectedMetrics = metrics .asMap ()
129
99
.entrySet ()
@@ -147,6 +117,44 @@ public List<Record> parse(final HttpRequest request) throws ParsingException {
147
117
}
148
118
}
149
119
120
+ private Multimap <String , Metric > buildMetrics (final CollectdRecord record ) {
121
+ final Multimap <String , Metric > metrics = HashMultimap .create ();
122
+ final List <String > dsTypes = record .getDsTypes ();
123
+ final List <String > dsNames = record .getDsNames ();
124
+ final List <Double > values = record .getValues ();
125
+ final String plugin = record .getPlugin ();
126
+ final String pluginInstance = record .getPluginInstance ();
127
+ final String type = record .getType ();
128
+ final String typeInstance = record .getTypeInstance ();
129
+
130
+ if (values != null && dsTypes != null && dsNames != null ) {
131
+ final Iterator <Double > valuesIterator = values .iterator ();
132
+ final Iterator <String > typesIterator = dsTypes .iterator ();
133
+ final Iterator <String > namesIterator = dsNames .iterator ();
134
+
135
+ while (valuesIterator .hasNext () && typesIterator .hasNext () && namesIterator .hasNext ()) {
136
+ final String metricName = computeMetricName (plugin , pluginInstance , type , typeInstance , namesIterator .next ());
137
+ final MetricType metricType = mapDsType (typesIterator .next ());
138
+ final Double val = valuesIterator .next ();
139
+ if (val == null ) {
140
+ continue ;
141
+ }
142
+ // TODO(ville): Support units and normalize
143
+ final Metric metric = ThreadLocalBuilder .build (
144
+ DefaultMetric .Builder .class ,
145
+ b1 -> b1 .setType (metricType )
146
+ .setValues (ImmutableList .of (
147
+ ThreadLocalBuilder .build (
148
+ DefaultQuantity .Builder .class ,
149
+ b2 -> {
150
+ b2 .setValue (val );
151
+ }))));
152
+ metrics .put (metricName , metric );
153
+ }
154
+ }
155
+ return metrics ;
156
+ }
157
+
150
158
private String computeMetricName (
151
159
final String plugin ,
152
160
final String pluginInstance ,
0 commit comments