Skip to content

Commit fda35ea

Browse files
authored
Ism v3 (#163)
* Support parsing ISM v3 Protobuf. * Support ISM client protocol V3. * Switched to released version of client protocol v3. * Addressed code review feedback; extract constants for literals for packing and unpacking histogram keys. * Updated javadoc * Update for refactor of V3 protocol. * Update for v3 protocol.
1 parent 9130e64 commit fda35ea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+804
-96
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
<aspectjrt.version>1.9.2</aspectjrt.version>
8080
<asynchttpclient.version>2.6.0</asynchttpclient.version>
8181
<cglib.version>3.2.10</cglib.version>
82-
<client.protocol.version>0.10.1</client.protocol.version>
82+
<client.protocol.version>0.11.1</client.protocol.version>
8383
<fastutil.version>8.2.2</fastutil.version>
8484
<spotbugs.annotations.version>3.1.12</spotbugs.annotations.version>
8585
<guava.version>25.1-jre</guava.version>
@@ -98,7 +98,7 @@
9898
<metrics.client.incubator.version>0.6.3</metrics.client.incubator.version>
9999
<metrics.jvm.extra.version>0.10.1</metrics.jvm.extra.version>
100100
<oval.version>1.90</oval.version>
101-
<protobuf.version>3.6.1</protobuf.version>
101+
<protobuf.version>3.8.0</protobuf.version>
102102
<scala.version>2.11</scala.version>
103103
<scala.library.version>2.11.12</scala.library.version>
104104
<slf4j.version>1.7.25</slf4j.version>
@@ -742,7 +742,7 @@
742742
<version>${metrics.aggregator.protocol.version}</version>
743743
</dependency>
744744
<dependency>
745-
<groupId>com.inscopemetrics.client</groupId>
745+
<groupId>io.inscopemetrics.client</groupId>
746746
<artifactId>protocol</artifactId>
747747
<version>${client.protocol.version}</version>
748748
</dependency>

src/main/java/com/arpnetworking/metrics/mad/Aggregator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@
2020
import com.arpnetworking.commons.observer.Observer;
2121
import com.arpnetworking.logback.annotations.LogValue;
2222
import com.arpnetworking.metrics.mad.model.Record;
23+
import com.arpnetworking.metrics.mad.model.statistics.Statistic;
2324
import com.arpnetworking.steno.LogValueMapFactory;
2425
import com.arpnetworking.steno.Logger;
2526
import com.arpnetworking.steno.LoggerFactory;
2627
import com.arpnetworking.tsdcore.model.DefaultKey;
2728
import com.arpnetworking.tsdcore.model.Key;
2829
import com.arpnetworking.tsdcore.sinks.Sink;
29-
import com.arpnetworking.tsdcore.statistics.Statistic;
3030
import com.arpnetworking.utility.Launchable;
3131
import com.google.common.cache.CacheBuilder;
3232
import com.google.common.cache.CacheLoader;

src/main/java/com/arpnetworking/metrics/mad/Bucket.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@
1818
import com.arpnetworking.commons.builder.OvalBuilder;
1919
import com.arpnetworking.commons.builder.ThreadLocalBuilder;
2020
import com.arpnetworking.logback.annotations.LogValue;
21+
import com.arpnetworking.metrics.mad.model.AggregatedData;
2122
import com.arpnetworking.metrics.mad.model.DefaultQuantity;
2223
import com.arpnetworking.metrics.mad.model.Metric;
2324
import com.arpnetworking.metrics.mad.model.Quantity;
2425
import com.arpnetworking.metrics.mad.model.Record;
26+
import com.arpnetworking.metrics.mad.model.statistics.Accumulator;
27+
import com.arpnetworking.metrics.mad.model.statistics.Calculator;
28+
import com.arpnetworking.metrics.mad.model.statistics.Statistic;
29+
import com.arpnetworking.metrics.mad.model.statistics.StatisticFactory;
2530
import com.arpnetworking.steno.LogValueMapFactory;
2631
import com.arpnetworking.steno.Logger;
2732
import com.arpnetworking.steno.LoggerFactory;
28-
import com.arpnetworking.tsdcore.model.AggregatedData;
2933
import com.arpnetworking.tsdcore.model.CalculatedValue;
3034
import com.arpnetworking.tsdcore.model.Key;
3135
import com.arpnetworking.tsdcore.model.PeriodicData;
3236
import com.arpnetworking.tsdcore.sinks.Sink;
33-
import com.arpnetworking.tsdcore.statistics.Accumulator;
34-
import com.arpnetworking.tsdcore.statistics.Calculator;
35-
import com.arpnetworking.tsdcore.statistics.Statistic;
36-
import com.arpnetworking.tsdcore.statistics.StatisticFactory;
3737
import com.google.common.cache.LoadingCache;
3838
import com.google.common.collect.ImmutableMultimap;
3939
import com.google.common.collect.ImmutableSet;

src/main/java/com/arpnetworking/metrics/mad/configuration/PipelineConfiguration.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import com.arpnetworking.logback.annotations.Loggable;
2121
import com.arpnetworking.metrics.common.kafka.ConsumerDeserializer;
2222
import com.arpnetworking.metrics.common.sources.Source;
23+
import com.arpnetworking.metrics.mad.model.statistics.Statistic;
24+
import com.arpnetworking.metrics.mad.model.statistics.StatisticDeserializer;
25+
import com.arpnetworking.metrics.mad.model.statistics.StatisticFactory;
2326
import com.arpnetworking.tsdcore.sinks.Sink;
24-
import com.arpnetworking.tsdcore.statistics.Statistic;
25-
import com.arpnetworking.tsdcore.statistics.StatisticDeserializer;
26-
import com.arpnetworking.tsdcore.statistics.StatisticFactory;
2727
import com.fasterxml.jackson.databind.ObjectMapper;
2828
import com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair;
2929
import com.fasterxml.jackson.databind.module.SimpleModule;

src/main/java/com/arpnetworking/tsdcore/model/AggregatedData.java renamed to src/main/java/com/arpnetworking/metrics/mad/model/AggregatedData.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,23 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.arpnetworking.tsdcore.model;
16+
package com.arpnetworking.metrics.mad.model;
1717

1818
import com.arpnetworking.commons.builder.ThreadLocalBuilder;
1919
import com.arpnetworking.logback.annotations.LogValue;
20-
import com.arpnetworking.metrics.mad.model.Quantity;
20+
import com.arpnetworking.metrics.mad.model.statistics.Statistic;
2121
import com.arpnetworking.steno.LogValueMapFactory;
22-
import com.arpnetworking.tsdcore.statistics.Statistic;
2322
import com.google.common.base.Objects;
2423
import net.sf.oval.constraint.NotNull;
2524

2625
import java.io.Serializable;
2726

2827
/**
29-
* Serves as a data class for storing data for aggregated values after
30-
* computation.
28+
* Representation of aggregated data; also known as a statistic. However, not
29+
* to be confused with the identity of a statistic
30+
* ({@link com.arpnetworking.metrics.mad.model.statistics.Statistic}). This
31+
* class represents output from aggregation, but also input to aggregation
32+
* when clients have performed pre-aggregation.
3133
*
3234
* @author Brandon Arp (brandon dot arp at inscopemetrics dot io)
3335
* @author Ville Koskela (ville dot koskela at inscopemetrics dot io)

src/main/java/com/arpnetworking/metrics/mad/model/DefaultMetric.java

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
* A variable and data to describe the input to a statistic calculator.
3030
*
3131
* @author Brandon Arp (brandon dot arp at inscopemetrics dot io)
32+
* @author Ville Koskela (ville dot koskela at inscopemetrics dot io)
3233
*/
3334
public final class DefaultMetric implements Metric {
3435

@@ -42,6 +43,11 @@ public List<Quantity> getValues() {
4243
return _values;
4344
}
4445

46+
@Override
47+
public List<AggregatedData> getStatistics() {
48+
return _statistics;
49+
}
50+
4551
@Override
4652
public boolean equals(final Object other) {
4753
if (this == other) {
@@ -54,20 +60,22 @@ public boolean equals(final Object other) {
5460

5561
final Metric otherMetric = (Metric) other;
5662
return Objects.equal(getType(), otherMetric.getType())
57-
&& Objects.equal(getValues(), otherMetric.getValues());
63+
&& Objects.equal(getValues(), otherMetric.getValues())
64+
&& Objects.equal(getStatistics(), otherMetric.getStatistics());
5865
}
5966

6067
@Override
6168
public int hashCode() {
62-
return Objects.hashCode(getType(), getValues());
69+
return Objects.hashCode(getType(), getValues(), getStatistics());
6370
}
6471

6572
@Override
6673
public String toString() {
6774
return MoreObjects.toStringHelper(this)
6875
.add("id", Integer.toHexString(System.identityHashCode(this)))
69-
.add("UnitType", _type)
76+
.add("Type", _type)
7077
.add("Values", _values)
78+
.add("Statistics", _statistics)
7179
.toString();
7280
}
7381

@@ -86,19 +94,22 @@ public Object toLogValue() {
8694
return LogValueMapFactory.builder(this)
8795
.put("type", _type)
8896
.put("valueSize", _values.size())
97+
.put("statisticsSize", _statistics.size())
8998
.build();
9099
}
91100

92101
private DefaultMetric(final Builder builder) {
93102
_type = builder._type;
94103
_values = builder._values;
104+
_statistics = builder._statistics;
95105
}
96106

97107
private final MetricType _type;
98108
private final ImmutableList<Quantity> _values;
109+
private final ImmutableList<AggregatedData> _statistics;
99110

100111
/**
101-
* Implementation of builder pattern for <code>DefaultMetric</code>.
112+
* Implementation of builder pattern for {@link DefaultMetric}.
102113
*
103114
* @author Ville Koskela (ville dot koskela at inscopemetrics dot io)
104115
*/
@@ -112,10 +123,21 @@ public Builder() {
112123
}
113124

114125
/**
115-
* The values <code>List</code>. Cannot be null.
126+
* The statistics {@code List}. Cannot be null.
127+
*
128+
* @param value The values {@code List}.
129+
* @return This instance of {@link Builder}.
130+
*/
131+
public Builder setStatistics(final ImmutableList<AggregatedData> value) {
132+
_statistics = value;
133+
return this;
134+
}
135+
136+
/**
137+
* The values {@code List}. Cannot be null.
116138
*
117-
* @param value The values <code>List</code>.
118-
* @return This instance of <code>Builder</code>.
139+
* @param value The values {@code List}.
140+
* @return This instance of {@link Builder}.
119141
*/
120142
public Builder setValues(final ImmutableList<Quantity> value) {
121143
_values = value;
@@ -126,7 +148,7 @@ public Builder setValues(final ImmutableList<Quantity> value) {
126148
* The metric type. Cannot be null.
127149
*
128150
* @param value The metric type.
129-
* @return This instance of <code>Builder</code>.
151+
* @return This instance of {@link Builder}.
130152
*/
131153
public Builder setType(final MetricType value) {
132154
_type = value;
@@ -140,7 +162,9 @@ protected void reset() {
140162
}
141163

142164
@NotNull
143-
private ImmutableList<Quantity> _values;
165+
private ImmutableList<AggregatedData> _statistics = ImmutableList.of();
166+
@NotNull
167+
private ImmutableList<Quantity> _values = ImmutableList.of();
144168
@NotNull
145169
private MetricType _type;
146170
}

src/main/java/com/arpnetworking/metrics/mad/model/Metric.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import java.util.List;
1919

2020
/**
21-
* Interface for a type of collected data .
21+
* Interface for a type of collected data.
2222
*
2323
* @author Brandon Arp (brandon dot arp at inscopemetrics dot io)
2424
*/
@@ -32,9 +32,16 @@ public interface Metric {
3232
MetricType getType();
3333

3434
/**
35-
* Accessor for the collected data.
35+
* Accessor for the collected sample data.
3636
*
37-
* @return The collected data.
37+
* @return The collected sample data.
3838
*/
3939
List<Quantity> getValues();
40+
41+
/**
42+
* Accessor for the collected statistical data.
43+
*
44+
* @return The collected statistical data.
45+
*/
46+
List<AggregatedData> getStatistics();
4047
}

src/main/java/com/arpnetworking/tsdcore/statistics/Accumulator.java renamed to src/main/java/com/arpnetworking/metrics/mad/model/statistics/Accumulator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.arpnetworking.tsdcore.statistics;
16+
package com.arpnetworking.metrics.mad.model.statistics;
1717

1818
import com.arpnetworking.metrics.mad.model.Quantity;
1919
import com.arpnetworking.tsdcore.model.CalculatedValue;

src/main/java/com/arpnetworking/tsdcore/statistics/BaseCalculator.java renamed to src/main/java/com/arpnetworking/metrics/mad/model/statistics/BaseCalculator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.arpnetworking.tsdcore.statistics;
16+
package com.arpnetworking.metrics.mad.model.statistics;
1717

1818
/**
1919
* A calculator base class.

src/main/java/com/arpnetworking/tsdcore/statistics/BaseStatistic.java renamed to src/main/java/com/arpnetworking/metrics/mad/model/statistics/BaseStatistic.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package com.arpnetworking.tsdcore.statistics;
16+
package com.arpnetworking.metrics.mad.model.statistics;
1717

1818
import com.arpnetworking.metrics.mad.model.Unit;
1919
import com.google.common.base.MoreObjects;

0 commit comments

Comments
 (0)